torutkのブログ

ソフトウェア・エンジニアのブログ

#LLoT に参加して

ちょっと時間が経ってしまいましたが、先日8月27日(土)は日本UNIXユーザー会主催のLLoT – Lightweight Language of Thingsに参加してきました。

これは、毎年夏に開催されているLightwight Programming Language(軽量プログラミング言語)のイベントですが、ことしはなぜかJavaについて話をできないかと声をかけていただき、Language UpdateセッションでJavaのUpdateについて9分間話をしました。
http://www.slideshare.net/torutk/llot2016-java-update

なぜJavaなのかなと思ったのもつかの間、次のセッションは「キーボード」がテーマで、なんと東プレとPFUの人が招かれ、キーボードの作りについてなどを語るセッションでした。いや、静電容量スイッチの動画解説まであるセッションで、もう、楽しい内容でした。また、キーボードユーザーとしてブログ漢(オトコ)のコンピュータ道MySQLで著名な奥野 幹也さんが登場してエルゴノミックス最大限のキーボードErgoDoxを紹介していました。次の奥野さんのブログの内容ですね。
漢(オトコ)のコンピュータ道: キーボードを新しくした話(ErgoDox)

キーボードは、自宅ではHHK Professional、会社ではRealForceを使っているので、なんともぴったりな内容でした。

お昼は、Language UpdateセッションでPHPを話された@hnwさんと近所をさまよいタイ料理ランチを食べました。

午後は、Dynamic Typing再考です。動的型付けって何だろう?(コンパイルしない言語?)程度の無知さで話を聞きました。
型付けを静的に検査せず動的にするものだそうです*1

まつもとゆきひろさんによるRubyの話では、DRYとダックタイピングがポリシーで、別に静的がきらいなのではなく、Rubyのポリシーから逸脱しないことに重きをおいている、ということがありました。とはいいつつ「型がなくてもプログラムは動く、動いているのに型を書くのはDRYに反する。プログラマの皆さんバグなんて書かないですよね」とユーモア交じりで添えていたのが印象的(あー、この雰囲気がRubyなのかな、と)。

静的型付けは、変数に代入できるのはノミナルタイプ(初耳でしたが、サブタイプを指すようです)のみ、ダックタイピングに反する、という話を聞き、やっとRubyのダックタイピングの意図が少しわかった気がしました。あるメソッド(メッセージ)に反応できるオブジェクトであれば、型に縛られずに扱えるのがいいのですね。

将来的なRubyでは、型を書くことはしないけど(言語ポリシーに反するため)、コードが正しいかを実行時情報などを集めて推論するコンパイラ(言語チェッカー?)が入るようにならないかという話がありました。

Kotlin、Swiftのセッションは、どちらもなじみがあまりなく、また疲労(寝不足)もたたってあまり話を聞くことができませんでした。(睡魔ですいません)

Kotlinは、Null安全をうたって、nullの代入を許す変数は型名に?を接尾辞として付けて宣言するというのが印象的でした。

Swiftは、GCがないというのを知って(リファレンスカウントはあるそうです)衝撃でした。REPL環境がすごいです。こちらもnull代入可能性がある変数へのメソッド呼び出しに際して変数名に?を接尾辞として付けて扱うそうです。
Xcodeのバージョンが上がると再コンパイルが必要とか、ときどき(稀に)コンパイラがセグって落ちるとか、まだ不安定要素があるそうです。

*1:あやしい理解