iOS開発クラッシュメモ

Xcode4.5にアップデートして開発しようとしたら、

'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'

というエラーが出始めて困りました。

いろいろ検索して調べたところ、英文ページに解決策がありました。

【手順】

  1. 各xibファイルを開く
  2. 「Interface Builder Document」タブを開く
  3. 「Development Target」指定を、対応する最小iOSバージョンに変更する
  4. 「Use Autolayout」チェックを外す

すると、エラーが出なくなりました。
解決です。

楽しいアプリ制作の会 – 特別編

楽しいアプリ制作の会 LT大会 に行ってきました。
今回は何でもありなテーマで、顔見知りばかり10人ほど。

「ログは何でも知っている?」 by まっちゃだいふく(@ripjyr)

関西セキュリティ勉強会まっちゃ139主催者のまっちゃさん。

今回の内容は、
wireshark(tshark)、bz、base64を使って・・・(省略)


Enjoy Adobe Labs by 蜜葉(@mitasuba_tan)

Adobe Labs で開発が進んでるツールの紹介

Adobe Roma

印刷物やWebサイト、プレゼンテーションまで様々なコンテンツを作成できるオールインワンツール
無償で使える

Adobe Edge

HTML5対応のインタラクティブコンテンツ作成ツール。
従来のFlash Professionalで制作されるようなアニメーションまで作れるらしい。
無償で使える

Adobe Muse

コード不要でHTML5のWebサイトを制作するツール
サイトマップなどビジュアルに構築出来る
無償で使える
  

楽しく(家庭で)アプリを作る方法 なかじ(@nakaji)

嫁さんと一緒にアプリ作ろうとしたら家庭がこじれた(笑)話。

楽しいfoursquare 大場さん(@tworks)

今回はなんとアプリ開発とは全然関係ない話。
foursquareとはロケーションベースのSNS。場所に対してチェックイン出来る。

ビジネスモデル

アメリカではお店や施設と提携してクーポンをくばってる。
日本だとドミノピザがやってる。

ゲーム性

遊んでると「バッジ」がもらえる。特定のイベントの限定品とかあって楽しめる。
常連になるとメイヤーとなる。メイヤーは取り易く奪われ易いため、縄張り争いが激化する。
フレンド登録などソーシャル性があり、ポイントで争える。

たのしいAndroidデベロッパー by fffkoji(@fukuch)

個人でカレンダーアプリを作った体験談。

Androidマーケット申請すると、25ドル払えと言われる。
払うとマーケットに登録出来る。

すると、様々な国からコメントがくる。
メアドも公開されるので、メールで直接文句も言われる。

例:I don't like military format
(yyyy/mm/ddは、海外では軍隊がよく使うそうだ)

逆に、Youtubeで使い方を公開してくれる親切な人まで出てくる。

今ココなう!を楽しく by 世界のつもりん (@tmyt)

今ココなうとは
位置情報をリアルタイムで更新し、位置情報をwebで共有するシステム。
webブラウザでその人の場所を確認出来る。

これの専用ハードウェアを作ってみたそうだ。

部品

まとめ
Netduinoでマイコン楽しい。

MeCab-Javaバインド ・・・しかし失敗

前回に続いて、MeCabjavaで動作させてみます。

バージョン

  • MeCab-Javaバインド:0.98pre3(このバージョンはMeCab本体と合わせる必要があります)

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

mecab-java-0.98pre3に移り、make実行

$ 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を利用した現在位置の取得。階層も取得可能らしい。

ルート検索
  • かなり細かく検索条件ができる。
  • バリアフリー設定すれば、エレベータなど車いす移動のルートができる
  • シャッターなどの時間制限のある場所も考慮してルート作成できる

メトロコラボアプリは機能拡張版だそうですが、まだ公開日未定らしい。

iOS版アプリの公開検討中、他の地下鉄駅にも対応していく予定。

Android版Y!ロコ地図

sinsai.infoの話

東日本大震災の救済/復興支援を行うためのボランティア集団だそうです。
復興支援しながら、未来の大災害のためにノウハウを蓄積していってるそうです。

エンジニア大募集とのこと。

など、様々な企業からの支援とフリーツールを利用しながら活動中だそうです。

世界のジオメディア by 各国の人5人のディスカッションと上田さん

  • ユーザー数は、携帯電話からスマホに着々と移行中。普及はかなり進んでいってる。
  • ジオメディアを使ったアプリでは、やはり4sqのようなチェックインアプリがうけている。
  • 技術とサービスが先行してプライバシー問題など浮上してきているが、行政が追いついてき法整備も進んでおり、近い将来問題ではなくなりそう。

要するに日本の状況と同じみたい。

ジオどす

ジオどすとは、京都一筋のローカルサーチ。
京都の住所は2つある

  • 郵便住所
  • 通り名 ・・ほぼこちらを使う

にもかかわらず、通り名はなかなか普通のジオコーディングでは対応出来ない
そこで、京都の通り名をローカルサーチ出来るシステムが必要になる。

通り名をシステム化するにはいろいろと問題にぶち当たるらしく、
その問題にいかに対処していくかというのがメインの内容でしたが、
・・・時間切れであまり喋れなかったみたい。残念、もう少し聞きたかった。

geopaparazziの紹介

特徴
  • イタリア生まれのツール
  • 野外調査ツール
  • フィールドノート作成に特化
  • ノート様式のカスタマイズ
  • 写真、音声、GPSログの記録
  • GPXデータの取り込み
  • KMLファイルの出力
  • SMSによるP2P応答
  • 「パパラッチ」というのは負のイメージがあるのに、あえてそこに挑戦したネーミング。

オープンストリートマップ(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になった。

QGIS(感覚GIS)ジオリファレンンサプラグインで幾何補正。
  • WEB地図による斜め写真撮影
  • 調査写真をGPS位置付きで整理
  • 電子コンパスを利用し、どの方向に撮ったかも分かる
FOSS4G

国、民間、大学、ボランティアなど、様々な協力者が現れ、
オープンソースとコミュニティに力を実感

FOSS4Gはこのようなボランティア作業を行う場合の最強ツール

などなど、早すぎてちょっと付いていけない話が多々出ましたが、

FOSS4G HANDBOOK(フォスフォージーハンドブック)

FOSS4G HANDBOOK(フォスフォージーハンドブック)

という本を出版してて、ここにジオ関連技術を詰め込んだそうです。

というわけで、さっそく買って勉強することにしました。

MacOSX(Lion)でHadoop環境を試す

内容

ほぼHadoop on MacOSXの内容を参考にさせていただきました。

  • 動作モード:擬似分散モード
  • HADOOP_HOME:/usr/local/hadoop
  • アプリケーションアカウント:hadoop (RecordName:_hadoop)

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

ログインし、.bash_profileを作成し、環境変数を設定しておきます。

/var/lib/hadoop/.bash_profile
HADOOP_HOME=/usr/local/hadoop
export HADOOP_HOME

PATH=/usr/local/hadoop/bin:$PATH
export PATH

Hadoop設定

/usr/local/hadoop/conf/hadoop-env.sh

JAVA_HOMEとHADOOP_OPTSを設定します。

# 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の新技術というよりも、phprubypythonなどのweb系スクリプトに対抗できるのでは?
と期待できそうな気がします。
(実行環境はJavaVMなので、webサーバーでの運用は従来通りだろうけど。。)

というわけで、Scalaについては、構文は面白そうだけど実用性はどうなんだろう?
という疑問を持ちながら行ってきました。

スカラー入門」セッション

@asan_w エーさん。Cやjava系のオープンソース活動してるそうです。

実際にScalaを利用してプログラムを試してるそうで、
Scalaについての紹介と基本的な構文がメインの発表でした。

プレゼンをアップしてくれてた。
http://www.hcn.zaq.ne.jp/no-ji/memo-scala/ScalaIntroduction.pdf

Scalaの思想

小さなスクリプトから大規模システムまで、スケーラブルな言語

Scalaコンパイル

scalac(javacに相当する)でコンパイルすると普通のclassファイルになる
型推論など行うため、javacに比べればコンパイル速度は遅い。
スクリプト言語のように軽快に開発するにはここが大事なので、質問してみました。)

Scalaの実行

普通のclassファイルなので、JavaVM上で実行される。
Androidvm(Dalvik)でも動くらしい。
ただしこれによると、http://d.hatena.ne.jp/a-san/20111016
javaコマンドで実行するにはscala-library.jar がclasspathに必要らしい。
(ということは、scalaで作ったclassをjavaで利用するときもこのjarが必要なのかも?)
実行速度はjavaよりわずかに遅い程度なので、他の多くの言語に比べれば大変優秀。

Scalajavaとの互換性

javaのclassをそのままimportできるようです。
つまり、現在あふれてる膨大なjavaのライブラリを、scalaでもそのまま利用可能だそうです。
では逆に、scalaのclassをjavaで利用できるのか気になったので調べてみたところ、
ここにまとめてありました。
https://sites.google.com/site/scalajp/home/documentation/faq/java_interoperability
基本的に心配ないみたいですね。

Scalaの開発者(設計者)

スイス ローザンヌ工科大学(EPFL)のマーティン・オーダスキー教授。
JavaGenerics設計者で、javacコマンドにも携わった方だそうです。
これを聞いて一気にscalacに安心感が持てました。

Scalaのライセンス

Scala LicenseというBSDライクなもの

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を使わずにホットリロードで開発でき、スケールアウトし易い設計だそうで、
少し魅かれる気がしました。

AndroidScalaで作る話」ライトニングトーク

@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をお試し利用できそうな気がしました。


感想

やっぱjavaなだけにフレームワークの話が多かったですが、
javaはWebだけでなく、Androidやその他組み込みやHadoopでも使われる言語なので、
そういった方面での活躍も期待しながら、もう少し眺めてみたい。