エンジニアtype - エンジニアのシゴト人生を考えるWebマガジン
  • TOP
  • キーパーソン
  • 旬ネタ
  • コラボ
  • ノウハウ
  • 女子部
  • キャリア

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

タグ : Elixir, Increments, Qiita, リアルタイムWeb, 高橋侑久 公開

 

技術情報共有サイト『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次情報にあたること

情報収集はなるべく「ソース」にあたるという高橋氏

情報収集はなるべく「ソース」にあたるという高橋氏

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

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

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

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

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




人気のタグ
業界有名人 スタートアップ 開発 SE 転職 エンジニア プログラマー Web スキルアップ ソーシャル アプリ シリコンバレー キャリア プログラミング 起業 Android スマートフォン えふしん SIer 技術者 UI アプリ開発 Webサービス クラウド btrax スペシャリスト Apple ギーク 英語 CTO Twitter Facebook デザイン 村上福之 IoT Google SNS Brandon K. Hill ツイキャス モイめし 世良耕太 IT 30代 採用 赤松洋介 コーディング UX 20代 勉強会 プロジェクトマネジメント Ruby 中島聡 ITイベント 法林浩之 ビッグデータ Webエンジニア ウエアラブル 五十嵐悠紀 LINE ひがやすを ドワンゴ モノづくり 受託開発 IT業界 ロボット コミュニケーション ハードウエア MAKERS tips ソーシャルゲーム インフラ SI Webアプリ 女性 ゲーム iPhone イノベーション 高須正和 女性技術者 UI/UX トヨタ マイクロソフト iOS 研究者 チームラボ 自動車 ノウハウ システム プラットフォーム 息抜き 和田卓人 グローバル オープンソース メイカームーブメント 開発者 イベント エンジン 教育 ソニー サイバーエージェント Java 女子会 コミュニティ 家入一真 メーカー ソフトウェア スーパーギーク 増井雄一郎 GitHub 人工知能 IPA 音楽 日産 テスト駆動開発 ソフトウエア 40代 TDD ニュース モバイル PHP TechLION

タグ一覧を見る