第2回Scalaハンズオン勉強会2014-06-21
Posted on 2014-06-24 by yamauchi芸者東京エンターテインメント主催の Scala ハンズオン勉強会を 2014-06-21(土) に実施しました。
この記事では課題の内容と開発の問題点を紹介します。
登録者は15名で、そのうち13名に参加していただきました。
ちなみに勉強会の前に Scala を使ったことがある参加者は3名でした。
勉強会の課題
今回で2回目となる勉強会は「Android で動く三目並べゲーム(○×ゲーム)を Scala で実装する」という内容です。
課題の内容とソースコードを公開していますので、勉強会に参加できなかった方もぜひ手元で試してみてください。
https://github.com/algas/scala-android-tictactoe
あらかじめ用意されたひな形ではある程度(○か×をタップしたマスに描画する所)まで三目並べが作ってあり、それを修正してゲームとして完成させます。
参加者のほとんどは、基本課題3つのうちの1つ以上が実装できました。
およそ1時間以内に開発環境の構築を終えることができ、残りの3時間で課題を実装していました。
参加者のうち3名は基本課題が完了するところまで実装できたので、課題の難易度としては適切だったと思います。
課題の問題点
課題をやってもらっている中で発生した問題のほとんどは開発環境の構築時に起こりました。 主に発生した問題をまとめます。
Perm Gen エラー
sbt 実行時に Perm Gen のエラーが発生する。
前回の勉強会の時にも発生した問題なので、ドキュメントに書いておくべきだった。
http://scalajp.github.io/sbt-getting-started-guide-ja/setup/
上記のドキュメントどおりに設定するか、または SBT_OPTS に同様のオプションを書くことで解決できる。
非 ASCII ディレクトリ
Windows 8 で開発環境を構築した方がハマっていた問題で、ディレクトリ名が日本語になっていると jar を検索できないらしい。Windows 8 のログインユーザ作成時に outlook アカウント連携を実施すると、親切にもユーザ名を取得してホームディレクトリに名前を勝手につけてくれるらしい。
一部のライブラリが非 ASCII ディレクトリを正常に読めない。ディレクトリ名を付け直すことで対応した。
Android エミュレータが認識されない
sbt devices コマンドが Android エミュレータを捕捉してくれないことがある。
多くの場合は Android エミュレータを起動後に実行しないから補足されなかったというものだが、それ以外の理由のこともあった。
Android SDK Manager と AVD Manager を複数の方法でインストールした場合に競合しているように見えたが、その場では解決には至らなかった。
解決できなかった方には実機を貸し出して対応した。
実機の場合には API バージョンを合わせるのと、実機を開発機として認識させる設定が必要になる。
環境変数
JAVA_HOME, ANDROID_HOME, PATH を適切に設定する必要がある。
Java 8 非対応
Java 7 を使うことで問題を回避した。 Java 8 に対応してないライブラリがあるようだ。未調査。
その他
git を使ったことがないとか、ターミナルでカレントディレクトリが分からないとか、vim の終了ができないとか。 もっとがんばろう。
課題の解答例
参加者の1人、南山まさかず氏から送られてきた課題の実装例です。
https://github.com/minamiyama1994/scala-android-tictactoe/commit/1183837332b73240910649ec40930d5f24ed46d8
講師側で用意した課題の実装例です。
https://github.com/algas/scala-android-tictactoe/commit/25a24e4d62364bf2793621b9f5572567447d48f4
まとめ
- ScalaでAndroid開発
できると思います。 - Scala女子が増えてる
女性2名が参加してくれました。 - Scalaは怖くない 無茶をしなければ噛み付かれません。
第3回Scalaハンズオン勉強会も近々実施したいと考えています。 今回参加できなかった方はぜひご参加ください。