キャリアVol.407

リアルタイムWebの時代にElixirが来る? Qiita高橋侑久氏が今注目する技術領域

リアルタイムWebの時代にElixirが来る?Qiita高橋侑久氏が今注目する技術領域

技術情報共有サイト『Qiita』は、日本で働くプログラマーにとっていまや、なくてはならない存在となっている。また、チーム内の情報共有に『Qiita:Team』を利用しているという声を聞く機会は多い。こうしたプロダクトを通じて、「ソフトウエア開発をよりよくすることで世界の進化を加速させる」ことを目指しているのがIncrementsだ。

情報感度の高いプログラマーに向けたプロダクトの作り手は、おそらく情報感度が高いはずである。『Qiita』の「中の人」は今、どのような技術に注目し、どうやってそれを身につけているのか。

同社CTOの高橋侑久氏に、現在注目し、インプットしている技術領域と、学びのソースについて聞いた。

高橋氏は、注目している技術領域として次の3つを挙げた。

【1】Railsの課題に回答をもたらすElixirとPhonenix Framework
【2】Terraformでインフラをコード化し、コミュニケーションコスト減
【3】メンテナンスを効率化するReact.jsの活用

【1】ElixirとPhonenixに関する取り組みと学びのソース

高橋氏が今、ElixirおよびそのフレームワークであるPhonenixに注目する理由は、「Ruby on Railsが抱えた課題にきれいな回答を持っていると感じる」からだという。ここで言う「Railsが抱えた課題」とは、リアルタイムWebに最適とまでは言えない点を指す。

ElixirはErlangという言語のVM上に走る関数型言語で、Erlangは通信事業社が作ったという出自が示す通り、「分散環境で動き、信頼性が高い」ことに特徴があるという。その一方で文法が古めかしくとっつきにくいことや、ライブラリの共有が難しいなどの難点もある。

このErlangをベースにしたElixirは、Erlangの良い点を引き継ぎつつ、Rubyに似たモダンな文法であったり、使いやすいパッケージマネージャを標準で備えていたりする点に、高橋氏は魅力を感じている。

「世界的にメジャーなコミュニケーションサービス『Whatsapp』はErlangで書かれており、非常に高いリアルタイム性を要求されるアプリケーションでありながら、ユーザーが4.5億人に達した段階でもわずか32名のエンジニアによって運用・開発されていたそうです。これが本当なら、Elixirにもそれと同じことができる可能性があります」

Elixirがメジャーバージョンに達し、またPhonenixというフレームワークが登場したことで、開発はだいぶ現実的になった。Incrementsでは実際の開発をElixirで行うまでには至っていないが、新たなサービスのプロトタイプを書いてみるなど可能性を模索中という。

高橋氏がElixirについて学ぶのに参考にしたソースは以下の通り。

公式サイトのチュートリアル
■Programming Elixir: Functional |> Concurrent |> Pragmatic |> Fun
『すごいErlangゆかいに学ぼう!』

【2】Terraformによるインフラのコード化と学びのソース

Incrementsでは、インフラをコードに落としてプルリクエストベースで管理できるよう、移行作業を進めているという。その際に利用しているツールが、HashiCorpが出している『Terraform』だ。

リリースから1年ほどを経てバージョンが上がり、AWSを扱うIncrementsが必要とするツールがひと通りそろってきたことで、利用のメドが立った。

高橋氏は、インフラをコード化することの最大のメリットは「アプリケーションエンジニアとインフラエンジニアのコミュニケーションコストが下がること」にあるという。

「インフラエンジニアが変更を加えるたびにテキストを残す方法は面倒だし、過不足なく書くのが難しい。また、書き残したものを必要な時にちゃんと参照してもらえる保証もない。その点、コードにすれば二度手間にならない上、全員が放っておいても参照するし、自然言語のような揺らぎもない」

また、コードであればコンピュータが理解するのも容易なため、自動化しやすいというメリットもある。

高橋氏が『Terraform』について学ぶのに参考にしたソースは以下の通り。

公式ドキュメント
■Kaizen Platformのglidenote氏によるブログ記事「Terraform + GitHub + CircleCI + Atlasを利用してAWSの操作を自動化した

【3】React.jsへの移行と学びのソース

5月にリリースしたWindows版『Kobito』はReact.jsを使って実装された。これは、プロダクトのメイン開発者であるmizchi氏の発案だった。mizchi氏といえば、masuidrive氏らと並び、日本でReact.js人気に火がつく一端を担った人物だ。

React.jsの魅力は、「一軒複雑なように見えて。とてもシンプルな構造をしている」点にあると高橋氏は言う。

「React.jsおよびReact.jsを使ってアプリケーションを書くために公案されたFluxは、データの流れが一意に定まっていて、何かをしようと思った時にどこに処理を記述すべきかの揺らぎが少ないので、適切に設計すれば新しく加わった人がどこに何があるか把握しやすい。この点はRailsとも似ている。そのため、ある程度規模の大きいプロダクトで長期的にメンテナンスを行っていくのにとても適していると感じています」

メンテナンス性に優れているという真偽が試されるのには今後の推移を見守っていく必要があるが、現時点でもそのパフォーマンスには手応えを感じており、技術的負債により開発スピードが鈍化してきたQiita本体の置き換えに使うことも検討しているという。

高橋氏がReact.jsについて学ぶのにオススメするソースは以下の通り。

公式サイトのチュートリアル
Web+DB PRESS Vol.86, Vol.87での伊藤直也氏の連載
■mizchi氏のQiitaエントリ『なぜ仮想DOMという概念が俺達の魂を震えさせるのか

学びの基本は1次情報にあたること

学びの基本は1次情報にあたること
情報収集はなるべく「ソース」にあたるという高橋氏

「新しいことを勉強している時などに対象の概要を把握するにはエッセンスを抽出した2次・3次情報は確かに便利。ですが、詳細を正確に把握するにはそれだけだと不十分なことが多い」。そのため、高橋氏は意識的に、公式ドキュメント(多くの場合は英語)、ソースコードを読むように努めているという。

「新しいツールを導入すること自体はそれほど難しくないんです。問題はその後に起こる。困ったことが発生した時にググって解決するのであればそれでもいいけれど、解決しない場合は自らソースコードの中に入って解決するしかない。だから、導入前から公式を読んでおくことが非常に重要なんです」

その過程では、自分が知らなかったテクニックや、逆に反面教師になるような負の側面に遭遇することも少なくない。そうした全てが学びのソースになるということだ。

「情報収集自体は、日本にもアンテナを張るのがうまい人がいるので、そうした人をフォローしておけばエッジの効いた情報が入ってくる。気になる情報があったのならそこで終わらせるのではなく、公式に必ず目を通すという習慣をつけるのが良いのではないでしょうか」

取材・撮影/川野優希 文/鈴木陸夫(ともに編集部)

この記事が気に入ったらいいね!しよう

エンジニアtypeの最新情報をお届けします

RELATED POSTS関連記事

JOB BOARD編集部おすすめ求人

この記事に関連する求人・キャリア特集


記事検索

サイトマップ



日本マイクロソフト株式会社 【マイクロソフトサポートエンジニア】トップ…

日本マイクロソフト株式会社【ポジションマッチ登録】 オープンポジション

株式会社富士通エフサス【ポジションマッチ登録】 オープンポジション

i Nations株式会社 【ITエンジニア】未経験からエンジニアへ!◆有給休暇取…

株式会社TAP プログラマ/完全自社開発/システム開発/5年連続110%成長…

ザ・パック株式会社【東証一部上場企業】 【生産技術エンジニア】未経験…

キリンビール株式会社 生産設備エンジニア/建築系・機械系・電気系エン…

DKSHジャパン株式会社 【サービスエンジニア】世界No.1シェアを有する…

ソニーエンジニアリング株式会社 [機械設計] ~ソニー製品の機械設計/機構…

株式会社東京ウエルズ 製造エンジニア*実務未経験OK*賞与9ヶ月分(過去…

「全てがコードで定義される世界の先頭を走りたい」DMM新CT...

メルカリがトップクラスのエンジニアを投入して「人事評価システ...

SIerって本当にヤバいの? ひろゆきが語る、業界ごと沈まな...

「新規プロダクト開発」成功の明暗を分ける6つのこだわり【及川...

「自律型ロボットで“物流”に魔法をかける」立命館大発ベンチャ...