BT

Elmによって実現した無停止システム

| 作者: Sergio De Simone フォローする 19 人のフォロワー , 翻訳者 h_yoshida フォローする 1 人のフォロワー 投稿日 2017年6月27日. 推定読書時間: 3 分 |

原文(投稿日:2017/05/31)へのリンク

QCon London 2017において、noredinkのソフトウェアエンジニアで、Manningから“Elm in Action”という自書を著したRitchard Feldman氏が、Elmへの変更を決断したことによって10万コード行のシステムが2015年以来一度も運用障害を起こしていないという、同社の状況に関して解説した。今回の記事では、その要点を簡単にまとめてお届けする。

Elmは純粋な関数プログラミング言語である。JavaScriptにコンパイルされるこの言語は、ブラウザベースのアプリケーション開発での不変データや静的型付けの利用を促進する。Feldman氏は、氏らが小さなサイドプロジェクトでElmを使用した後に、本格的な開発に取り掛かったことについて、順を追って説明している。特に、Reactを使用した数ヶ月間のプロジェクトを完遂した後、氏は次のようなことに気付いたという。

Elmならば非常に短時間でこれを行なうことができるので、スタックにこの新たなテクノロジを導入することによって、作業に必要な時間の短縮と、生産性の大幅な向上、さらにはメンテナンスの容易化が実現できるでしょう。

Feldman氏は、Elmの使用による生産性と信頼性の向上に関して、注目すべき点をいくつか指摘する。

  • Elm用の高度なREPLであるElmライブエディタEllieは、Elmコードの記述、コンパイル、実行の感想なリッチインターフェースを提供する。
  • Elmはnullポインタをシステム内で自由に伝搬可能にすると同時に、Maybe値を使った明示的な操作をプログラマに要求する。これにより、いわゆる“one billion dollar mistake”の心配がなくなる。
  • ElmはUI全体の状態を表現するために単一の不変値を使用する。モデルは必ずしもモノリシックな値でなくてもよいが、Reactとは異なり、個々のコンポーネントに状態は関連付けられていない。そのモデルを使ってElmはVirtual DOMをアセンブルして、実際のDOMとのdiffを取り、関連する変更のみを適用する。Reactにもあるこのアプローチは、パフォーマンスの維持と、不変値を扱う容易さの両立を可能にする。
  • UI状態を単一の不変値で表現することの大きなメリットのひとつは、一連のUI変更を、関連付けられた不変値のシーケンスとして処理できる点にある。デバッグモードでコンパイルした場合は、関連するモデル値を単にクリックするだけで、以前のUI状態をナビゲートすることができる。さらに、それらの値をセットとしてエクスポートすることによって、他の開発者が、問題のあったUI状態とその手順を簡単に再現することが可能になる。
  • Feldman氏によれば、静的なタイプチェックはElmの大きなセールスポイントであり、“コンパイルすれば動作する”をほぼ完全な真実にするものである。
  • Elmの信頼性を支える大きな要素のひとつは、JavaScriptとの相互運用性の扱い方にある。JavaScriptにコンパイルされる他のほとんどの言語とは対照的に、Elmはメッセージベースのアプローチを採用しており、JavaScriptコードはサービスの内部で動作する。これによって、静的な型付けによって実現される保証が、型を持たないJavaScriptコードによって失われることを防いでいる。
  • 最後に、npmほどの規模は持たないものの、メリットのひとつとして挙げられるのがElmパッケージマネージャである。注目すべきなのは、パッケージ可能なのがElmコードに限定されている点だ。具体的には、バイナリが許可されていないため、npmよりもセキュアになっている。さらにパッケージは、正常なビルドが可能であることと同時に、セマンティックバージョニングの使用が自動的に強制される。

Feldman氏は結論として、画面で何らかの処理を行なうだけであればJavaScriptの方が簡単だが、Elmを使えば開発速度の全体的な向上が実現する、と述べている。

最後に言及されているのは、Elmのような言語の使用に関する一般的な反対意見である、開発者の雇用が難しいという点についてだ。実際にはElmを使うことで、noredinkは2倍のメリットを得ることができた、とFeldman氏は言う。彼らの仕事のポストが注目を集めたことと、Elmの習得に関心のある開発者を引き付けたことだ。

 
 

この記事を評価

採用ステージ
スタイル
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT