GoogleのDartプログラミング言語に再びスポットライトが…その高い生産性にまず社内で人気が盛り上がる

3351037214_1fabfbe31d_o

昔々、GoogleのDartプログラミング言語は、今すぐにもJavaScriptに置き換わって、Webのデフォルトの言語になる、と思われていた。Googleは同社のブラウザーChromeで、JavaScriptと同格の扱いをしたほどだ。しかしDartがそうやってスターになりつつあったときでも、JavaScriptと、それを取り巻く分厚いエコシステムは、すでに数マイル先を走っていた。ほぼ1年前にGoogleは、DartをJavaScriptの直接的なコンペティタと見なすことをやめ、位置づけをJavaScriptへコンパイルされる言語と変えて、TypeScriptやCoffeeScriptなどと同列に置いた。

                       [クリックすると文字を大きく表示]
screenshot-2016-10-25-at-18-37-54

その後、Dartの周辺は静かになった。しかし今、それが変わろうとしている。Googleは今週ミュンヘンでDartデベロッパーカンファレンスを開催し、Dartに再び、ステージのライトを当てた。Googleの内部でも、Dartは大きく成功している。今ではAdWordsとAdSense(Googleのメインの収益源を駆動)、およびGoogle Fiberのチームが、消費者向けのWebアプリケーションをDartで書いている。AdSenseのアップデートはすでに本格稼働し、AdWordsの次世代インタフェイスは目下テスト中だが、近い将来には前よりも広範囲にローンチされる。GoogleのこれらDart愛用チームは、開発スピードが25〜100%アップした、と報告している。Google内部で今いちばん急成長しているプログラミング言語は何か、といえばそれはDartだ。コードの行数で言うと、Dartで書かれたコードの量は昨年比で3.5倍以上になっている。ただし3.5倍と言っても絶対数はそんなに大きくないから、びっくりするほどの数値ではない。

Google以外では、Wrike, Workiva, Blossomなどの企業がDartで製品開発をしている。つまりGoogleの外にも、Dartユーザーのコミュニティは確かにある。

Dartの協同ファウンダーKasper Lundは、最近のDartの巻き返しについて、“最初が頑張りすぎだ。Dartのランタイムをブラウザーに組み込んで今日的なWebの全体を狙うなんて、とてもついていけなかったな”、と、言語の初期を回想する。しかしランタイムがChromeに載ることがなかったとしても、言語自体とそのツールは大成功だった。それはDartからJavaScriptへのコンパイラーをすでに彼らが作っていて、Dartで書いたコードがChromeの外でも動く、という状態が確立していたからだ。Dartコードがいちばん速く動くのは、Chrome上だったけれども。

そこでチームはランタイムの開発を断念し、DartからJavaScriptへのコンパイラーおよび関連ツールの開発に専念した。

DartとJavaScript両方のランタイムがChromeにあると、二つの言語間の対話がかえって困難になった、とLundは述べる。ランタイムを放棄した今では、その問題もなく、最初そのために苦労して作り出した依存性も、すべてなくなった。逆に今のDartは、サードパーティツールとの協働が容易だ。チームが今とくに力を入れているのがAngularで、それはWebアプリケーションとモバイルアプリを作るためのGoogleのJavaScriptフレームワークだ。

Angular 2.0はデフォルトでMicrosoftのTypeScriptを推奨言語としている。でも今日ベータを終了したAngularDart 2.0では、当然ながら推奨言語はDartだ。今週のミュンヘンのイベントでは、たくさんの、AngularDartによるMaterial Designのコンポーネントがデベロッパープレビューとしてリリースされた。それらの、データピッカー等々は元々、Googleの社内チームのために開発されたものだ。

Dartにはstrong modeというオプションがあって、そのモードではDartが強い型付けのある言語になり、ジェネリックメソッドも使える。なお、JavaScriptへのコンパイル速度は、今や多くの場合1秒未満だそうだ。〔本来のJavaScriptは型付けが厳格でない言語…楽だけどある意味危険。〕

ひとつのアプリのiOSバージョンもAndroidバージョンも書くコードは一つでOK、というGoogleのプロジェクトFlutterは、今プレビューの段階だが、使う言語はDartだ。Flutterのウィジェットは、関数型反応型フレームワーク(functional-reactive framework)を使っている。reactive?!、そう、その基本的な考え方はFacebookのReactと同じだ(Flutterのチームもそれを認めている)。今のところは、Reactが相当前の方を快調に走っているが、Googleの基本的な考え方は、デベロッパーに完全なDartツールキットを提供して、多くのユースケースに対応していただくことだ。

というわけでDartは今、Google内部で人気が盛り上がっているが、Googleは社内で終わらせたくないからこそ、今週のミュンヘンのイベントを開催したのだ。でも、その歴史が歴史だけに、多くの外部デベロッパーをその気にさせるためには、今後なお一層の努力が必要なことは、今からすでに明々白々だ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Googleは”モアベターなJavaScript”をねらったDart言語をChromeでサポートしないことに決定

DartはChromeに来ない、とGoogleは今日(米国時間3/25)発表した

Webの標準語はJavaScriptだが、DartはGoogleがそのJavaScriptをリプレースするためにローンチした言語だ。Googleによると、Dartには静的型付け(static typing)をはじめ、デベロッパに歓迎される高度な機能が揃っている。

最初は、GoogleだけでなくそのほかのブラウザにもDartをサポートしてもらうつもりだったが、現状はGoogleのChromeすら、特別のビルドがやっとサポートしているぐらいだ。

“Google Chromeに限定されず、ユーザとWebにとってのベストを求めるなら、DartをJavaScriptへコンパイルする道を選ぶべきだ”、Dartの協同ファウンダLars BakとKasper Lundが今日そう書いている。“そこで、Dart VMをChromeに統合しないことに決めた”。

DartではDartで書いたコードをJavaScriptへコンパイルできるから、今後何か新しいことが起きるわけではない。でもこれまでは、遅かれ早かれGoogleがDartを直接ブラウザに持ち込む、という期待があった。BakとLundによれば、“Dartのためにより明確な戦略を採る”、ということのようだ。

Googleの内部では、さまざまなチームがおよそ100万行ものDartのコードをメンテしているから、Googleがこの言語を放棄することは当面ありえない。BakとLundによると、とくにGoogle Adsのチームがこの言語に継続的にコミットしている。

Adsの技術担当VP Scott Silverは今日の声明の中でこう書いている: “われわれは今、次世代のWebアプリケーションをDartで書くことに注力している。そして、Dartから最良のJavaScriptを生成することに今日あらためて焦点が当てられたことは、Dartユーザであるわれわれが、現代的ブラウザを使うすべての人たちに、最良のアプリケーションを提供できることを意味する。Dartによってわれわれの部門の技術者たちの生産性が大幅に向上し、繰り返される開発と立ち上げのサイクルを早めることができた”。

とは言うものの、今日の発表はこの言語の未来に関して、不安を感じさせる。今日のHacker Newsでは多くのコメントが、DartはJavaScriptの最新バージョンの開発に大きな影響を与えた点では成功と言えるが、明らかにGoogleはこの言語に関して、もっと大きなプランを持っていたのだ、と指摘している。

そのほかのブラウザベンダ、とりわけMozillaは、Dartを採用していないし、またデベロッパは、一つのブラウザでしか動かない言語でアプリケーションを書きたくはない。今後のDartは、CoffeeScriptやTypeKitなどと並んで、“JavaScriptへコンパイルされる言語”の仲間入りをするのだろう。

関連記事。〕

[原文へ]
(翻訳:iwatani(a.k.a. hiwa


GoogleのDartプログラミング言語がやっとApp Engineでサポートへ

Googleの今年のI/Oデベロッパカンファレンスで、DartプログラミングをApp Engineでサポートする、という計画があまり目立たぬ形で発表された。そして、意外と長く待たされたあげく、今日(米国時間11/7)からやっと、Dartで書いたサーバアプリケーションをGoogle App EngineのManaged VMs(管理サービス付き仮想マシン)で動かせるようになった。

Dartは、Googleの“モアベターな”JavaScriptだとよく言われるように、基本的にはブラウザ上で実行されるクライアント言語だ。でもDartを発明したLars BakとKasper LundがI/Oのときに語ったところによると、Dartはあくまでも汎用言語として作ったのである、ということだ。

Dockerを利用してGoogle Compute EngineでDartを展開することは、すでに行われていた。でもデベロッパにとって機能が多いのはApp Engineの方だ。GoogleのData Store、キャッシングサービス、モニタリング、ロギングなどのツールが使える。デベロッパがやることは、アプリケーションを(たとえばDart言語で)書いてアップロードするだけ。あとはApp Engineがスケーリングやデータのストレージなどの面倒を見てくれる。トラフィックが急増すれば、自動的にスケーリングをやってくれるのだ。

Googleは、App EngineにおけるDartのサポートを、今後も続ける、改良していくと言っているから、たとえばApp EngineのもっといろいろなAPIがサポートされるのだろう。

この新たなサービスは今のところベータで、詳しい情報はここにある。

 

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


GoogleのDart言語がECMAの標準規格になる

Googleのプログラミング言語Dartが、 ついにECMAのスタンダードになり、ECMA-408というキャッチーな〔皮肉!〕お名前をいただいた。ECMAは日常あまり目にしない名前だが、あなたが今これを読んでいるブラウザも、このページの一部をECMAscriptの処理系を使って表示しているのだ。つまりECMAの規格に準拠しているJavaScriptを、公式の場ではECMAscriptと呼ぶ。ECMAは過去に、JSON、C#、Office Open XML形式、CD-ROMの各種仕様などの規格も策定している。

DartのチームとチームリーダーのLars Bak (JavaScriptエンジンV8を作ったデンマーク人のプログラマ自転車競技の選手ではない)は、彼らの言語がv.1.0をリリースできるまでの安定に達したと確信して、言語の標準化作業をECMAに持ちかけた。数日前にECMAはDart言語の仕様を公式に承認したが、それはDart 1.3がベースで、今日(米国時間7/8)からGoogle+上で共有される。

ECMAの公式規格になったことによって、Dart言語をめぐるより活発なエコシステムが作られることが期待される。仕様が標準化し安定すれば、いろんなところが処理系を作りやすくなり、彼らにとって“動く標的”という不安がなくなる。

Dartの作者たちはこの言語を汎用言語とみなしているが、ライブラリの現状などから見ると、いちばん向いているのはWebアプリケーションの開発だ。ただしまだ、GoogleのChromeですらDartをデフォルトでサポートしていない。Dartを試してみたいデベロッパは、Dartの処理系を載せた特殊なバージョンのChromeを使うか、またはDartをJavaScriptにコンパイルしてから動かすしかない。でもBakの話では、ChromeがDartを標準でサポートするようになるのは、もうすぐのようだ。公式の言語規格にもなった今日からは、そのほかのブラウザのベンダや多くのデベロッパが、Dartにあらためて注目するだろう。

ECMAの規格はバージョン1.0だが、先月のGoogle I/OにおけるBakの話では、次期バージョンには列挙型(enum)や、 deferred loading、それに少なくともベーシックな形でのasyncのサポートが含まれるという。これら新しい拡張言語仕様とそれらをサポートしたDart処理系は、年末までにDartチームが制作する予定だ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


GoogleのDart言語がECMAの標準規格になる

Googleのプログラミング言語Dartが、 ついにECMAのスタンダードになり、ECMA-408というキャッチーな〔皮肉!〕お名前をいただいた。ECMAは日常あまり目にしない名前だが、あなたが今これを読んでいるブラウザも、このページの一部をECMAscriptの処理系を使って表示しているのだ。つまりECMAの規格に準拠しているJavaScriptを、公式の場ではECMAscriptと呼ぶ。ECMAは過去に、JSON、C#、Office Open XML形式、CD-ROMの各種仕様などの規格も策定している。

DartのチームとチームリーダーのLars Bak (JavaScriptエンジンV8を作ったデンマーク人のプログラマ自転車競技の選手ではない)は、彼らの言語がv.1.0をリリースできるまでの安定に達したと確信して、言語の標準化作業をECMAに持ちかけた。数日前にECMAはDart言語の仕様を公式に承認したが、それはDart 1.3がベースで、今日(米国時間7/8)からGoogle+上で共有される。

ECMAの公式規格になったことによって、Dart言語をめぐるより活発なエコシステムが作られることが期待される。仕様が標準化し安定すれば、いろんなところが処理系を作りやすくなり、彼らにとって“動く標的”という不安がなくなる。

Dartの作者たちはこの言語を汎用言語とみなしているが、ライブラリの現状などから見ると、いちばん向いているのはWebアプリケーションの開発だ。ただしまだ、GoogleのChromeですらDartをデフォルトでサポートしていない。Dartを試してみたいデベロッパは、Dartの処理系を載せた特殊なバージョンのChromeを使うか、またはDartをJavaScriptにコンパイルしてから動かすしかない。でもBakの話では、ChromeがDartを標準でサポートするようになるのは、もうすぐのようだ。公式の言語規格にもなった今日からは、そのほかのブラウザのベンダや多くのデベロッパが、Dartにあらためて注目するだろう。

ECMAの規格はバージョン1.0だが、先月のGoogle I/OにおけるBakの話では、次期バージョンには列挙型(enum)や、 deferred loading、それに少なくともベーシックな形でのasyncのサポートが含まれるという。これら新しい拡張言語仕様とそれらをサポートしたDart処理系は、年末までにDartチームが制作する予定だ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


Dartプログラミング言語をGoogleのApp Engineがサポート…ついにサーバ言語としても位置づけ

デベロッパカンファレンスGoogle I/Oが始まる数日前に実はGoogleは、同社のApp EngineがDartプログラミング言語をサポートする、と発表していた。

言語のこの実装は、同社が最近ローンチしたマネージドバーチャルマシン(管理を伴う仮想マシン)と、そのサービスがサポートするカスタムランタイムを使用する。ただしカスタムランタイムはまだ非公開ベータなので、Dartのサーバサポートもまだ一般公開はできない。でもGoogleはI/Oの席で、Dartデベロッパたちに、ささやかな プレビューを行った。

デベロッパたちの多くは、DartはJavaScriptと競合する言語だ、と見ている。たしかにGoogleがねらっていたユースケースはJavaScriptと同じWebスクリプティング言語だし、同社のChromeブラウザにはDartをサポートしているバージョンもある。GoogleはDartをJavaScriptに翻訳するコンパイラをはじめ、Dart関連の豊富なツールも提供している。でも、今度そのランタイムをApp Engineに持ち込んだということは、GoogleがDartに関して抱いている視野がもっと大きいことを、うかがわせる(単なるWebクライアント言語ではない)。

今回は、Dartを作った二人のデンマーク人Lars BakとKasper Lundに会って、Dartの現状と未来について、話を聞いた。なお、BakはGoogleのJavaScriptエンジンV8の作者でもある。

彼らによると、最初DartはJavaScriptの代替言語(better JavaScript)ではなく、あくまでも汎用のプログラミング言語を目指して開発に取り組んだ。目的は型付けが動的に行われる言語で、デベロッパがすぐに使い始められること、そしてデベロッパの生産性を高めるような言語だ。

そのため二人は、単に言語だけでなく、専用のエディタDart EditorやDart用IDE、大量のライブラリなど、デベロッパの生産性を支えるツールも並行して作っていった。最近ではDartのサポートを内蔵しているAndroid用のChromeブラウザまで作った。またDart Editorにも、デベロッパがプログラムをランタイムにモニタできるためのいろんなツールが伴っている。I/Oで二人は、Dartと、GoogleのWebコンポーネントプロジェクトPolymer、および新しいユーザインタフェイスデザイン言語Material Designを合わせた開発が容易にできることを、実例で示した。

GoogleはI/Oで、デベロッパがCompute Engineの上で、Dockerを使用してDartを展開できることと、Googleのクラウドモニタリング/キャッシングサービスData Storeにも容易にアクセスできることを発表した。

しかしデベロッパたちは、Dartをサポートした特殊なバージョンのChromeではなく、ふつうのChromeがふつうに最初からDartをサポートすることを望んでいる。Bakにこの点を尋ねると、彼は微笑みながら、それももうすぐ発表すると述べた。Chromeが標準的にサポートすれば、Dartはメジャーの位置に近づくだろう。もちろん、Dart-to-JavaScriptコンパイラを経由するよりはDart VM直接の方がコードの実行もずっと速い。いったんサポートしたら今後下ろされることはないだろうから、デベロッパにとってもDartを採用する大きなインセンティブになる。

今後の予定としてBakたちは、 JavaScriptのasyn/awaitのような非同期処理をDartに実装することを考えている。

二人はDart 1.0をリリースしたあと、DartのEcma標準規格の作成にも取り組んだ。JavaScriptも今では、EcmaScriptの規格に準拠している。Bakによると、良いプログラミング言語が委員会によって作られることはないので、Dartも完成した実装(v. 1.0)をまず自分たちで作ることが重要だった。そしてそのあとで、業界全体の標準言語として広めていきたい。そうすれば、ほかのブラウザもDartをデフォルトでサポートするようになるだろう、と二人は期待している。

Dartは汎用言語でもあるので、フロントエンドとバックエンドの両方を同じ言語で書ける。したがってより安定性の良いコードが書けるし、デベロッパチームによるコラボレーション的な開発もより容易にできる、と二人は信じている。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


Runnableの上にGoogleがDart専用チャネルを作った…新言語の試用が容易に

Googleが将来的にJavaScriptを駆逐すべきものとして推しているDartは、昨年11月にバージョン1.0に達した。しかし、同じくGoogleのGo言語は急速に人気が盛り上がっているが、Dartはいまいちだ。Dartをなんとか普及させたいGoogleは今日(米国時間1/16)、“コードのYouTube”と呼ばれるサンプルコード発見サイトRunnableが最近設けたCode Channels*を利用する初のフレームワークとして、Dartチャネルを設けた。〔*: YouTubeの‘チャネル’にほぼ相当。〕

数か月前にローンチしたRunnableは、YouTubeと違ってビデオではなくコード片のライブラリをホストし、しかもそれらのコードやユーザによるその編集結果は、同サイト上で実行できる(だから‘Runnable’)。これまではRunnableのチームが投稿されるコードを一つ一つ調べて掲出していたが、今度新たに設けたCode Channelsは、個々のベンダやオープンソース組織などの専用のコード掲出場所となる。そのためユーザであるデベロッパは、特定のフレームワーク(たとえば新しい言語)を試用しやすくなり、そしてまさにその点に、Dartのチームは飛びついたのだ。

RunnableのCEO Yash Kumarは、今日の声明文の中でこう言っている: “Googleが新言語Dartをホストする場としてRunnableを選んでくれたことは、とても喜ばしい。Dartは弊社の、たえず成長しているコードライブラリのきわめて重要な一員となり、当サイトの、デベロッパにとっての利用価値を一層高めるだろう。またそれはCode Channelsの利用例としても非常に優れており、どんな企業でもデベロッパでも自分のフレームワークやコードを外部デベロッパに見つけてもらい、利用してもらう場所として利用できる、というチャネルの有用性を、Dartチャネルが実証するだろう。当サイトでユーザが、Dartではこんなこともできる、というコード例をたくさん投稿されることを、期待したい”。

ただしDartコードを実行する仮想マシンは今のところChromeの実験的なビルドであるDartiumでしか使えないから、Runnable上のDartのコードサンプルはDartをJavaScriptへコンパイルするdart2jsに頼ることになる。それにより、Dartで書いたコードは、ほかのブラウザでも動くようになる。

Googleが新言語普及活動の一環としてRunnableを選んだことは、Runnableにとっても大きな前進だ。それは同サイトのサービスモデルが広く認められたことを意味し、今後はさらに、いろんなベンダやフレームワークが同サイトを…自己チャネルの創設・利用者として…利用していくことにつながるだろう。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


GoogleのDart SDKとエディタがベータへ: パフォーマンス向上, コードサイズ縮小など

Googleが今日(米国時間6/19)、DartのSDKとエディタの最初のベータバージョンローンチした。Googleによると、今回のアップデートによりSDKが作りだすJavaScriptのコードは相当小さく、速く、そしてデベロッパにとってコードの展開が容易になった。エディタDart Editorでは、デベロッパがコードを書いていくときリアルタイムでその分析を行う分析エンジンが20%高速になり、ミスタイプがあるままコードを動かす可能性が少なくなった。

Dartは、JavaScriptへコンパイルできるしまた、Dart VMを内蔵するChromeの特定のバージョンでそのまま動かすこともできる。デベロッパの人気はいまいちだが、それでもGoogleはかなりの人数をDartプロジェクトに投じている。

Dart Editorでは、コードの補完機能がよりお利口になり、キャメルケースを理解するし、テンプレートのエディティングが終わったときに未使用のオプションパラメータを自動的に削除するなど、さまざまな機能強化が行われている。

[iEをisEmptyへ補完]

GoogleによるとDart VMはいくつかのベンチマークで40%速くなり、JavaScriptにコンパイル後のコードも前より20%速い。ChromeのDart VM対応ビルドDartiumにおいては、WebGLのパフォーマンスが大幅に良くなった。

GoogleはWebコンポーネントライブラリPolymerを使ったUIフレームワークをDartに導入したいらしいが、その現状はまだ“作業中”ということだ。

Dart SDKとエディタのリリースノートはここにある。

他のブラウザメーカーは、JavaScriptに関して、Dartというバスに相乗りする気配を見せていない。たとえばMozillaはRustとJavaScriptとasm.jsでパフォーマンスの向上を図る気のようだ。GoogleのChromeも、その一般向け安定版はDartをサポートしていない。ただしそれは、単純に、時間の問題と言えるかもしれない。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))