MENU

【part.2】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた

【part.2】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた

先日、福岡で精力的に活動をしているコミュニティfukuoka.exの中の人に、なぜElixirを推してるのか、どういうスタンスで活動しているのかという話を聞いてきた記事。

ちなみに記事に落とし込んだら、すごい量になったので3回くらいに分けてメイン運営者5名から聞いたお話をお送りしたいと思います。

今回は全3回の2回目になります。

part1はこちら

【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた

fukuoka.exとは?

「fukuoka.ex」は、大量アクセスのあるWeb・APIサーバ構築や、ビッグデータ分析/AI・機械学習向けデータ加工といった、「膨大なアクセスやデータの高速処理」と「高い開発効率」を両立できる関数型プログラミング言語「Elixir」と、そのWebアプリケーションフレームワーク「Phoenix」を福岡で広め、ワイワイと盛り上げていくコミュニティです。

引用:fukuoka.ex ~福岡Elixirコミュニティ~

とのことです。

要は「大量アクセスに対応できて、開発効率が良いから今後Elixir流行るし、盛り上げようぜ」という感じらしいっす。

ちなみにElixirはErlangVM上で動く、2012年に登場した関数型のプログラミング言語です。

 

今回話をしてくれた方々

つちろーさん
プロダクト製作ノウハウを発信する人。カラビナテクノロジー所属。
enぺだーしさん
fukuoka.exの切込隊長。IT界隈の歴が長く酸いも甘いも知っている。

プロダクト製作ノウハウを発信する「つちろーさん」のお話

– 筆者(take2)

まず自己紹介をお願いします!

– つちろーさん

カラビナテクノロジーの「つちろー」です。今はゆじかわさんと一緒にElixirを使って小規模なお客様向けにサービスを作る仕事をやっています。

カラビナテクノロジーに来る前の前職で、fukuoka.ex主催のpiacereさんとElixirに知り合いました。

この度、ElixirでのSIを本職にしようということで、カラビナテクノロジーに転職しました。

転職後は、期待通り、Elixirでの開発に専念している状況ですね。

私は元々、理系の学生とかでもなく、文系の経済学専攻の学生をやっていた時に、授業でやったプログラミングが面白くて、プログラミングをするようになったんですね。

なので、プログラミングを始めたのが20歳くらいですね。

そして新卒の時に、大手SIの子会社に入社して、金融系のシステム開発をJavaでやっていました。

その後、Uターンのために転職して、証券系のシステム開発をするようになりました。

証券系をやっている時に、東証、大証の統合などがあり、トランザクション量がどんどん増え、人間では売買できない速度の処理を体験しました。

Java自体は、IDEの開発環境などが揃っていてコードとしても堅くて好きだったんですが、Javaの耐障害性といった部分に限界は感じていました。

というのも、JavaVMのチューニングとかもするんですけど、システムが落ちた時に、問題のトランザクション以外も一緒に巻き込まれて落ちるんですよね。

– 筆者(take2)

piacereさんと同じような体験をされてきたんですね。

– つちろーさん

そうですね(笑)

そして1年ちょっと前くらいに、コーディングをする機会が減ってきたので、SIerを辞めて、Web開発系エンジニアとしてRuby on Railsを使った開発をしていました。

Rubyは、動的型づけ、インタープリタ型言語、記述的な自由さにより、書く時には気持ち良く、最初にプロダクトをリリースするのは早いんです。

ですが、その一方で、性能面やコーディングの保守性の部分に問題を抱えていたので、実際にミッションクリティカルサービスで動く場合に手堅いかというと足りない部分があると感じていました。

そこでpiacereさんの勉強会で「ElixirならRailsの良さをキープしつつ、性能面は段違い」という特徴を聞いた時に「これだ!」と感じるようになりました。

勉強会を始めた時、最初はコーディングから離れていたことにコンプレックスもあり、なかなかコーディング速度が上がらないなと思っていたんですが、PhoenixではRailsから来ているエコシステムがそのまま踏襲されているので、Webを動かすまでの時間が早いんですよね。

ちょっとElixirの勉強をして、Phoenixの勉強をして、その後、「mix phx.gen~」してみたら、とりあえず動くベージができた、となるので、初心者には達成感を感じやすいシステムになっているなと感じました。

そういうこともあり「これを職に仕事をしたい!」と思うようになり、Elixirを使っているカラビナテクノロジーに転職しました。

– 筆者(take2)

ところでElixirって静的型付けでしたっけ?

– piacereさん

「強い動的」ですね。

コンパイル時に、それなりに型チェックはするけど、Runtimeで通過してしまうのもあるので、より厳しく静的チェックをするためのdialyzerというツールも併用して対処します。

– つちろーさん

それなりとは言え、コンパイルを通した時点でエラーが出てくれる時点でだいぶ有難いですね。

Elixirは、思った以上にエラーを検出してくれるので、純粋なJavaScriptやRubyよりもカチッと書けます。

 

– 筆者(take2)

それではfukuoka.exの中での役割は?

– つちろーさん

私も実際にElixirでプロダクトを作る領域をシェアする役割ですね。

色々なバリエーションの案件をサービスとして作っていく中で、「今時の流行りのWebサービス」であったり、「発注や決済といったバックエンド系の業務サービス」の案件が舞い込んで来るので、色々なコンポーネントの実装実績を日々積んでいます。

私には、「過去Javaの業務系だとこういうコンポーネントを使っていた」という知識に加え、どんなシステムでも必要になる「監査系のシステムの実装実績やノウハウ」が、Elixirをやる前から貯まっています。

生産性を高める上でも、そういった既存のノウハウは再利用していけるので、Elixirに適用した際の事例をどんどん発信していければな、と思っています。

やっぱり、どの言語にも好きな人もいれば、アンチの人もいます。そんな中でRubyでWebを作っている人の内、限界を感じている人がいる時、

「このシステムを別言語や別フレームワークに乗り換えたら、本当に業務に耐えられるのか?業務の導入実績ってどれくらいあるか?」

は、みんな気になる所だと思うんですね。

その点に関しては、Elixirは国内の実績がまだ少ないと思うので、「開発を適用した業務範囲」「稼働サービスの実績」「長期の稼働実績」等も共有して、「こんなにサービス停止しなくて済むんだ。障害が少なくて済むんだ」とエビデンスが示せれば、もっとElixir界隈に人が集まるんじゃないかなと思います。

補足:つちろーさんの今までの登壇スライドをご紹介。

ElixirでSI開発入門「第1回データベース ~トランザクションと主キーカスタマイズ~」
https://speakerdeck.com/wataridori999/elixirtesikai-fa-ru-men-di-1hui-tetahesu)

Elixir入門「第5回:Visualixirで見るマルチプロセス」
(https://www.slideshare.net/piacere_ex/elixir5visualixir

プリミティブ切込隊長「enぺだーしさん」のお話

– 筆者(take2)

まず自己紹介をお願いします!

– enぺだーしさん

enぺだーしです。

普段はフリーランスエンジニアで、一般的にいうところの「基幹系のSI業務」をしています。

具体的には、小規模な企業の受発注業務や販売管理業務のソリューション提供をやっています。

開発も自分で行っていて、販売管理を中心としたERPを開発して、カスタマイズして納品しています。今は、DelphiとOracleで作ったスキームで、20年食べています。

– 筆者(take2)

失礼な話なんですが、Delphiって生きてるんですか?

僕も新卒時代の研修がDelphiでその後すぐにDelphiからWebに載せ替えが起きていたので…

– enぺだーしさん

死んでるんですけど、僕の中では生きてます!(笑)。

なかなかDelphiの生産性を超えるものに出会えていないので(笑)。

開発自体は小学生から始めて、36年前の14歳の時には、ソフトバンク経由でMZ-700のゲームをリリースしました。

その後は、東京で就職。ISDN交換機でアセンブラで書く仕事を経て、Uターン後は、現在と同じ業務をAX、DOS-V機に始まり、NetWare、Windowsと経験してプログラミング界隈の隆盛を見て来ました。

Elixirを始めたのは、DelphiとOracleではそろそろ限界が見えて来たからです。

2014年くらいから自身のWebのシステムを考えないといけなくなり、JavaScriptから勉強し直しました。

オープン系の技術が身について来た頃、勉強会にも顔を出し始めました。

フロントエンドとしてJavaScriptを押さえた後、並行してElixirも試していました。

それが2年前になります。

下火になってきたように見えた去年、fukuoka.exでElixirの勉強会があり、「今更Elixir?」と思いつつも参加してみたところ、圧巻のリサーチに基づいたLT/セッションが行われており、その情熱に打ちのめされました。

その後、何回か参加するうちにコーチ役の募集で参加してから、fukuoka.exの運営に関わるようになり始めました。

– 筆者(take2)

2年前にはすぐ手放したElixirが、去年、感性が合うようになったのは何故なんでしょうか?

– enぺだーしさん

私のビジネス自体がRDB主体だったのに対して、当時のElixirは、商用のDBへの接続が整備されておらず、疎遠になってしまいました。

また、関数型言語の発想が、身についてなくて、挫折したのも理由です。その後、主催のpiacereさんと出会って、言語の選定の考え方に強く影響を受けて、Elixirに再度、取り組み始めました。

休眠中の2年の間に、ライブラリも7,000件から、40,000件まで増え、再帰主体で書いていた書き方も、map/reduce/パイプを使ったスマートな書き方が主流になっており、状況は当時とはかなり変っていました。

その上でElixirを触ってみて、「Flow」と呼ばれる並列処理の記述の簡単さに一番魅力を感じます。

昔はマルチタスクといえば、タイマー割り込みを使ってやっていたので大変でした。

最近、複数言語での並列処理の比較をしたのですが、Goだと250行くらい書く必要があったのが、Elixirだと数10行くらいで済む。

並列処理が簡単に書け、しかも性能を簡単に引き出せる…というのは、長くマイコン時代からプログラミングを書いている人間には、琴線に触れるところです。

– 筆者(take2)

それではfukuoka.exの中での役割は?

– enぺだーしさん

「切込隊長」みたいなものですね(笑)。

OSに近いところや、プリミティブなところを引き受けています。

とにかくシステム面に近い課題があれば、最初に試す役割ですね。

今のホットトピックは、並列・並行処理、あとはOracle接続です。

Oracle接続は、ODBCもあるんですが、ORマッパーであるEctoが使えないという課題がありました。

その解決方法を、fukuoka.exで登壇する2日前に、ウクライナのコミッターが自分の2年前の投稿に対して、「俺のアダプターを使え!」という投稿がありまして、この運命的な流れで2年前の課題が解消され、登壇内容もずいぶんシンプルになりました。

他にも、複数言語並列対決をやった時は、Scala Akkaのプログラムが動かなくて「助けてくれ!」とTwitterに投げたら、Akkaの中の人が10分くらいで書き直してプルリクを送ってくれたこともありました。

外国人と関わりや、他言語の方からのアプローチが多いので、影の外交担当的な役割もあります(笑)

補足:enぺだーしさんの今までの登壇スライドをご紹介。

並列対決 Elixir × Go × C# x Scala , Node.js
(https://www.slideshare.net/YoshiiroUeno/Elixir-go-c-x-scala-nodejs

ElixirからOracle接続
(https://www.slideshare.net/YoshiiroUeno/Elixiroracle

まとめ

これで5人中4人までのインタビューが終わりました。

お二人とも、Elixirの性能面、並列処理の記述の容易さに惚れ込んで使われてる印象ですね。

次回で最終回となりますが、最後までお付き合いください。

こちらは前回のfukuoka.exで撮影した集合写真になります。

p.s.

4/27(金)からfukuoka.exコアメンバー+有志で、「季節外れのElixir or Phoenix Advent Calendar」をスタートされるそうです。

Elixir入門者/プログラミング未経験者向けの優しいコンテンツから、

今のElixirには無いマニアックな研究ネタまで、毎日配信予定とのことでした。

「みなさんから『いいね』をたくさんもらえたら、他のカレンダーでの続編もするよー」だそうですw

https://qiita.com/advent-calendar/2017/elixir-or-phoenix

(取材日:2018年3月30日)

【関連記事】

コメントを残す

メールアドレスが公開されることはありません。

カテゴリ最新記事

WEB+DB PRESS Vol.103をみんなで読む会 #0@福岡