余白

https://blog.lacolaco.net/ に移転しました

Dart Meetup Tokyoを開催しました!

f:id:laco0416:20150606202851p:plain

Dartのミートアップを主催してきました!

http://dartisans-jp.connpass.com/event/15246/

趣旨

4月末にGoogle本社で開催されたDart Developers Summitを受けて、モチベーションがグッと上がったので勢いで提案して勢いで主催しました。

そもそも日本どころか世界的にDartユーザーは少なく、不運も続いたことから、事あるごとに外野から死んだ言語扱いされてしまっているので、まずは集まって現状確認、決起する必要があると思いました。 勉強会という感じではなく「Dart Summitでこんなセッションあったからちょっと調べてみた」とか、「最近こんなのDartで作ったよ」とか、「これDartで作ってみたいんだけどどうすればいいの?」みたいな世間話的な発表をできる場になればいいかなと思い、「勉強会」ではなく「ミートアップ」として開催することにしました。

内容

一時は15人を超えた参加者数も当日には9人になっていましたが、個人的にはよくぞ9人も集まったという感じです。なんと名古屋から来てくださった方もいました。

今回のDart Meetup Tokyoは4つの発表がありました。

  1. laco0416 - Pub使ってますか?
  2. sh4869sh - Dart on Raspberry Pi
  3. takyam - Server Side Dart
  4. ntaoo - DartでWebアプリ その利点と課題

「Pub使ってますか?」

主催として一番槍に発表しました。テーマはDartに同梱されているコマンドラインツールPubについて。 基本的なツールではありますが意外と奥が深く、pub buildの挙動や、pub globalの落とし穴なんかを話しました。 denは最近良く使われ始めたので皆知らなかったらしく便利だよというのを共有できてよかったです。

Dart on Raspberry Pi

DartによるサーバーをRaspberry Pi上で動かす試み。

手順の話でいきなり面白かったのでさすがだなと思いました。

Raspberry Pi向けのDartをビルドするのにトータル2時間くらいかかるとのこと。 HTTPサーバーが動いていてブラウザでアクセスできるのを実演してくれました。 また、GPIOを使ってRaspberry Piに刺したLEDをDartから光らせてる様子も見られてなかなか可能性広がる分野な気がしました。Webからリクエストを受け取り、ハードを操作する流れがNode.jsだけでなくDartでも可能という良い発表でした。

「Server Side Dart

takyamさんによるサーバーサイドにおけるDartの解説とNode.jsとの比較、使用感についての発表でした。 サーバーサイドにおけるNode.jsとDartではもはや「できる・できない」のレベルではほとんど差別化できないので、API的な比較は無意味ということで周辺の開発環境(特にObservatoryによる解析)で比較していました。

DartもIsolateを使うことでマルチコア対応しており、さらにIsolateをまたいで共通のHTTPサーバーをListenできるのは知らなかったので驚きました。

サーバーサイドでは直接実行できるという点でTypeScriptを始めとする他のAltJSに大きく差をつけることができるのも大きなポイントですね。

「JSより速い」をアピールしているにもかかわらずサーバーサイドに関してはNode.jsとベンチマークにあまり差がない(10%程度?)のも知らなかったので認識を改めることができました。

DartでWebアプリ その利点と課題」

docs.google.com

最後はntaooさんによるDartを使ったWebアプリを 業務で 開発した貴重な事例紹介の発表でした。

DOM操作に関するAPIがクライアント・サーバーの両方で豊富という理由でDartが採用され、GAE/ManagedVMs上でサーバーサイドとして使用しているということで、業務でDartというだけでも貴重なのにさらに「GAE上で」という凄まじい事例が国内に存在していることに驚きました。

Polymer.dartをライブラリとして採用すると、Polymer.dartだけでなくPolymer自体のバグにも影響されて、その修正が反映されたdart版を待つのが大変というのが「わかる…」という感じでした。JS向けライブラリのポーティングは全部この問題を抱えているのがネックです。できるだけピュアDartなライブラリを採用したい…

またPolymer.dartを使うとdart2jsの出力するファイルのサイズが爆発的に増えるのは深刻な問題で、これは今後のコンパイラの改善でどうにかならないかな…というつらみを共有してもらいました。

隅から隅まで世界的にも貴重な事例なのでとても勉強になりました。

まとめ

参加してくれたみなさんありがとうございました! それぞれ発表の後には質問も飛んでいて少人数なりにそこそこに盛り上がったのではないかと自負しています。 全員がDartユーザーというわけでもなく、単純に興味があって来てくれた方もいたのは嬉しかったです。

雑談も結構しましたが、全体を通して「今はつらい」「ES5は滅びろ」「未来への投資」など、これから先を生き延びるための戦略、心の支えを再確認する感じでした。Summitで発表されたロードマップを信じて頑張ろうと奮起出来た気がします。

次回開催は8~9月ごろを予定していますので、リリースが始まっているはずのFletchに関する話題で盛り上がるのではないかと思います。お楽しみに!

おまけ 今後のDartに対する期待と希望

Dartのロードマップでは次の目玉は8月からのFletch for iOSリリースです。

https://github.com/dart-lang/fletch

FletchとはiOSアプリに200KB程度のDartランタイムを同梱し、DartiOS上で実行するというプロジェクトです。 UI層はネイティブの言語に任せ、サービス層をDartで書くことができるようになります。 Dartは言語仕様のシンプルさ、学習コストではSwiftに勝っていると思っていますが、iOSだけであればObj-CとSwiftをそのまま使ったほうがいいじゃないかと思います。 が、FletchはAndroidでも同じことをするつもりです。iOSAndroidで共通のライブラリを使える未来はそれなりに現実味を帯びてきています。

サーバーサイドをDartで書き、そのサーバーとやりとりするクライアントライブラリをDartで書き、FletchでiOSAndroid両方の言語から呼び出して使える。どうですか、Dartの描く未来はこういう世界です!

いきなりWebの世界でJavaScriptと競争するにはあまりにも実績が足りないという課題を、モバイルOSにおけるマルチプラットフォームから切り込むことで乗り越えようという作戦はChromeVMを乗せるよりもよっぽど現実的な夢だと思いませんか!

Dartは夢」が褒め言葉になるよう、Dart開発チームだけでなくユーザー側の我々も頑張って活動していきたいです。