Furyu

[フリュー公式] Tech Blog

フリュー株式会社の技術ブログです

2014年09月25日

kunihira

ScalaMatsuriでEnjoy.Scala!の裏側

こんにちは。 Scalaで女性を幸せにするエンジニアの国平です。

前回の記事では、ScalaMatsuriの表側として参加レポートを書きました。

今回の記事では、スタッフやスポンサーとして参加して見えた裏側の話を少ししてみようと思います。

アンカンファレンス

アンカンファレンスは国内ではあまり事例のないイベントですが、今回翻訳チームとしても、登壇者としても活躍されていた横田さんの提案で導入されました。 スタッフ内でもアンカンファレンス経験者がほとんどいなかったため、本当に手探りで準備を進めていきました。 特に、アンカンファレンスは当日の参加者に委ねられる部分が大きいので、何を準備すればいいのかというところから議論を重ねて、事前にリハーサルをしたり、アンカンファレンスの説明文を何度も遂行したりしました。

結果的に、Odersky先生によるCodeClinicやパネルディスカッションなど、その場に集まった方々の発想が相互作用して素晴らしいセッションをつくり上げることが出来ました。

セッションスケジュールを調整している時、「これはすごいことになってきた!」という発言がありました。 この瞬間に私はアンカンファレンスが成功したと感じました。

翻訳チームの貢献

ScalaMatsuriは日本が誇る国際的なScalaカンファレンスで、海外からの招待講演者を始め英語のセッションが多く用意されていました。 とはいえ、そのまま英語オンリーでは、参加者のハードルが高くなってしまいます。 ScalaMatsuriでは、その問題を解消するためにScalaMatsuriスタッフのうち、英語が堪能なメンバーがセッション中同時翻訳で、英語<->日本語で翻訳を行い、IRCに投稿、それを表示するという事を行っていました。

この翻訳作業、複数人のチームワークで行われていたのですが、ScalaMatsuriは朝から夜まで、しかも2日間に渡って続くイベントですので、本当にセッション中ずっと翻訳作業をしてくださっていました。

私自身、カンファレンスのスクール形式で英語を聞き取るのはかなり難しかったので、非常にありがたかったですし、逆に海外から参加して頂いた方に対して、日本のScala界隈の情報を発信出来たのではないかと思います。

スポンサーCM

今回セッション間の休憩中にスポンサー各社のCMを放映しました。 放映させて頂いたフリューのCMがこちらです。

FuRyuScalaMatsuriCM from Kuchitama on Vimeo.

はい、しょぼいですね。 なんせこれ、私が片手間で作ったムービーなので…

ただ、他のスポンサー各社はかなり力を入れられていました。 他のCM動画を公開できなくて残念ですが、日本のScala利用企業のパワフルさが発揮されてるように思いました。 来年は弊社ももっと力をいれたCMを作りたいです

スタッフとして活動してみて

私は、たまたまScalaMatsuriがボランティアスタッフを募集していることを知り、参加することにしました。

関西在住なのでリモートでのミーティング参加でした。 最初は、リモート参加することに不安がありました。 しかし、ミーティング以外でのやりとりの大半はco-meetingを使ってオンライン上で行われていましたし、ミーティング時もco-meetingに発言した内容を適宜拾ってもらえたので、問題なく意見交換をすることが出来ました。

タスクも、リモートでも作業可能な内容のものも多くありました。今回は、アンカンファレンスの説明用のチラシ作成のみ担当しましたが、まだまだリモートでも作業できることはあると思っています。

まとめ

2回にわたって、ScalaMatsuri2014の参加レポートを報告させて頂きました。 ScalaMatsuriというイベントがあったこと、その場の雰囲気、盛り上がりを少しでも知って頂けたら幸いです。 2日目が終わって、撤収作業を進めているときに、すでに「来年」の話題になっていました。 今も、次回に向けて少しずつ準備しています。 もし、Scalaが大好きで日本のScalaコミュニティに貢献したいという方がいらっしゃれば、私と一緒にボランティアに申し込んでイベントを盛り上げましょう。

Let’s Enjoy.Scala !!


2014年09月18日

sakata

既存プロジェクトをJDK8へ移行したら、java.lang.VerifyErrorが出た

Hello World! ソーシャルネットワーク事業部の、jyukutyoこと阪田です。

JDK6で開発し、現在も運用しているプロジェクトをJDK8へ移行させました。最大の理由は6がend of lifeとなっていることです。もちろんエンジニア的には8が使いたくてしょうがないという気持ちもあります。

8のすごさについての説明はすばらしいサイトがたくさんありますので、他へお譲りするとしまして、ここでは僕たちがちょっとハマった、JDK8導入でのTipsをお届けします。

djUnitが…

このプロジェクトでは、ユニットテストにdjUnit(2011年10月からもうバージョンアップはありませんね…)を利用しています。JDKを変えてユニットテストを実行すると、次のようなエラー(テスト失敗ではなく)が発生しました。

java.lang.VerifyError

JDK6で導入されたclassファイルの検証方式変更(JSR-202)がJDK7からは有効となっており、VerifyErrorが発生しました。そのため、このエラーはJDK7でユニットテストを実行したときも発生します。

検索エンジンで調べると「-XX:-UseSplitVerifier」オプションをつけるとよいという情報がたくさん出てきます。このオプションをつけて実行すると、次のようになりました。

表記のとおりです。JDK8ではこのオプションはサポートされていないので、無視されました。当然結果も同じでした。JDK7では動作するようになるのですが…

noverifyオプション!

UseSplitVerifierは「Use the new type checker with StackMapTable attributes」に関するオプションであり、それにマイナスをつける(-UseSplitVerifier)とその機能をオフにします。オフにしたことでJDK7で動作するようになったということは、8でもこのtype checkerをオフにすれば動作しそうです。このチェックというのは、classファイル(バイトコード)の検証です。そこでJVMのオプションを調べると「noverify」がありました。

クラスがバイトコードの検証なしにロードされます。

セキュリティの問題など、さすがにプロダクトコードには使用したくないオプションですが、ユニットテストの実行くらいなら問題ないと考えました。「-noverify」オプションをつけてユニットテストを実行します。

成功しました!

そもそもの原因

djUnitは、モックの実現のためにバイトコードを書き換えています。デフォルトではASMを利用しています。このASMのバージョンが古いと、新しいclassファイルの検証方式に対応しておらず、エラーとなってしまいます。

そのためASMのバージョンを最新にすれば、テストが成功するのでは!と考えて試してみました。しかし、ASMもメジャーバージョンアップしていますので、djUnitの方が対応しておらず、エラーとなりました。

結び

やっぱり新しいJDKは最高です!!みなさんもぜひバージョンアップしましょう!たとえ新しい構文がまだ使いこなせないとしても、JVMを新しくするだけでアプリケーションの実行速度も向上しますから!


2014年09月12日

kasuya

#ScalaMatsuri 参加の所感

粕谷です。

国平がボランティアスタッフとしての視点から参加レポートを投稿していたScalaMatsuri。僕は去年のScala Conference 2013に続いての参加となります。

そこで、去年と比べてScalaコミュニティにどのような変化があったか、と言った視点を交えつつ参加レポートを書きたいと思います。

導入企業の増加

去年のScala Conferenceは、コミュニティのコアなメンバーが集まっていた濃い雰囲気がありましたが、今年はそれに比べて段違いにオープンな雰囲気になっていました。要因としては、参加人数の増加が考えられると思いますが、その中でも「Scalaを実際に導入して活用している企業」が大幅に増えている印象が強いです。

カンファレンス内でも各企業が導入・活用事例を紹介していましたが、それらも単なる活用事例というよりも、実際の運用ノウハウの共有などといった、一歩踏み込んだ内容が多かったです。

Scalaの導入事例で面白かったのは、弊社のようにJavaからの移行、という例はむしろ少なくて、RubyやPHPのような動的言語からの移行事例が多いようです。特にスピード感が求められるWeb開発において、運用中のシステム改修の安定化という観点で、静的言語を用いて改修の影響範囲をコンパイル時に検知したい、というニーズが強まり、その中でScalaが採用候補として選ばれるパターンが多いようです。

このあたりは我々がScalaを用いてソーシャルゲームの開発・運用をする際に重視している観点とも共通しています。特にソーシャルゲーム開発は短い開発期間でコードの広い範囲に手をいれるケースも多く、現状の我々の運用方法を考えると動的言語の採用は少し難しいところです。

求人数の増加

Scala導入企業の増加に伴い、当然の流れとして求人数も増加しています。各社ともスポンサーLTでは積極的に採用情報をお話されていました。中には人事部の人と一緒に参加された企業もありました。

ちなみにScalaMatsuri参加企業は東京を拠点とするところが多かったですが、弊社は京都にてScalaを用いた開発を行っておりますので、関西でScala導入企業を探しておられるエンジニアの皆さんはお気軽にご相談ください。弊社のキャリア採用ページはこちらになります。

アンカンファレンスでDDDを学ぶ

弊社では現在、始業前の30分間を利用して、週2日DDD本の読書会を開催しています。
2日目のアンカンファレンスではかとうじゅんいちさんがDDDのセッションを立ちあげられたので、そこに参加してきました。

ScalaとDDDは非常に相性が良い、というのはかとうさん以前からのお考えで、そういった事もあってScalaMatsuriにおけるDDDセッションは盛況でした。
我々も、素人の集まりの読書会ではなかなか議論をしていても明確な答えにたどり着けないものもあったりしますので、有識者と直接対話する機会を得たことは大きかったです。普段の読書会で頻繁に議論になる問題について、直接質問して知見をいただく事ができました。

Scalaという言語の裾野が拡がっている

今年のScalaMatsuriに参加して思ったことは、Scalaという言語が結構な勢いで裾野を拡げているな、ということです。
もちろん、まだ「メジャー言語」と呼ばれるほどの位置づけではありませんが、前述した動的言語からの移行事例などを聴いていると、今後もさらなる普及の可能性があるように感じます。

まだまだフロンティアな世界でもあるScalaの世界。我々と一緒に開拓していきませんか?


2014年09月11日

kunihira

ScalaMatsuriでEnjoy.Scala!の表側

国平です。 前回の記事からご無沙汰しております。

社内でEMLauncherの運用も安定したので、続きの記事を書こうかと思っていたのですが、ちょっと連載ストップしてScalaについての記事を連投します。

(連載ってまだ1回しか書いてないですね…)

というのも、先日、東京は渋谷マークシティにあるサイバーエージェントさまのオフィスにて、JapanScalaAssociation主催のScalaMatsuri2014が開催されました。 日本最大のScalaイベントということもあり、去年のScalaConferenceに続いて今年もフリューはGoldスポンサーとしてご協力しました。

さらに、会社のスポンサーとは別に、私個人はScalaMatsuriスタッフとしても参加しました。

そんなわけで、ScalaMatsuriの表も裏も見えてしまいましたので、ご報告したいと思います。

表編

今回はScalaMatsuri表側のお話です。

Day1 カンファレンス

ScalaMatsuri1日目は、一般的なスクール形式での発表が組まれました。 座長の水島さんのオープニングセッションに始まり、Scalaそのものを開発され、Scalaスケーラブルプログラミング(通称コップ本)を執筆されたOdersky先生の発表がありました。

ScalaMatsuriのセッションの様子はドワンゴさまのご協力により、ニコニコ生放送で公開されていますので、ご興味のある方はそちらをご覧ください。

あと、ひょっとしたらフリューから参加した別のメンバーがこのブログに記事を書いてくれるかもしれません|д゚)チラッ

懇親会

1日目の最後は懇親会で締めくくられました。 懇親会は、フリューでも行ったビアバッシュ形式でした。 この懇親会のオープニングでサプライズが! なんとScalaMatsuri2014前日はOdersky先生のお誕生日でした! ということで、バースデーケーキのプレゼント!!

この後、Odersky先生に「私はScalaで日本の女性を幸せにしてます。」とご挨拶しました。 さらに、図々しくスタッフ法被にサインまでいただいて、さらにさらに一緒に写真を撮ってもらいました。

Odersky先生と

というわけで、

フリューはOdersky先生公認のScalaで日本の女性を幸せにする企業です!

あと、懇親会中にスポンサーLTと公募LTが行われました。 スポンサーLTには弊社の日本の女性を幸せにする女性エンジニアの辻が自身のScalaの習得体験談を発表。 さらに、公募LTでも弊社粕谷がLTを行いました。

ScalaMatsuri2014_tsuji_y ScalaMatsuri2014_daiksy

Day2 アンカンファレンス

ScalaMatsuri2014の2日目はアンカンファレンスを実施しました。 アンカンファレンスとは、カンファレンスに否定の接頭辞がついている事からわかるように、1日目のようなスクール形式の発表が続くカンファレンスではなく、主催者が場と設備を用意して、参加者が自分たちで作り上げるイベントです。 まだまだ日本では普及していないスタイルですが、NE Scala など海外のイベントではいくつも実施例があります。

アンカンファレンスの詳しい説明は是非SalaMatsuri公式ページのアンカンファレンスを参照してください。 この形式は日本ではまだまだ取り組みが少ないため、この公式ページの記載についても、スタッフで意見を出し合って、かなりブラッシュアップを重ねました。

Scalaエンジニアを増やすために

このセッション、私が提案し、座談会のファシリテータをつとめました。 このテーマを挙げた目的としては、フリューでは定期的にScalaで開発された乙女ゲームをリリースしていますが、事業の成長にあわせて、組織もスケールする必要が出てきました。 組織をスケールさせるために、どうすればScalaエンジニアを集める事ができるのか。他の方々はどういった取り組みを行っているのか。と言う点を、この場に集まった方々とディスカッションして深めたいという思いがありました。

最初にLTを少しはさんで、その後は座談会に進み、飛び込みでScalaMatsuri2014スタッフの @tototoshiさんにLTをしていただききました。

(私のLT資料をこのブログで公開しようかと思ったのですが、突貫で作ってクオリティが低いことと、あくまで座談会の導入として利用したという事から、ここでの公開は控えます)

ScalaMatsuri2014_kuchitama

この座談会を通して、Scalaエンジニアを増やすためには、Scalaの導入事例を発信したり、情報をまとめたりといった、地道な草の根活動を続けて行くのが大事なんじゃないかという方向性が見えてきました。 セッション中、「5年前からScalaに注目しているが、昔とは比べ物にならないほどユーザが拡大しているし、今も増えている」との意見があり、今後のScalaの拡大に期待が持てました。 実際ScalaMatsuriも去年のScalaConferenceよりも動員人数が増加しており、この勢いは続きそうです。 フリューもイベントスポンサーだけでなく、このブログなどで情報を発信して、Scalaコミュニティに貢献して行きたいと考えています。

まとめ

今回の記事では、私が見たScalaMatsuri2014の表についていくつかトピックをご報告しました。

Odersky先生を始め、世界トップクラスのScalaエンジニアが集まり、日本のScalaコミュニティは既に国際的なレベルまで成長していることがよくわかるイベントでした。

そして、Scalaが今後まだまだ成長する言語であることが様々な面から確信できるイベントでもありました。 Scalaエンジニアに取ってこれだけ価値のあるイベントはなかなかないので、次回開催の折にはぜひご参加いただきたいと、自信をもってオススメします。

フリューも、Odersky先生公認の日本の女性を幸せにするScala企業となったので、今後もScalaで頑張って行きたいと思います。


2014年09月5日

いしはら

Chromeで文字が消える現象に遭遇したとき

こんにちは いしはらです

ある日、いつも通り仕事を開始しようとChromeを起動したところ
なんと!黒の文字がまったく表示されない現象に遭遇しました

このとおりサイボウズにログインすらできない状態に…。
SS

検索してもなかなか解決方法が出てこず
一度アンインストールしてもPCを再起動しても直らず!
このままでは仕事が出来ない…
困り果てた結果、Chromeに問題を報告。
わりと早くに回避策が返答が来ました。

下記の方法で解決できますので、遭遇されたかたは参考にしてください。

  1. Chromeを立ち上げる。
  2. アドレスバーにchrome://flags#disable-direct-writeを入力する。
  3. [DirectWrite を無効にする]という項目の[有効にする]をクリックする。
    ([有効にする]をクリックすると DirectWrite が無効になります。DirectWriteが無効になると背景が白になりますのでご確認ください。)
  4. 画面下の [今すぐ再起動] を選択する。 文字が正しく表示される。
  5. 文字が正しく表示される。