24
Help us understand the problem. What are the problem?

posted at

updated at

Organization

Elixir生誕10周年の来年、メタバースとAI・ML/データサイエンス、エッジコンピューティング/IoT、リアルタイムフロント、スマホ…これら開発の全てをElixirだけで済ませるんじゃないかな?

この記事は、fukuoka.ex Advent Calendar 2021の25日目です
昨日は @zacky1972 さんの「Pelemayをふりかえる」(https://qiita.com/zacky1972/items/fabfbc651ef21ad81ae4)でした


Merry Xmas :tada:
ElixirImp/fukuoka.ex/kokura.exLiveView JPpiacere です、ご覧いただいてありがとございます :bow:

今回は、来年、Elixirが「生誕10周年」を迎えるにあたり、今年、Elixirに起こったことを振り返り、その状況をいかに活用し、来年を盛り上げるかについて書いてみます

内容が、面白かったり、役に立ったら、「LGTM」よろしくお願いします :wink:

2021年の振り返り:Elixirの今後に激震をもたらす大変動

2021年は、Elixirにとって、良い意味で「激震」の年で、これまで無かった下記のようなテクノロジーが急に「足並み揃えてきた」感があります

来年、Elixir生誕10周年を迎えるにあたり、Elixir創始者であるJosé Valimや、Phoenix創始者であるChris McCord、もしくは関連プロダクトのコミッター達から並々ならぬ気合いを感じます

そして気付けば、Elixirは、低レイテンシやNWサーバ向け、分散、高い耐障害性などのErlang由来の属性に留まらない面積をかなり広げ、今となっては全く別物のような進化の面積で占めつつあります(とは言え、この傾向は2016年のFlowあたりから既に始まっていた流れの延長で、私がfukuoka.ex発足時にゲーム分野やNW分野で無い領域に集中させた背景でもあります)

「Nx」 … 行列操作 & 「Axon」 … ニューラルネットワーク

  • AI・MLライブラリが初お目見えし、GPUを駆動できる環境がElixirに整いました
  • Nxをベースとしたニューラルネットワークライブラリ「Axon」もリリースされました
  • これらを土台としたディープラーニング環境が遂にElixirでも実現されます

「Livebook」 … Web上開発環境

  • JupyterNotebookやColaboratoryと同じフィーリングの開発がElixirでも叶いました
  • Livebook専用のレンダラー「Kino」も、画像/グラフ/データテーブルがとても扱いやすいです
  • これまでElixirのことを知らなかった層からもLivebookのおかげで注目が集まると思います

「elixir-desktop」 … ネイティブアプリフレームワーク

  • ElectronのようなPC用デスクトップアプリの構築が可能
  • FlutterのようなAndroid/iOS両対応スマホネイティブアプリの構築が可能
  • 来年、ここがElixir界隈で熱い分野になる気がします

「Phoenix 1.6」 … SSR WebFWからLiveView中心のSPA WebFWへと進化

  • リアルタイムフロントフレームワーク「LiveView」がPhoenixネイティブとなり、JavaScript無のWeb開発が加速
    • 従来のSSR(Server Side Rendering)も併用できるが、SPA(Single Page Application)開発がより強化された
    • ReactやVue.jsを別立てせずともサーバサイドロジックと共にリアルタイムフロントがコーディングできる
  • 認証ライブラリ「phx_gen_auth」も標準搭載(別ライブラリだったものを取り込み)
    • 認証を含むWebアプリ開発をコマンド1発でScaffoldできるため、ライブラリを入れる必要無く、数分で認証系を配備できる
    • これに伴い、メールライブラリである「swoosh」も標準搭載され、ユーザ登録やPW変更の際のメール送信も梱包された
  • 「WebPack」よりも数倍高速な「esbuild」の採用
  • HEEx(ヒークスと読みます):ReactライクなLiveView記述構文の採用
  • Tailwind利用を標準搭載とする旨の発表

「Fly.io」 … Livebookに特化したElixir IaaS

ワンクリックでLivebookデプロイが完了するUXは、凄まじく未来を感じさせます

https://fly.io/launch/livebook
image.png

Nxとの連動はこれからとなりますが、ここが通るようになれば、ColaboratoryやKaggleと同じようなことがElixirでも可能となる訳です

自身の振り返り:開発キャリアを「Elixirの進化」に変換

今回のコラムをまとめるにあたり、自分のこれまでの40年間のプログラマライフを、下図マインドマップの通り、振り返りました
image.png
(図をクリックすると、マインドマップ作成直後のツイートにジャンプします)

私がElixirに出会ったきっかけは、下記インタビュー記事にある通り、2015年に超大規模案件での性能課題の解決を求めた結果に過ぎなかったのですが、今となっては、あらゆるコンピューティングとプログラミングをElixirで叶えたいという欲求が強くなりました

福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
https://dame.engineer/archives/391
image.png

その結果、直近2年のプロダクション開発においては、リアルタイムフロントのためのReact/Vue.js、AI・MLのためのPython、VR/ARのためのUnity/C#を除くと、Elixirしか触っていないという状況が続いています

更にリアルタイムフロントは、LiveViewをプロダクション採用したことで、React/Vue.jsよりも優先的にLiveViewでの構築をしています

来年は、「2021年の振り返り」で紹介したNxやAxon、elixir-desktop等に乗っかって、AI・MLやスマホ開発なども、PythonやFlutter等に頼ること無くプロダクション採用する方向へ拡げ、

「全てのソースコードをElixirで」

状態にしたい … 私自身の開発キャリアを、そうした「Elixirの進化」に注ぎ込む準備は整った … と考えています

なお、上記で説明し切れていないElixir関連の振り返りとしては、下記3点となります

  • ElixirConf US 2021で海外登壇デビュー
  • 「Elixirスキルシート」を構築し、50名以上のデータ分析によりシートで人材評価可に
  • 自社および他社のElixir案件を多数展開し、30名オーバーの組織化に成功

1つ目は、YouTubeに動画化され、更にノウハウをコラム化していますので、良ければ下記をご覧ください(残り2つも、来年、何らかの形で公開したい)

英語をロクに喋れないプログラマ、AI・MLに支援され、海外登壇でライブコーディングしたら絶賛された ~Elixirで世界進出のススメ~
https://qiita.com/piacerex/items/96efdb1377417f942531

それでは以降の内容は、このマインドマップの大見出しに沿って、来年の活動(もしくは活動の元となるアイデア)について触れていきます

VR/AR等の「メタバース」とElixir/Phoenixの接続

1つの大きな着想として、2020年から続けているVR/AR等、いわゆる「メタバース」が来年から激動の時代へと突入し、そこにElixir/Phoenixを繋げる(コチラも2020年からR&Dを続けている)領域が、私の中では最もホットになっていきます

メタバースとElixir/PhoenixをWebSocketで接続する入門編コラムを昨年、書いています

NeosVR+Elixirで気軽にVR WebSocketプログラミング(VR |> AR投影アプリの裏側)
https://qiita.com/piacerex/items/4d8b23d99434d5a841ca

「NeosVR |> AR投影アプリ」が拓く生活と仕事:人はより「現実」へと出ていき、世界が変わったことを理解する

その先にあるのは、「VRとARがナチュラルに連携できて、行き来できる世界」です … 現実の人間とアバターは混在するし、コミュニケーションも取れると言った具合です
image.png

Microsoft Meshが、コレに近いことをやってきそうですが、HoloLensの高い価格がハードルとなって思ったより進まず、NrealLightのような安価で高性能な後発ARグラスがその脇を通過していく展開は全然あると感じていて、VR側はQuest 2やPico、AR側はNrealLightの組み合わせでマーケットに浸透していきやすいのでは無いかと捉えており、その構成用にプロダクションを進めています

コレが上手く行ったら、「Elixir」≒「メタバースのバックエンドを開発する言語」というイメージをプッシュしていきたいと考えています

Elixirの技術的な面で言えば、WebSocket(それをLiveViewも含む)利用時の24 x 365デプロイは、BlueGreenは条件付きで無いと使えないので、古き良きHotReloadを攻略する必要があり、今までBlueGreenあるから避けてたHotReloadに本腰入れないとなぁ … というのがあります

なお、今年のメタバース活動の方については、下記コラムをご参考ください(Elixirのことにも幾つか触れています)

NeosVRでは既にSFの世界が実現してて、現実の方が「オマケ」になりつつある ~先端VRの「アフターデジタル」な世界へようこそ~
https://qiita.com/piacerex/items/35980fb08662853d6663
image.png

メタバースから使われるAI・ML/データサイエンス

私はNx/Axonが出現する前から、Pythonとの組み合わせ(ErlPort使用)でElixirでのAI・ML/データサイエンスを行ってきました … 下記コラムなどは、そういう領域の入り口について書いたものです

Elixir+Keras=手軽に高速な「データサイエンスプラットフォーム」 ~Flowでのマルチコア活用事例~
https://qiita.com/piacerex/items/c1af7b6ce472db83cff6

BigQueryを攻略する on Elixir:WebにBigQueryデータ表示
https://qiita.com/piacerex/items/4278fa2bdff33ea2cb8f

関数型でデータサイエンス#1:様々なデータをインプットする ※シリーズ物です
https://qiita.com/piacerex/items/f7077f0ff1b1a6c7a959

Elixir+KerasでKaggleタイタニック予測を解いてみた ~UIでデータサイエンスする前処理/MLプラットフォーム「Esuna」~
https://qiita.com/piacerex/items/ab0b32c521293d4ab38e

これまでは、現実上のデータに対してAI・ML/データサイエンスを活用してきましたが、VR/ARに対しても威力を発揮することは分かっています

なお、現実向けに開発したAI・MLは、ARでは、そのまま転用できるという点も見逃せません … 現実とメタバースのAI・ML開発の両立がココにはあります

更に、こうしたメタバースでは、データ取得が現実よりも遥かに容易なため、より高度なデータサイエンスが容易になりやすいという特徴もあります

むしろ私は、AI・ML/データサイエンスの本丸は、「現実」よりも「メタバース」なのでは無いかと思っています

世の中的には、「デジタルツイン」でのAI・ML/データサイエンスが数年前から叫ばれていますが、それもメタバースの1つです
image.png

このようなメタバースでのAI・ML/データサイエンス活用のタイミングが、メタバース方面からも、Elixirツールチェーン方面からも同時に立ち上がっており、来年は絶好のチャンスと捉えています

メタバースと連動するエッジコンピューティング/IoT

この2年間、3D点群処理プラットフォームにおいて、コンピューティングパワーとユーザを分散できるエッジコンピューティング開発を行ってきました

その結果は、スケールアップでは成し得ない凄まじい性能改善と、期待通りの分散作業環境が実現できました

そこで使ったElixirサイドのノウハウの入り口は、下記にコラムとして残していますが、一言で表現すれば、「エッジコンピューティング環境はクラウド設備が無く、そんな中でマトモにやっていける言語はElixirくらいのもの」という結論でしょうか

クラウドの外でエッジサーバを作るためのElixir技術スタック(+立てた予定を仲間と実現できるようになる思考パターン)

もしかしたら、世のエッジコンピューティングが思ったよりも発展していない理由(恐らくはその元となっている人材調達困難な状況)もソコに原因があり、Elixirは強い助けになるのでは無いかと推測しています

来年は、取引先の方々ともお話して、上記案件の中身を公開していこうという流れになっていますので、どうぞ楽しみにしてください

そして、エッジコンピューティングに上述したAI・ML/データサイエンスが接続されると、かなり面白いことが出来るので、ここについての実践ケースも来年は紹介できるといいなぁと思っています

また、IoTの活用により、メタバースと現実を繋ぐ素晴らしいユーティリティ/ユーザビリティが生成できる直感が私の中にはありますが、つい先日、構想をまとめたばかりなので、コレは追々、共有したいと思います

エッジコンピューティング分散の先にある宇宙間通信

もともと、今の事業を立ち上げたきっかけは、エッジコンピューティング分散の先にある「宇宙間通信」を攻略するためだったりします

海外進出を始めた背景も、主にココにあります

そして、私がElixirに見た野望は、Web/スマホ開発や、AI・ML/データサイエンスでは無く、「分散」と「通信」にあります

これらは大学で研究していた「分散OS」の分野で、Elixirにハマったのも、これを叶えることができる希望でもあったからなんです

その先にあるのは、地上での通信では無く、宇宙空間や衛星間、もしくは惑星間における通信です

昨年くらいから、NASAが上記通信全てのベースとなるDTN(Delay/Disruption Tolerant Networking)に関する記事を更新再開している(2012年くらいに止まって以来)ので、これまた良い機会が訪れてるんじゃ無いかと感じます

また、SpaceXやBlueOriginに代表される、いわゆる「ニュースペース」のプレイヤー達が、昨年はとても元気で、「オールドスペース」の牙城を崩しに行っている姿も、励みになります

まぁ、これは完全にポエムですが、電話交換機から始まったErlangの歴史が、Elixirで宇宙間通信へと昇華されるストーリー … なかなかロマンあると思いませんか?

これこそが、マインドマップにも書いている「実現する厨二病」というヤツです :stuck_out_tongue_winking_eye:

Webやスマホ、PCネイティブアプリとの付き合い方

FlutterやElectronのようなネイティブアプリがElixirで構築できるelixir-desktopが来年、Elixir界隈で熱い分野になると想定しています

ちなみに、elixir-desktop以前は、こんなことをしていました

とは言え、LiveViewがリリースから2年経って、やっとプロダクション採用に耐え得る安定状態になったのと同様、elixir-desktopもこなれるまでに今から2年近くはかかる予感がします

ですので、まずはプロダクションへの正式採用では無く、R&Dをスタートしたい(≒R&Dに付き合ってくれる顧客と開発したい)と考えています

なおZ世代は、メタバースよりも、こうした2Dへの訴求が強い点を、以前、分析しました

一口にZ世代と言っても、厳密にはその内訳として、生まれたときにはスマホが無い14~17歳以上は、現実に期待をあまり持っておらず距離を取る「Webネイティブ」であり、生まれる前からスマホがあった14~17歳未満は、むしろ現実とデジタルが上手く融合した「リアルデジタルネイティブ」と、より細分化されます

メタバースに期待が薄いのは、「Webネイティブ」で、これから社会人になる層です

この影響から、今後10年近くは、ブラウザやスマホでの2D UIがまだまだ強い状況が続くのでは無いかと思われます

ですが、こうした「レガシー」ばかり追っていては、未来を築くリードは出来ないので、後進を育成し、彼ら/彼女らに機会をパスしていく選択を昨年しました

現在、見習い層のPJ参画を積極的に行っていますが、それはWeb/スマホ以外の領域に、より私がコミットし、私の周りの良い腕を持っているエンジニア達にもWeb/スマホに留まらないコミットをしてもらいたい … というスタンスから来ています

上記した諸々をドライブする技術コミュニティ

現在、日本のElixirコミュニティは、28箇所もあります

毎月、合計21件以上の勉強会が定期開催され、これはどの言語よりも多い勉強会機会では無いでしょうか?
image.png

その中でも、下記のコミュニティ群は、本コラムで述べた諸々を叶える上で、重要なポジションになっていくと想定しています(いずれも、elixir.jpにSlackチャンネルがあります)

Neos.ex

image.png

LiveView JP

NervesJP

piyopiyo.ex

これら目的特化したコミュニティと、fukuoka.exやkokura.ex、オカザキリンビーム、autoracex、kochi.ex、tokyo.exのような従来Elixirコミュニティとのコラボレーションに、発展のカギのようなものがあると考えており、その促進のために、私がオーガナイズするElixir Digitalization Implementorsを活用していこうと思っています(実際、今年はそういう立ち位置を下記で担当しました)

Elixir Digitalization Implementors

最後に:小さな頃に望んだ世界がやっと訪れた

8bitコンピュータ全盛の40年前、私はコンピュータの中に、こんな「小さな世界」を見ました

その15年後の2000年頃、「マトリックス」で想像した世界は叶いました … ただし、映画の中だけで …

小さな頃に想像したコンピュータの中の世界は、全く叶っておらず、私は正直、落胆しました

そこから更に20年待ち、やっとその片鱗が見える世界が訪れました

なので、私のコンピューティングの本番は、ここからなのです

来年は、その最初の年になるでしょう(先日のElixirConf US 2021でも、そんなノリの来年の豊富を下記スライドで述べました)
image.png

そんなワクワクと共に、今年を締め括りたいと思います … 最後までお読みいただき、ありがとございます :bow:

さぁ、これで2021年のfukuoka.exアドベントカレンダーはおしまいです

なおElixirのアドベントカレンダーには、下記もありますので、まだご覧になっていないようでしたら、ぜひご覧ください

https://qiita.com/advent-calendar/2021/elixir
image.png

Elixirコミュニティのご紹介

1. ElixirImp : A place to LOVE the buds in Elixir (Elixir実装の芽を愛でる場)
2. fukuoka.ex : Fukuoka local Elixir Community (福岡Elixirコミュニティ)
3. kokura.ex : Kokura local Elixir Community (小倉Elixirコミュニティ)

4. LiveView JP : A place to mob-program in LiveView, LiveBook+Nx+Axon, and elixir-desktop

5. Neos.ex : A place to connecting Elixir and NeosVR to create a new world

p.s.このコラムが、面白かったり、役に立ったら…

image.pngimage.png にて、どうぞ応援よろしくお願いします:bow

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
24
Help us understand the problem. What are the problem?