iOS開発クラッシュメモ
Xcode4.5にアップデートして開発しようとしたら、
'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'
というエラーが出始めて困りました。
いろいろ検索して調べたところ、英文ページに解決策がありました。
【手順】
- 各xibファイルを開く
- 「Interface Builder Document」タブを開く
- 「Development Target」指定を、対応する最小iOSバージョンに変更する
- 「Use Autolayout」チェックを外す
すると、エラーが出なくなりました。
解決です。
楽しいアプリ制作の会 – 特別編
楽しいアプリ制作の会 LT大会 に行ってきました。
今回は何でもありなテーマで、顔見知りばかり10人ほど。
「ログは何でも知っている?」 by まっちゃだいふく(@ripjyr)
関西セキュリティ勉強会まっちゃ139主催者のまっちゃさん。
楽しく(家庭で)アプリを作る方法 なかじ(@nakaji)
嫁さんと一緒にアプリ作ろうとしたら家庭がこじれた(笑)話。
楽しいfoursquare 大場さん(@tworks)
今回はなんとアプリ開発とは全然関係ない話。
foursquareとはロケーションベースのSNS。場所に対してチェックイン出来る。
ビジネスモデル
アメリカではお店や施設と提携してクーポンをくばってる。
日本だとドミノピザがやってる。
ゲーム性
遊んでると「バッジ」がもらえる。特定のイベントの限定品とかあって楽しめる。
常連になるとメイヤーとなる。メイヤーは取り易く奪われ易いため、縄張り争いが激化する。
フレンド登録などソーシャル性があり、ポイントで争える。
MeCab-Javaバインド ・・・しかし失敗
MeCab-javaバインドをインストール
MeCab-javaバインドのダウンロードページから最新版をダウンロード。
(MeCab本体とバージョンを揃えましょう)
mecab-java-0.98pre3.tar.gzを取得し、/usr/local/srcに配置。
srcディレクトリに移り、解凍。
$ cd /usr/local/src $ tar zxvf mecab-java-0.98pre3.tar.gz
$ cd mecab-java-0.98pre3 $ sudo make
make結果
$ sudo make c++ -O3 -c -fpic MeCab_wrap.cxx `mecab-config --cflags` -I/usr/local/jdk/include -I/usr/local/jdk/include/linux MeCab_wrap.cxx:159:17: error: jni.h: No such file or directory MeCab_wrap.cxx:183: error: variable or field ‘SWIG_JavaThrowException’ declared void MeCab_wrap.cxx:183: error: ‘JNIEnv’ was not declared in this scope MeCab_wrap.cxx:183: error: ‘jenv’ was not declared in this scope MeCab_wrap.cxx:183: error: expected primary-expression before ‘code’ MeCab_wrap.cxx:183: error: expected primary-expression before ‘const’ In file included from /usr/include/c++/4.2.1/stdexcept:43, from MeCab_wrap.cxx:264: /usr/include/c++/4.2.1/exception:40: error: expected declaration before end of line make: *** [all] Error 1
・・・エラーが出ました。
jni.hを見つけさせる
見つかるようにシンボリックリンク作成
$ mkdir /usr/local/jdk $ ln -s /System/Library/Frameworks/JavaVM.framework/Versions/A/Headers /usr/local/jdk/include
makeを再実行
$ cd mecab-java-0.98pre3 $ sudo make c++ -O3 -c -fpic MeCab_wrap.cxx `mecab-config --cflags` -I/usr/local/jdk/include -I/usr/local/jdk/include/linux c++ -shared MeCab_wrap.o -o libMeCab.so `mecab-config --libs` javac org/chasen/mecab/*.java javac test.java test.java:18: ?x??:???̕????́A?G???R?[?f?B???O SJIS ?Ƀ}?b?v?〓??܂???B String str = "太郎??二郎にこ??本を渡した??; ^ test.java:18: ?x??:???̕????́A?G???R?[?f?B???O SJIS ?Ƀ}?b?v?〓??܂???B String str = "太郎??二郎にこ??本を渡した??; ^ test.java:18: ?x??:???̕????́A?G???R?[?f?B???O SJIS ?Ƀ}?b?v?〓??܂???B String str = "太郎??二郎にこ??本を渡した??; ^ test.java:18: ?????񃊃e???????????〓??܂???B String str = "太郎??二郎にこ??本を渡した??; ^ ?G???[ 1 ?? ?x?? 3 ?? make: *** [all] Error 1
・・・jni.hは見つかったようですが、文字化け関連でエラーになりました。
javacコマンドのエンコードを変更
MacOSXでのjavac(とjava)のデフォルトエンコーディングがsjisで、
UTF8のtest.javaをコンパイルしようとして失敗してます。
makefileを編集してjavacをUTF8で実行するように変更
$ sudo vi Makefile
編集内容
JAVAC=javac -J-Dfile.encoding=UTF8
そして再度make実行
$ sudo make c++ -O3 -c -fpic MeCab_wrap.cxx `mecab-config --cflags` -I/usr/local/jdk/include -I/usr/local/jdk/include/linux c++ -shared MeCab_wrap.o -o libMeCab.so `mecab-config --libs` javac -J-Dfile.encoding=UTF8 org/chasen/mecab/*.java javac -J-Dfile.encoding=UTF8 test.java jar cfv MeCab.jar org/chasen/mecab/*.class ?}?j?t?F?X?g???lj?????܂????B org/chasen/mecab/DictionaryInfo.class ??lj????〓??B(?? = 1804) (?o = 828)(54% ???k????܂???) org/chasen/mecab/MeCab.class ??lj????〓??B(?? = 240) (?o = 186)(22% ???k????܂???) org/chasen/mecab/MeCabConstants.class ??lj????〓??B(?? = 952) (?o = 495)(48% ???k????܂???) org/chasen/mecab/MeCabJNI.class ??lj????〓??B(?? = 3865) (?o = 1209)(68% ???k????܂???) org/chasen/mecab/Node.class ??lj????〓??B(?? = 3875) (?o = 1472)(62% ???k????܂???) org/chasen/mecab/Path.class ??lj????〓??B(?? = 1680) (?o = 832)(50% ???k????܂???) org/chasen/mecab/SWIGTYPE_p_p_char.class ??lj????〓??B(?? = 465) (?o = 308)(33% ???k????܂???) org/chasen/mecab/Tagger.class ??lj????〓??B(?? = 4441) (?o = 1600)(63% ???k????܂???) org/chasen/mecab/Token.class ??lj????〓??B(?? = 1326) (?o = 701)(47% ???k????܂???)
jarコマンドの出力が文字化けてますが、とりあえずmakeは成功。
テスト実行
$ java -classpath MeCab.jar:. test -d ../dic Cannot load the example native code. Make sure your LD_LIBRARY_PATH contains '.' java.lang.UnsatisfiedLinkError: no MeCab in java.library.path
・・・失敗。
libMeCab.soライブラリを見つけさせる
MeCabのjniライブラリ「libMeCab.so」が見つからないみたいですね。
MacOSXでは、ライブラリ参照の環境変数が「LD_LIBRARY_PATH」ではなく「DYLD_LIBRARY_PATH」らしい。
とりあえず両方とも設定してみて再実行。
$ export LD_LIBRARY_PATH=. $ export DYLD_LIBRARY_PATH=. $ java -classpath MeCab.jar:. test -d ../dic Cannot load the example native code. Make sure your LD_LIBRARY_PATH contains '.' java.lang.UnsatisfiedLinkError: no MeCab in java.library.path
・・・やはり失敗。
とりあえず今日はここまでで。続きはまた今度。
Mac(Lion)で形態素解析ソフト(MeCab)を試す
javaで動作できる形態素解析ソフトを探してMeCabというソフトを知り、試しにMacで動作させてみました。
インストール先
インストールするMeCab
MeCab本体をインストール
MeCab本体のダウンロードサイトから最新版をダウンロード。
mecab-0.98.tar.gzを取得し、/usr/local/srcに配置。
srcディレクトリ(無ければ作成して)に移り、解凍。
$ cd /usr/local/src $ tar zxvf mecab-0.98.tar.gz
作成された「mecab-0.98」ディレクトリに移動し、configureします。
このとき、prefixでインストール先を、with-charasetでutf8を指定しておきましょう。
$ cd mecab-0.98 $ ./configure --prefix=/usr/local/mecab-0.98 --with-charset=utf8
makeし、インストールします。
$ make $ sudo make install
使い易いように、シンボリックリンク作成
$ sudo ln -s /usr/local/mecab-0.98 /usr/local/mecab
使い易いように、binを環境変数のPATHに入れておきます。
$ vi ~/.bash_profile
PATH=$PATH:/usr/local/mecab/bin/
$ source ~/.bash_profile
MeCab辞書をインストール
MeCab辞書ダウンロードサイトから最新版をダウンロード
mecab-ipadic-2.7.0-20070801.tar.gzを取得し、/usr/local/srcに配置。
srcディレクトリに移り、解凍。
$ cd /usr/local/src $ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
作成された「mecab-ipadic-2.7.0-20070801」ディレクトリに移動し、configureします。
このとき、with-mecab-configでMeCab本体のconfigを、with-charasetでutf8を指定しておきましょう。
$ cd mecab-ipadic-2.7.0-20070801 $ ./configure --with-mecab-config=/usr/local/mecab/bin/mecab-config --with-charset=utf8
makeし、インストールします。
$ make $ sudo make install
MeCabの動作確認
mecabコマンドを実行して、動作確認。
$ mecab mecabをインストールしました。さっそくこの文章を解析してみます。
動作結果
mecab 名詞,一般,*,*,*,*,* を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 さっそく 副詞,助詞類接続,*,*,*,*,さっそく,サッソク,サッソク この 連体詞,*,*,*,*,*,この,コノ,コノ 文章 名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 解析 名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ て 助詞,接続助詞,*,*,*,*,て,テ,テ み 動詞,非自立,*,*,一段,連用形,みる,ミ,ミ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス 。 記号,句点,*,*,*,*,。,。,。 EOS
上手くいきました。
ジオメディアサミット関西ミニ in FOSS4G大阪
ジオメディアサミット関西ミニ in FOSS4G大阪
に、途中から参加してきました。
ジオメディアサミットとは by 関さん/上田さん
ジオメディアサミットとは、位置情報メディア関連者が2008年ごろにスタートした、
業界最大規模のイベント(コミュニティ?)だそうです。
このイベントのおかげで、「ジオメディア」という言葉がメジャーになってきたらしい。
(ちなみに海外だと「ジオウェブ」と呼ばれるそうです。)
大きな特徴はこれだけ。
- オープン
- 中立
- 交流重視
あとは自由!
東京メトロサービス by ヤフー地図アプリ業務の大江さん
地下鉄構内での位置情報サービスを紹介して頂きました。
ただし、まだAndroidのみでの実験中だそうで、地下鉄駅も銀座駅と表参道駅だけだそうです。
地図機能
- 駅構内図が見れる
- トイレ、店舗、改札、エレベータなどの位置確認
位置情報
wifiを利用した現在位置の取得。階層も取得可能らしい。
sinsai.infoの話
東日本大震災の救済/復興支援を行うためのボランティア集団だそうです。
復興支援しながら、未来の大災害のためにノウハウを蓄積していってるそうです。
エンジニア大募集とのこと。
- redminが開発スタイル
- NTTデータのプライベートクラウド
- Yammer
- Google Docs
- トヨタからもらった車
など、様々な企業からの支援とフリーツールを利用しながら活動中だそうです。
世界のジオメディア by 各国の人5人のディスカッションと上田さん
- ユーザー数は、携帯電話からスマホに着々と移行中。普及はかなり進んでいってる。
- ジオメディアを使ったアプリでは、やはり4sqのようなチェックインアプリがうけている。
- 技術とサービスが先行してプライバシー問題など浮上してきているが、行政が追いついてき法整備も進んでおり、近い将来問題ではなくなりそう。
要するに日本の状況と同じみたい。
ジオどす
ジオどすとは、京都一筋のローカルサーチ。
京都の住所は2つある
- 郵便住所
- 通り名 ・・ほぼこちらを使う
にもかかわらず、通り名はなかなか普通のジオコーディングでは対応出来ない
そこで、京都の通り名をローカルサーチ出来るシステムが必要になる。
通り名をシステム化するにはいろいろと問題にぶち当たるらしく、
その問題にいかに対処していくかというのがメインの内容でしたが、
・・・時間切れであまり喋れなかったみたい。残念、もう少し聞きたかった。
geopaparazziの紹介
オープンストリートマップ(OSM) by 清野さん
OSMとは、コミュニティ的に地図を作り利用する、
オープンで自由な地図。
Google Geo Developersで地図の利用制限かかっちゃったので、
今こそOpenStreetMapが光る時!
地域によって地図の充実にかなり差があり、ロンドンはかなり充実している。
地図作りの元となったGPSログもダウンロードして使える
また、APIも用意されている。
地域の知られざる歴史をマップに by 京都Google Technology User Group蔵野さん
GUG 女子ハッカー部による企画。
「奈良における勤王の志士、天誅組の物語」や、
「天誅組が襲撃した五条代官所跡」など、歴史をテーマにして
志士や建物をイラスト化し、物語ルートを作っているそうです。
そんな感じに、GUG女子部は女子達で和気あいあいに活動中。
OSGeo.jp
ジオ関連のコミュニティだそうで、震災対応での活動を発表されていました。
ハイチの話
OSGeoLive DVDの中の
- Ushahidi(震災情報整理サイト)
- SAHANA(復旧支援)
という災害対策システムが有効活用できたそうです。
3.11震災の話
当日、Ushahidiを使おうとツイートしてみたところ、
3/12,Ushahidiのサイトが、sinsai.infoになった。
- クラウドはAmazon EC2を利用してるそうです。
- OSMに、Yahoo bing 衛生 国土地理院などから地図提供された。
- WMS(Web Mapping Service)ウェブ配信プロトコル
- 外国人がボランティアしたくても地図の漢字が分からないため、アルファベット化を進めた
- PostgreSQL/PostGISを利用
FOSS4G
国、民間、大学、ボランティアなど、様々な協力者が現れ、
オープンソースとコミュニティに力を実感
FOSS4Gはこのようなボランティア作業を行う場合の最強ツール
などなど、早すぎてちょっと付いていけない話が多々出ましたが、

FOSS4G HANDBOOK(フォスフォージーハンドブック)
- 作者: OSGeo財団,森亮(OSGeo財団日本代表)
- 出版社/メーカー: 開発社
- 発売日: 2011/06/04
- メディア: 単行本
- 購入: 4人 クリック: 48回
- この商品を含むブログ (5件) を見る
というわけで、さっそく買って勉強することにしました。
MacOSX(Lion)でHadoop環境を試す
内容
ほぼHadoop on MacOSXの内容を参考にさせていただきました。
Hadoopのダウンロードと展開
apache hadoopのダウンロードページから最新バージョンをダウンロード。
私はhadoop-0.20.205.0をダウンロードしました。
hadoop-0.20.205.0.tar.gzを展開
場所は/usr/localに限らずどこでも。
cd /usr/local sudo tar zxvf /path/to/hadoop-0.20.205.0.tar.gz sudo ln -s hadoop-0.20.205.0 hadoop
hadoopユーザー作成
グループID/ユーザーIDを決めます。300番が空いてるかどうか調べます。
sudo dscl . -list /Groups PrimaryGroupID | grep 300 sudo dscl . -list /Users UniqueID | grep 300
300番が空いてなければ、空いてる番号を調べましょう。
sudo dscl . -list /Groups PrimaryGroupID | cut -c 32-38 | sort -rn sudo dscl . -list /Users UniqueID | cut -c 23-28 | sort -rn
hadoopユーザーとグループを作成します。
sudo dscl . -create /Groups/_hadoop PrimaryGroupID 300 sudo dscl . -append /Groups/_hadoop RecordName hadoop
sudo dscl . -create /Users/_hadoop UniqueID 300 sudo dscl . -create /Users/_hadoop RealName "Hadoop Service" sudo dscl . -create /Users/_hadoop PrimaryGroupID 300 sudo dscl . -create /Users/_hadoop NFSHomeDirectory /var/lib/hadoop sudo dscl . -create /Users/_hadoop Password "*" sudo dscl . -create /Users/_hadoop UserShell /bin/bash sudo dscl . -append /Users/_hadoop RecordName hadoop sudo /usr/sbin/createhomedir -b -u hadoop
パスフレーズなし鍵認証の設定を行います。
sudo su - hadoop ssh-keygen cd .ssh cat id_rsa.pub >> authorized_keys
Hadoop設定
/usr/local/hadoop/conf/hadoop-env.sh
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home # export HADOOP_OPTS=-server export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"
※このHADOOP_OPTSを設定することで、"Unable to load realm info from SCDynamicStore"を回避します。
/usr/local/hadoop/conf/core-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/var/lib/hadoop</value> </property> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
/usr/local/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
/usr/local/hadoop/conf/mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
ログディレクトリの作成
sudo mkdir /usr/local/hadoop/logs sudo chown hadoop:hadoop /usr/local/hadoop/logs
namenodeのフォーマット
sudo su - hadoop hadoop namenode -format
Hadoopの起動と終了
リモートログインを有効化
「システム環境設定」から、「共有」の「リモートログイン」を有効にすればsshdが起動します。
疑似分散モードではローカルホストからのアクセスのみなので、ファイアウォールを変更する必要はありません。というか有効にしておきましょう。
また、Hadoopを動作させない時はリモートログインを無効に戻すのを忘れずに。
/usr/local/hadoop/bin/start-all.shで起動します。
sudo su - hadoop start-all.sh
/usr/local/hadoop/bin/start-all.shで終了。
sudo su - hadoop stop-all.sh
第1回Scala勉強会大阪に行ってきました。
前置き
私自身は、以前はjava信者のエンジニアでしたが、
javaの発展が複雑化し過ぎていく傾向があるのにうんざりし、
java信者としては引退していました。
しかしScalaのような柔らかいスクリプトライクな構文なら、
アプリ作成のイマジネーションを損なうことなく、肩の力を抜いて開発できそうにも見えます。
この言語構文での開発スタイルなら、
javaの新技術というよりも、php/ruby/pythonなどのweb系スクリプトに対抗できるのでは?
と期待できそうな気がします。
(実行環境はJavaVMなので、webサーバーでの運用は従来通りだろうけど。。)
というわけで、Scalaについては、構文は面白そうだけど実用性はどうなんだろう?
という疑問を持ちながら行ってきました。
「スカラー入門」セッション
@asan_w エーさん。Cやjava系のオープンソース活動してるそうです。
実際にScalaを利用してプログラムを試してるそうで、
Scalaについての紹介と基本的な構文がメインの発表でした。
プレゼンをアップしてくれてた。
http://www.hcn.zaq.ne.jp/no-ji/memo-scala/ScalaIntroduction.pdf
Scalaのコンパイル
scalac(javacに相当する)でコンパイルすると普通のclassファイルになる
型推論など行うため、javacに比べればコンパイル速度は遅い。
(スクリプト言語のように軽快に開発するにはここが大事なので、質問してみました。)
Scalaの実行
普通のclassファイルなので、JavaVM上で実行される。
Androidのvm(Dalvik)でも動くらしい。
ただしこれによると、http://d.hatena.ne.jp/a-san/20111016
javaコマンドで実行するにはscala-library.jar がclasspathに必要らしい。
(ということは、scalaで作ったclassをjavaで利用するときもこのjarが必要なのかも?)
実行速度はjavaよりわずかに遅い程度なので、他の多くの言語に比べれば大変優秀。
Scalaとjavaとの互換性
javaのclassをそのままimportできるようです。
つまり、現在あふれてる膨大なjavaのライブラリを、scalaでもそのまま利用可能だそうです。
では逆に、scalaのclassをjavaで利用できるのか気になったので調べてみたところ、
ここにまとめてありました。
https://sites.google.com/site/scalajp/home/documentation/faq/java_interoperability
基本的に心配ないみたいですね。
Scalaの開発者(設計者)
スイス ローザンヌ工科大学(EPFL)のマーティン・オーダスキー教授。
JavaのGenerics設計者で、javacコマンドにも携わった方だそうです。
これを聞いて一気にscalacに安心感が持てました。
Scalaの開発環境
- Eclise plug-in
いまいちだったけど最近良くなってきたらしい。
- SBT
scalaのためのシンプルなビルドツール。@kitaro_naokiさんと@yalabさんのセッションでも出てきた。
- Ant
scalacタグで実行定義するだけ。@asan_wさんはこれ。
Scalaの言語構文
これがメインのセッションでした。具体的な文法例では、
- 変数宣言はvarとvalのみ。valは代入できないfinal変数(というか定数)。varは普通の代入可能な変数。
- 文字列は\マークエスケープではなく""でエスケープ。なので改行をそのまま改行で表現できる。
- switchに代わるmatch式がある。break文がなくなりました。
- forやwhileのループをかなり省略して記述できる。2重ループなんかも1行で記述できる。
しかし何故かbreakやcontinueがない。・・・これは欲しいよ。
- throwsを強制しない。
- リストやマップに、コーディングを楽にするメソッドがたくさん追加されてる。
- javaのinterfaceやabstractの代わりにトレイトがある。なんと多重継承できる。
などなど。
「FilterMonadic(フィルターモダリック)ってなんだ」セッション
@uskzさん。
Filter …withFilter
Monadic …monad モナドとは、"圏論"という数学の分野からきている。
そしてプログラムではなく、まさかの数式を使った圏論の話。http://twitpic.com/70ib60
みんなさっぱり分からないまま、会場は笑いの渦につつまれました。
「プログラミングの魔導書」という本を出しているそうです。
「Web Framework Lift」セッション
@mitsuhirow さん
Liftとは、
ScalaによるScalaのためのフレームワーク。
いろんなフレームワークのいいとこ取りを目指してるフレームワーク。
この勉強会に来た人のほとんどが知ってるフレームワークだそうです。
すいませんフレームワークには興味ないのでほとんど聞き流しました。
「Play framework」セッション
@kitaro_naoki
これもRailsみたいなフレームワークだそうで、聞き流しました。
しかしServletを使わずにホットリロードで開発でき、スケールアウトし易い設計だそうで、
少し魅かれる気がしました。
「AndroidをScalaで作る話」ライトニングトーク
@yalab よしだあつし
http://d.hatena.ne.jp/rudeboyjet/
minami.rb Ruby関西所属のフリープログラマー
前日、ScalaでのAndroidアプリ開発を試してみたそうです。
その内容:http://d.hatena.ne.jp/rudeboyjet/20111014
とりあえずはScalaでもAndroidアプリ開発も出来るらしい。
しかし突き詰めるとScalaでは出来ないことも出てくるらしく、
そういうときは問題のクラスをScalaでも利用できるようにjavaでラップクラス作るとかで
回避できるらしい。
これに限らず、
「Scalaで困ったらjavaで書けばいい」と思えば、
割と安心してScalaをお試し利用できそうな気がしました。