【part.3】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
先日、福岡で精力的に活動をしているコミュニティfukuoka.exの中の人に、なぜElixirを推してるのか、どういうスタンスで活動しているのかという話を聞いてきた記事。
今回で全3回の3回目となり、最終回です。
最終回ということもあり、今回のインタビューに参加していただいた5人の集合写真から始めたいと思います。
1回目、2回目のリンクはこちらになります。
【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
http://dame.engineer/archives/391
【part.2】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
http://dame.engineer/archives/414
fukuoka.exとは?
「fukuoka.ex」は、大量アクセスのあるWeb・APIサーバ構築や、ビッグデータ分析/AI・機械学習向けデータ加工といった、「膨大なアクセスやデータの高速処理」と「高い開発効率」を両立できる関数型プログラミング言語「Elixir」と、そのWebアプリケーションフレームワーク「Phoenix」を福岡で広め、ワイワイと盛り上げていくコミュニティです。
引用:fukuoka.ex ~福岡Elixirコミュニティ~
とのことです。
要は「大量アクセスに対応できて、開発効率が良いから今後Elixir流行るし、盛り上げようぜ」という感じらしいっす。
ちなみにElixirはErlangVM上で動く、2012年に登場した関数型のプログラミング言語です。
今回話をしてくれた方々
ZACKYさん
Elixirの心臓部を作り直すチャレンジ中の人。北九州市立大学で准教授をされているそうです。
|
Elixirの心臓部を作り直すチャレンジ中の「ZACKYさん」のお話
– 筆者(take2)
まず自己紹介をお願いします!
-ZACKYさん
北九州市立大学でプログラミングを教えている山崎進と言います。
僕も幼少の頃からゲームプログラミングに明け暮れていていました。
高校の時はコンピュータ研究会の部長をやっていて、健康診断でBMIを計算する係を与えられていたので普通に数字を出すのではなく、3Dのワイヤーフレームで数字が回るものを作ったり、ストリートファイターⅡが出る1年前にアセンブラでメモリーのバンク切り替えを相当駆使して、64×64のドットでデカキャラを動かす格闘ゲームを作りました。
他にも、格闘ゲームのBGMを鳴らすために、自作の曲を鳴らすプログラムでやはり割り込みを駆使していました。
その後、大学受験に失敗してしまい材料系に進学して、プログラミングもほとんどせず遊んでいました。
いざ就職となったタイミングでゲームプログラマになりたかったんですが、ゲームプログラマになるには作品を提出する必要があるんですね。
そこで「あー、作品作ってなかったな」と断念してしまったわけです。
結果、大学院に進学することとなり、無事受験し、合格し、OSの研究をすることができました。
大学院でOSを選択した理由ですが、高校時代に割り込みのプログラムを書こうとした時、滅茶苦茶、苦労したんですね。
多分、3Dのプログラミングやデカキャラより苦労しました。
なんで苦労したかというと、デバッグが大変なんですね。
すぐクラッシュするんです。
その体験をするのはもう嫌だな、と学部生の時に図書館でふと手に取った本が、ITRONっていうOSの本でした。
ITRONっていうのは、車や家電製品といった組込みシステムに使われていたOSで割り込みとかを、凄く楽に使えるようにするコンパクトなOSなんです。
「これを使えば楽できる」と思ったんですね。
その後、いくつかキッカケがあって、研究分野をコンパイラとかのプログラミング言語処理系にスイッチするようになり、紆余曲折あり、プロダクトラインという技術の研究で、ソフトウェア工学の分野の研究をしたりして、2007年に北九州市立大学に転職しました。
2007年から現在までプログラミング言語処理、OS、ソフトウェア工学、組込みシステムと色々な授業を担当するようになりました。
– 筆者(take2)
最近だと、どんなものを研究されてるんですか?
-ZACKYさん
2016年にZackernelというカーネルを作りました。
Linuxは「LinusのUNIX」なので「Linux」なので、それぞもじって「ZACKYのKernel」で「Zackernel」っていうわけ。
そのZackernelというのは、何かと言うと、Node.jsと同じ原理のものをC++で書いたもので、500行くらいで機種依存コード、アセンブリコード無しで、マルチタスクができるカーネルなんですね。
僕が言うのも何ですが、Zackernelは割り込みが超洗練されている感じなんですよ。
細かい話は省略しますが、割り込み無しで割り込みと同じ処理が出来て、並行処理ができるという特徴があります。
Node.jsと同じようにスタックを消費する事がなくなります。
普通、JavaとかでJVMで並列処理をしようとした場合、1スレッドあたり数MB必要になるんですね。
だけど、Node.jsやZackernelは1つのスレッドに相当するものについて、数KBしか必要ないので、ものすごく大量に処理をさばけるという特徴があります。
そこから考えられる研究の方向性が2つあり、1つは組込みシステムの超小さい方向性で、SuicaみたいなIoT向けOSとしての研究です。
もう1つは凄く大きい方向で、超並列で動くクラウドの研究です。
サーバーが落ちるのは、滅茶苦茶、大量のリクエストが来た時にメモリを食い尽くして落ちるんですよ。
メモリを消費しなくて済むというZackernelの特性を生かして、大量のリクエストが来ても捌けるものを作るというものです。
2017年11月に参加した人工知能研究会で、fukuoka.ex主催のpiacereさんと出会い、初対面にも関わらず2時間くらい話し続けたところから交流が始まり、その後、fukuoka.exでの登壇に参加する機会があったりで、僕もElixirに興味を持ちました。
実際に意識し始めたのは、Middlemanという静的サイトの開発フレームワークを使っていた時に、段々とやり込んでいくにつれ、JavaScriptは速いんだけど、Rubyの部分が並列性の問題で遅いのにイライラしだして、どうにかならないかなと思うようになったのがきっかけですね。
Rubyは複数のCPUを使ってくれなくて遅いし、起動も時間がかかるんですよね。
で、やっぱりElixirか、となりました。
– 筆者(take2)
それではfukuoka.exの中での役割は?
-ZACKYさん
僕はこのメンバーでは一番最後発で、2018年の2月からElixirを触り始めたばかりなんですね。
そんな中、piacereさんと話していて、前述のZackernelの知見があるから、Elixirの心臓部を作り直してみない?という話をしました。
今のElixirの心臓部は、「BEAM」って言うので、それをもじって「ZEAM」というのを作ろうとしています。
今のBEAMも、かなりイケているんですが、それをさらに超えようとしています。
ZEAMの心臓部には、Zackernelと同じ仕組みを入れようとしていて、それにより耐障害性がもっと上がるだろうし、GPUも使えるようにして、FPGAも駆動できるようにしようと、昔やっていたOSやプログラミング言語処理系の研究者としての血が騒いでいます。
ZEAMの開発は、今後、ユーザ趣向の広がりで増大する企業データ量の増大や、IoTの流行で起きるであろうデータ爆発に備えて、5~10年計画で取り掛かろうとしています。
補足:ZACKYさんの今までの登壇スライドをご紹介。
並列Elixirプログラミングことはじめ〜ZEAMで目指すことは何か
(https://zeam-vm.github.io/zeam-fukuoka.ex-20180420)
fukuoka.exの今後の活動
– piacereさん
fukuoka.ex自体は、福岡でのプロダクト開発やSI案件における、Elixir採用の支援を目的にして立ち上げています。
そういう経緯もあり、実際に動くコードを見せながら、実践的な勉強会をしていくフォーマットを取っています。
都心では、tokyo.exがElixir conf 2017のような形で大きなイベントを打ったり、ハンズオンをしていますが、都心においてのElixirは、まだまだプロダクト開発やSI案件で浸透し切れていない感触が強いので、福岡ではその面を先取りし、国内における実践例や技術情報を提供していきたいと考えています。
今後の予定というところでは、偶数月の「MeetUp」、つまり登壇会+懇親会の開催は引き続き定期開催していきます。
最近は、福岡におけるElixirプロダクション採用事例の紹介であったり、複数言語並列対決、ZEAM開発記など、福岡ならではの活動色を強めていますが、今回インタビューを受けた5人が、「fukuoka.exアドバイザーズ」というコアメンバーとして、各自の専門領域と強みを発揮し、福岡におけるElixir浸透を推進していきたいと思います。
また、MeetUpとは別働で、「もくもく会」を毎月開催にしていきます。
福岡で、Elixir/Phoenixに興味を持ったプログラマ/エンジニアが、気軽に学びに来れて、同じくElixir/Phoenixを学ぼうとしている方と交流できる場として、利用していただきたいですね。
更に、大量データを活用するデータサイエンス領域でも、Elixirの高生産性と高性能で容易にデータサイエンスプラットフォームが構築できる、なんてノウハウも提供していこうと考えていますし、対面型のMeetUpやもくもく会だけで無く、ビデオセッションやUdemyといった形で、全国に向けても情報発信していきたいと考えています。
こうした活動を通じて、来年の夏くらいまでに、福岡におけるElixir採用企業を100社くらい増やせたらなぁと考えています。
そうなってくると、実際にElixirでプロダクト開発やSI案件をやってみたい方に向けて「福岡に移住しませんか?」という提案が、全国に対して気軽にできます。
その際、相談できるアドバイザーや駆け込み寺として、fukuoka.exがお役に立てると思っています。
まとめ
これで全3回の特集は終わりとなります。
どんな人が大学の先生をやっているのか、Elixirに興味を持たれている方、コミュニティ運営をしてる人がどんな人か気になる方、fukuoka.exが気になる方の参考になれば幸いです。
今回初めてコミュニティに対するインタビューというものを行ってみて、明確に「技術者交流」以上の目標を立てて活動されているコミュニティというのは珍しいなと強く感じました。
福岡には他にも多くのコミュニティがあり、ZACKYさんのような5〜10年計画の壮大な目標を持つ必要はないのですが、何らかの目標を持った方がコミュニティの色を出せるんだろうなという気がしました。
僕もシリーズ物のイベント企画とかはしてるのですが、あくまで「自分が知りたい内容を知れる機会を設ける」という所止まりなので、これを機に「自分の今後の活動にも何らかの影響があると良いな」と思うばかりです。
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日)
【関連記事】
【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
2018.04.19
|
【part.2】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
2018.04.26
|