BT
  • エクスクルーシブアップデート:

BlossomがDartに移行

作者: Zef Hemel , 翻訳者 吉田 英人 投稿日 2013年4月11日 |

原文(投稿日:2013/04/08)へのリンク

 

Thomas Schranz氏は自社製品の Blossom を,Dart に移植すると ブログ記事 に発表した。Blossom は開発チームのための製品で,Webベースのカンバン方式ボードである。DartはGoogleの開発した,JavaScriptの代替として利用可能な新しいWebプログラミング言語とプラットフォームだ。

今回の決定について氏は,JavaScriptエコシステムのフラグメンテーションに対して同社がこれまで長く抱いていた不満の結果だ,と 書いている

Blossom ではJavaScriptを積極的に利用しました。JavaScriptはいろいろな面で素晴らしい言語です。ただし,その暗黒面を回避する手段を知っているならば,ですが。というのは,JavaScriptのエコシステムには,多くの面で重要なものが欠けていると思うからなのです。コア部分に関しては特にです。

何か事を始めようするとき,スタート地点に立つまでに乗り越えなければならない障害が多すぎます。この点が非常に不満なのです。エコシステムの新参者の目には,これがどう映っているのかは分かりません。学習曲線の上昇率としては比較的高い反面,疑問に感じる部分もたくさんあるのではないのでしょうか。

結果として同社は,アプリケーションのフロントエンドを段階的にDartへ移行することを決定した。それまでのフロントエンドは CoffeeScript, Backbone.js, Underscore.js, jQuery を採用して,これらを Brunch で組み立てる,という構成だった。

InfoQではSchranz氏に,今回の変更について詳しく聞くことにした。

Dartはまだ若い言語です。なぜ今,このような移行をしようと決意したのでしょう?

Dartは確かに,他の言語と比べれば新しい言語です。しかしツーリングや標準ライブラリ,パッケージ管理システムなどが充実しているので,JavaScriptのエコシステムよりも使いやすいものに仕上がっています。

JavaScriptの世界にはフラグメンテーションが多すぎます。コンポーネントに関しては特にそうです。パッケージの管理,モジュール操作,非同期コードや依存性,コレクションの反復処理にさえ,競合する方法が山のように作られています。その結果が,ライブラリ同士の相性の悪さになって現れているのです。独自のエコシステムに引き込もうとするものがあり,それを無視しようと「車輪の再発明」を試みるものがある,といった具合です。私はJavaScriptコミュニティが,RubyやPython,Dartなどの言語のコミュニティに比べて,NIHシンドローム に冒されている度合いが強いのではないか,と思っています。

そのことが不要な複雑さを生み出しているのです。初心者を困惑させるだけではありません。何年もJavaScriptを書いてきた人たちさえも混乱させているのです。Dartに移行するというのは,表面的にはリスクを伴った行動に思えるかも知れません。しかし私には,JavaScriptに固執することの方がよほどリスクが多いように思えてなりません。

Dartのどのような部分がBlossomに向いているのでしょうか?

フロントエンドのコードベースを開発するに当たって,私たちはより生産性の高い方法をずっと探していました。Dartはその点,非常に優れた基盤を提供してくれます。Dart VMのおかげでセーブ・リロードの開発サイクルが非常に短縮されますし,パワフルなコードアナライザも提供されています。このため,Dartエディタでの作業は快適です。自動補完やリファクタリング,デバッグなどの機能が,JavaScriptでは実現できていないレベルでサポートされています。さらにパッケージマネージャや選択的な型付け,一貫性のある標準ライブラリなどのおかげで,コードベースを論理的に検討することも容易です。Dartは単なるプログラミング言語ではなく,さまざまな補助機構を装備しているのです。それを理解することが大切です。結合された開発エクスペリエンスがあるという点が,Dartのすばらしさです。

ですがDartはまだ,開発のアルファ段階です。APIもまだ確定ではありません。それが問題になることはないのでしょうか?

言語のセマンティクスやシンタクスはすでに,かなり安定していると思っています。とは言っても,Dartチームは1.0に向けて作業していますから,その過程でAPIレベルでも数多くの改善が実施されています。ただし幸運なことにDartには,先程述べたような充実したツールサポートがあります。非推奨とマークされたメソッドはエディタが教えてくれますし,必要ならば コードベースを自動的にアップデートしてくれるクリーンアップツール も提供されています。もっとも,ブログやメーリングリストをフォローさえしていれば,手作業で更新を行うのも大した手間ではありません。

今は切り替えプロセスの真っ只中で,アプリケーションをひとつひとつ移行しているところだと思いますが,JavaScriptからDartコードへの対応,あるいはその逆で,どのようなことを経験しましたか?

js相互運用パッケージ というものが用意されています。これを使えば,JavaScriptオブジェクトの生成や関数のコール,さらにはDart関数をJavaScriptから呼び出すことも可能です。これだけで相互運用性については,かなりの部分がカバーされます。ただしBlossomに関しては,相互運用ライブラリはさほど必要ではありませんでした。 既存のBackbone.jsコードベースの独立性がもともと高く,ウィジェットからウィジェットに置き換える作業も比較的簡単だったからです。アプリケーションの一部については,Dartで置き換えるために Justin Fagnani氏のルーティングパッケージ も使用しています。今のところ,移行は予想したよりも簡単です。

これまでDartプラットフォームで開発作業を続けてきて,JavaScriptの場合と比べてどうでしたか?

とても快適ですよ。一貫性のある開発エクスペリエンスのおかげで,エコシステムの基本的なビルディングブロックに無駄な作業を強いられることもなく,自分たちの製品開発に集中することができています。本当に信じられないくらいです。JavaScriptでコードを書いていた頃は,undefined をチェックする処理があちらこちらに散らばっていました。まともな言語ならば例外をスローするような場合でも,JavaScriptでは動作を続けようとする傾向があるからです。こんなに解放感を味わえたのは,何年も前,PHPからRubyとRailsフレームワークに切り替えた時以来です。当時はその作業も,リスキーで非常識だと言われたものです。

これまでにDartに移植されたコードは,おおよそどの位ですか?

現時点では5%程度です。新しい機能をDartで実装していますし,既存部分の移植も継続的に行っています。

同じような移植を行っている製品アプリケーションで,何か知っているものはありますか?

JavaScriptからDartに移行しているアプリケーションは,これ以外には知りません。ですが今後,もっと同じような発表があったとしても,驚きはしないと思います。Dartコミュニティは拡大していますし,1.0マイルストーンを待ちきれない人たちもたくさんいます。Dartをサポートするサービスもいくつか始まりました。例えば drone.io という継続的インテグレーションサービスは,たくさんのDartのオープンソースパッケージが,テストのために使用しています。

現時点で,Dartへの移行を他の企業にも奨めますか?

移行するには少し早いかも知れませんが,Dartに注目して,その言語やツール,特にWeb UIに関していろいろ試してみることは,間違いなく奨められます。次の週末にでもぜひ試してみてください。

Dartの将来性についてはどうでしょう,広く普及すると思いますか?

Dartの将来には期待できると思います。Web開発のおもしろさを思い出させてくれます。プラットフォームに関係する人たちも最高で,コミュニティとパッケージがすでに立ち上がってきています。Webのアプリケーションを開発するのは楽しいですよ。

Dartが 最初に発表された 1年半前には,その言語やアプローチに対して 批判的な 声が 非常に多かった。しかしそれ以降,Dartプラットフォームは着実に進歩している。JetBrainsのWebStormやIntelliJなど,サードパーティのIDEにも Dartのサポートが追加されている。サーバサイドDartアプリケーションを Heroku にデプロイすることも可能になった。

Blossomは一般公開されている製品アプリケーションとして,初めてDartに移植されたものだ。これが諺で言う「最初に跳ぶ羊」になり,他が追随することになるのかどうか。それは時が経てば分かるだろう。

 

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

BackboneとAngularを比較する

Victor Savkin 2013年12月23日 午後8時23分

Java 8を可能にしたJava 7の機能

Ben Evans 2013年11月12日 午後8時25分

サイト全般について
バグ
広告
記事
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT