1. normalize.fm
  2. 011. 人と時代がつながり紡ぐ..
2021-12-15 1:35:13

011. 人と時代がつながり紡ぐコミュニティ

@dorayaki_kun さん(rust.tokyo 運営など)をお迎えして、Rust の コミュニティ運営、コミュニティ運営や継続していくことの難しさ、Rust というプログラミング言語について、Rust と WebAssembly との関わりなどについてお話しました。


* 運営しているコミュニティについての紹介

* 現代のコミュニティ運営における課題や今後

* オフライン・オンライン、イベント開催のそれぞれの良さ

* 憧れの著名な開発者に直に会ってテンション爆上がりする話

* 実際に顔を合わせることで伝わるもの

* Rust という言語とその背景にあるもの

* Rust のエコシステムと開発のしやすさ

* WebAssembly の使いどころ

* 最終的には人がコミュニティを成り立たせる

* Rustプログラミング言語

* Rust.Tokyo

* rust-jp Slack

* WebAssembly/WASI: WebAssembly System Interface

* TensorFlow.js

* Squoosh

* プログラミングRust 第2版


## show notes


* Rust のコミュニティ運営

* コミュニティを運営する理由

* 最近の Rust

* wasm 関連のトピック



00:00
はい、始まりました。ノーマライズFMの今日は第11回になります。
本日はWebのフロントエンドの界隈から関係のある領域のゲストです。
RUSTというプログラミング言語が最近耳にすることが増えてきたと思います。RUST東京やRUSTのLTのオンラインイベントを運営されているドラヤキさんにゲストに来ていただいています。
ドラヤキさん、本日はよろしくお願いします。
よろしくお願いします。
RUSTは過去にトライしたことがありますが、そこまで詳しいという領域までは踏み込めていないので、その辺りの話やコミュニティを運営されているという意味でも色々と面白いお話を聞けると思います。
では早速本編を始めていきたいと思います。
[音楽]
はい、そうしましたら早速なんですけども、ドラヤキさんの自己紹介からお願いしてもよろしいでしょうか。
はい、ドラヤキと言います。Twitterでドラヤキくんとか、あとGitHubでもドラヤキくんというところでアンダースコアがあったりなかったりちょっと揺れちゃっているんですけど、
普段はRUSTっていう言語のコミュニティ運営ですね。
例えば、RUST JPSlackっていうのがあるんですけど、そこの一応管理者もやらせていただいてますし、
その他だと、RUST LTっていうオンラインのイベント、もともとはインパーソンというか人が集まってのイベントだったんですけども、
ちょっと去年ぐらいから皆さん多分今特別なシチュエーションにいると思うんですけど、そういう状態の中でオンラインでやりましょうということで、YouTubeでやってたりします。
その他にも、これももともとインパーソンのイベントだったんですけど、RUST TOKYOというイベントがあって、一応これは多分アジア圏だと結構大きめのRUSTのイベントの一つだと思うんですけど、
日本国内に留まらず世界中の人に集まっていただいて、RUSTの話を聞くって回をやっていて、今年も開催していて、
03:01
今年は多分10月とか9月、9月ぐらいにやらせていただいたんですけど、そこは今回初めてオンラインでやるみたいなことをやってます。
それ以外にもたまにTwitterのスペーシズでガラス棒さんという方と一緒にやらせていただいたりとか、
何かしらRUSTのエヴァンジェニストというとそこまで大したものではないんですけど、RUST使うと面白いですよみたいな話をさせていただいてます。
ちょっと今喧騒もありましたけど、私の中では結構第一日誌的なイメージがありますけどね。
日本でRUSTを普及活動されているというか、いろいろなイベントも主催されてて、
実は私も参加者として参加したことあるイベントがたくさんあって、
そういう意味では私からすると結構すごい人っていうイメージがありますね。
そうですね、RUSTの権威役っていうと、自分よりチコさんという方がいらっしゃって、
Twitterで多分チコ好きって探していただくパンダのアイコンの方がいらっしゃるんですけど、
チコさんがやっぱり日本におけるRUSTをすごい牽引してくださった方だと思ってて、
RUSTって結構1.0になったのが最近の言語なんですね。
多分5,6年前、2014年とかそのぐらいだと思うんですけど、
その前、0.なんかの時に、これちょっと面白い名前なんですけど、
RUST ZAMURAIっていうコミュニティがあったんですよね、昔。
はい。
映画のRUST ZAMURAIと、RUSTをかけてるんだと思うんですけど、
そのRUST ZAMURAIを当時、牽引してたのがチコさんで、
1.0になったタイミングで、そのRUST ZAMURAIっていうのを1回解散してるんですよね。
うんうんうん。
その解散して、元々のメンバーだったらチコさんだったりとか、
RUSTで結構ずっと有名な人として、KEENさんっていう方がいらっしゃるんですけど、
今、KEENさんってカッパのマークのアイコンの方なんですけど、
あれは多分、KEENさんの、KEENの最初がキリル文字のカッパなので、
あー、なるほど。はいはいはい。
なんで多分カッパなんだと思うんですけど。
そうなんだ、知らなかった。なるほど。
そう、KEENさんよく見るとKじゃないんで、カッパなんで。
あ、そうなんだ。ずっとKEENって普通のアルファベットのKだと思ってました。
なんで、たまにKEENさんに冗談で「いや、Kじゃないですよ」って言うと、
知らない人に対してちょっと冗談めいておっしゃる時あるんですけど、
06:02
KEENさんとかチコさんが運営させてくださってたんですね。
で、僕も途中からラストLTにジョインして、
今は結構、僕も積極的に活動に参加させていただいてるっていうのが、これまでの流れですね。
うーん、なるほど。なんかその途中からっての知らなかったです。
もう最初から結構本当に、コミュニティのホッキにみたいな感じなのかなって勝手に思い込んでました。
そんな恐れ多いですね。
いや、そういうわけじゃないんですね。
そうですね。なんかどうですかね。
多分、僕ちゃんとメンバーとして一緒に動き始めたのが、多分2000…何年だろう。
16年とか7年とかかな。
なんかあの、もともと僕もDoxasさんと同じで、
なんか一位参加者の一人だったんですけど、
なんか一時期そのイベントが続かない時期があって、ラストのイベントが。
なんか半年とか1年とかないという時期があって、
なんか手伝えることありますかっていう風にちょっと、
あの当時ののびすけさんって方が結構運営に関わってくださったんですけど、
のびすけさんに確か、手伝えることありますかっていう話を持ちかけたところ、
全然手伝ってくれるならウェルカムですって話をいただいて、
そっからちょっと一緒にこうやっていくことが増えて、
まあ今に至るって感じですね。
で、途中であの今ユキさんっていう、ハローユキさんっていうアカウントの方いらっしゃるんですけど、
もう途中でジョインしてくださって、
最近だとあのTカトさんって、もともとラスト東京の登壇者の一人だった方なんですけど、
今年からジョインしてくださって、いろいろ盛り上げてくださってるって形で、
結構的々、まあ代替わりではないんですけど、
新しい人もちょいちょいこう、
あの節目節目で入っていただいて、
徐々にこう盛り上がってきてますって形ですね。
いやめちゃくちゃいいですね。
やっぱそういうなんかこうイベントを運営していくっていうのは、
やっぱ続けていかないとなかなか、
そういうふうに人が集まってくるというふうにならないし、
続けていくのってねすごく大変だろうなって思うので、
なんかその辺すごい見習いたい、見習わなきゃなって思っちゃいますね。
いやいやいや、あのドクサスさんもだいぶその、GLスクールもずっとやられてるイメージがあるんで。
そうですね。
まあやってますけど、あれはなんて言うんだろう、
そのあんまりオープンな感じのコミュニティっていうのとはちょっと違うから、
またちょっとね、違うかもしれないけど、
WebGLとかは、最初の頃はよくイベントもやりましたけど、
最近は本当に全然やられてないんで、
そういう意味では、そのラストのコミュニティ見てると、
本当に定期的にやってるじゃないですか、イベント。
09:01
だから、特にあのLTのやつとかもね、
その、一個一個のイベントとしては結構ミニマムというか、
そんなに大きなイベントとしてはやってないと思うんですけど、
まあでもああやって知見のある方々を呼んで、
短く喋ってもらって、みんなで共有してっていうのはね、
すごく手軽に見れるし、いいなーって、
いつも旗から見ていてちょっと思ってる部分はありましたね。
ありがとうございます。
ちょっと正直、試行錯誤の面はやっぱり強くて、
多分独卒さんもちょっと心当たりあるんじゃないかなと勝手に思っているんですけど、
やっぱりちょっと今の状況下だと、
その、何て言うんですかね、
参加者同士のコミュニケーションってとこにすごい課題感があって、
そうですね。
あの、どっかの会社さんに場所をお借りして、
なんか勉強会を開いてた頃って、
大体懇親会みたいな、そういう、
あの、催しがあって、
そこでその、あそこで話題に上がったこれってどうなったんですかとか、
この辺で困ってるんですけど、
なんかそちらどうですかって、
そこでなんか仲良くなるみたいなのがあって、
そこの繋がりがこう、また別の仕事だったりとか、
イベントだったりに繋がってってのが良さの一つだったのかなって、
僕は思ってるんですけど、
結構YouTubeでそれがとても難しくて、
そうですね、そうですね。
いや、あの、懇親会を通じてこう広がるものってやっぱありましたよね。
ありましたね。
なんで、まあ、その、
対面のコミュニケーションのこう難しさってのはもちろんあって、
僕もそんなにこう、対人コミュニケーション得意な人ではないので、
なんかこう知らない人といきなり話せって言われたら、
まあそれはそれでもちろんストレスを感じてしまうこともあるんですけど、
一方でなんかこう不意の出会いというか、
そういう面はあったので、
そこ再現できないかなってことをちょっと考えていて、
ちょっとやれてないんですけど、
よく考えてるのがスパーシャルチャットっていうサービスがありまして、
だからちょっと変わったそのチャットツールで、
スパーシャルで発音が正しいかちょっと自信ないんですけど、
スパーシャルって英語で空間とかそういう意味なんですけど、
アイコンがあって、それがこう画面の中で、
こう距離が近くなると人の声が聞こえて、
離れると人の声が聞こえなくなるみたいな感じなんですよね。
で、そこにYouTubeの動画とかも一緒に投影することができて、
なんかその擬似的に勉強会行ってるみたいな状況を再現できないかな、
みたいなのはちょっと考えてるんですけど、
ちょっといろいろこうそれ用意してちゃんと使ってもらえるのかとか、
12:04
定期的に例えば使おうと思うと、
費用がかかったりとか当然すると思うので、
それをどう運営していくといいのかとか、
いろいろ課題事項があってまだやれてない感じですね。
いや、わかります。その気持ちすごいわかります。
やっぱ私の場合も同じように、
そういう距離をちゃんと感じられるチャットツールというか、
音声も込みでコミュニケーションをとれるツールみたいなの、
結構検討したこともあるし、調べたこともあるんで、
なんとなくおっしゃりたいことはよくわかるし、
やっぱどうしてもすごく費用がかかっちゃったりとかしちゃうんですよね。
ちゃんと運営していくのが難しいというか、
なかなか善意だけで、個人の善意だけでどうにもならない領域に入ってきちゃうというか、
結構難しいですよね、その辺り。
そうですね、ちょっとこの後話すかわかんないですけど、
ちょっとその辺もやっぱすごい課題感を感じているところがあって、
やっぱりWebGLにしろRustにしろ、
ちゃんとしたコミュニティ作るのってとても難しいなと思っていて、
ちゃんと組織立たないと成立しない面がどうしてもあるなと思っていて、
ただそれを新しい言語とかサービスとか増えるたびに、
有志の方が毎回頑張ってゼロスタートでやるのかってところにはすごい課題感がありますね。
そうですね。
やりたいことってそれじゃないですもんね。
単純になんか面白いよねっていう気持ちを共有したいだけだと思うんですよ、多くの人は。
なんだけどそれのための最初のハードルが高すぎるなって。
そうですね、確かにそうだな。
やっぱりどうしても今だと誰かが見起きらなきゃいけないというか、
一部の人が他の誰よりも頑張ることによって無理やりコミュニティが成り立っているみたいな感じにどうしてもなりがちっていうのは確かにありますよね。
なのでそうですね、そこはみんな、私たちもそうですけど、それなりに工夫してちゃんと無理がないようにとはやってると思うんですけど、
やっぱり初期参入のコストとかそういうのは絶対高いと思うし、
例えば任意団体作るためにどうしたらいいんですかとかそういうのあったりすると思うんですよ。
個人事業主だったら困らないこともあるかもしれないですけど、何かしらの団体作りたいときに任意団体ですかとか、一般社団法人ですかとか。
そうですね。なんかやっぱこのあたり、我々はたまたまWebGLとかラストみたいなあれがありますけど、どんなコミュニティでも同じ問題を抱えてそうな感じはありますよね。
15:09
そうですよね。なので、なんかこう、ざっくり上位概念みたいな組織がすでにあったりすると乗っかれたりするかもしれないんですけどね。
例えばなんかJavaScriptっていうなんかすごい大きなくくりがあったら、そこにあのアイドリーさせてもらえませんかっていうコミュニケーションもできるんですけど、
これからじゃあなんかすごい新しい考えとかなんか言語とか出たときにじゃあ作りますってときに、多分その第一人者の方が作らないといけなくて、
そこのなんか参入障壁ってなんか下げれないんだっけっていうのは結構最近よく思ってるところですね。
なるほど、なんかすごいですね、その私の中ではラストの人っていうような感覚がちょっとありましたけど、そんななんかいろいろな深いところまで普段から考えてらっしゃるなんてすごいですね。
そんなことない、そんな高尚な人間じゃないんで。ただなんかあの、ドクサスさんしかりなんですけど、なんかやっぱ不思議とそのコミュニティというかなんかイベントを盛り上げてる人たちって何かしら情報交換するんで、
自分だと結構JavaScriptの界隈の人と結構距離が近くて、Node.jsの方だったりとか、TypeScriptの方とか、あとReactとかその辺のなんか運営の方とちょっとお話しさせていただく機会とかをいただくことがあって、
やっぱりなんかこう似たようなところで困ってるなとか、特にそのTypeScriptとかReactとかっていうのは結構また僕らと同じで、比較的新しい考え方だったりとか言語だったりするので、結構困ってることも似てるなーっていうところで、
まあなんかもう予想できるじゃないですか、新しい言語とか出てきたら多分僕らと同じこう道を歩むんだろうなっていうところが、なんでちょっとあれですよね、こうなんか同じ鉄は踏んでほしくないなっていう気持ちはみんな、皆さん持ってるんじゃないかなって思う。
確かになんかそういうコミュニティ運営のノウハウみたいなものって、どこにも誰もなんかなかなかまとめるにもまとめるの難しいような領域だと思うし。
ですね、そのものによってはなんかオープンに相談できない内容も多分あると思うんですよね。そうですね。なんで、どうしても例えば僕だったらその独卒さんにこれって僕らこういうふうに困ったんですけどどうしてましたっていうのを多分なんかダイレクトメッセージとかで多分やり取りすると思うんですよ。そうですね。
一生表に上がってこないと思うんですよね、そのやり取りが。そうですね。確かにな、それをね、また私の立ち、その聞かれた側の立場としても勝手にまとめるわけにもいかないしね、そこら辺確かにちょっと難しそうですね、なんか。
18:15
やっぱ確かにおっしゃってた通りモデルケースというか、これを見習ってとかこの人たちと一緒にみたいな、なんかわかりやすい指標があればまた違うのかもしれないですけどね。そうですね。なんか難しいんですよね。だから。
まあ勝手にちょっと妄想していることだと、そのLinux FoundationとかみたいにそのなんかJapan Programming User Associationとかなんかそんなのがあって、そこにこう登録すると、
あのー、こう看板を貸していただけて、そこ経由でなんか各種経費生産ができるとかそういうのがあると、なんか楽なんだろうなと思うんですけど。確かにあったら超便利かもしれない。まあそれはこのなんかイベント運営をやった側の人間の視点から見るとになっちゃいますけど、
確かにそういうのあったら良さそうだなぁ。まあ誰が代表するのかとか、再現はどこから取るのかとかいろいろ問題はあるけど、まあそうかなとは思いますね。確かにね、そうだよね。まあだから我々も結局ね、どんどん歳をとっていくわけで、コミュニティはやっぱり
新陳代謝と言うと大げさですけど、新しい人たちがどんどん入ってきてくれないと成立していかなくなっちゃうし、特にWebGLなんかは本当にまさにそんな感じですよね。なんかずっと私が先頭に立っちゃってるみたいな、まあこれちょっとうぬぼれと捉えられちゃうかもしれないけども、
そのなんかこうWebGLって言ったらこの人みたいなのがあんまり変わり映えがしないまんまずっと長い年月が経っちゃってるのかなっていう、なんか憂いみたいなのが私の気持ちとしてはあったりするんですよね。
だけど、とはいうWebGLがじゃあ今後どうなっていくかを考えると、まあこれから、例えばタイプスクリプトとかラストの場合はこれからまだまだ進化していくというか、
変わっていくと思うんですけど、WebGLってこれからめちゃめちゃ変わっていくかっていうと、まあそんなに変わらないと思うんですよね。
なのでそういう意味では、まあここに両足突っ込む若者がいたら逆に、もしいたとしたら逆に心配になっちゃうかもしれないし、難しいなとは思っちゃいますよね。
いやー、まあその難しいですよね。その、なんだろうな、そのドクサスさんの場合はちょっと特殊だと思うんですけど、
特に例えば僕の場合で言うと、こうラストの位置こう、なんかユーザーとして優秀かっていうと僕はそんなに自信ないんですよ正直なところ。
だけどそのラストのそのユーザーコミュニティの形成に力を稼げるかってところであれば、まあ多少あれかなと思っていて。
21:10
そのドクサスさんの例えばそのイベントとかそのコミュニティ運営ってところでの後継者の方がそんなにこう増えてないかもってのはそうかもなって思うんですけど、
一方で結構プレイヤーはすごいそのWebGLスクールとかそういうところで増えてるのかなーって自分は思っていて、なんかその辺こう難しいですよね。
その単純にこう、例えばWebGL好きですっていう人の数が増えることとそのコミュニティがちゃんと続けていけるかってことはちょっとまた別問題だと思ってて。
そうですね。
そこはちょっとむずいなと思っててね。
確かにそうですね。
まあ確かに使い手は増えてるかもしれないですね。まあそれが私のおかげとは思ってないですけど、そのドラヤキさんがね、あの昔スクールに参加してくれたことがありましたけど、結構前ですもんねあれ。5年とか経ってますかね。
5、6年前ですね。
経ってますよね。
だから多分相当前だと思うんですけど、まあそもそもその私とドラヤキさんの最初の接点はそこだったのかなって思い返してみると思うんですけど、あの頃と比べると単純にその新しい技術だから興味を持ってっていうことよりもなんか仕事で必要になったからみたいな、そういう理由でスクールに来ている人の割合が多分増えていて、
世界的にもこう、いろいろなハードウェア上で安定して動くようになってきたんで、まあ導入事例も単純に増えてきていて、まあ日本でも単純にね、その時間の経過とともにだんだん浸透してきたっていうことだと思うんですけど、確かにプレイヤーというか使えるあるいは使いたいっていう人が増えてるなっていうのは私も感じてはいるんですよね。
ただ一方で、なんかその最初の頃みたいに目新しさがどんどんなくなってきているので、なんかこうイベントやるぞみたいな空気になかなかなりにくいっていうのはちょっと最近あるかなと思いますけどね。
やればもしかしたら人集まるのかもしれないけど、単純にその私の代わりにそれをやってくれる人は今のところいないなっていう感じのところはちょっとありますかね。
うーん、まあそうですよね。なかなかそのいい意味でWGLが枯れてきたんで、多分なんかイベントやるにしても多分今までの切り口だと開けにくいのかなと思っていて。
多分その実装のより具体的な方法とか。
あ、ですよね。
そういう感じのことになってくるのかな。そのWGLはどういうものですよみたいな話はもう特にする必要はなくて、やるならこういうテクニックがあるよとかなんかそういうもっとより具体的な話をするっていう形の勉強会みたいな感じのやつだったら多分人結構集まるかなと思うけどね。
24:01
そうですね、なんかこうめちゃめちゃ適当に言っちゃうんですけど、その効率的なこうシェーダーの分割方法とか、なんかその処理分散の方法はこうするべきだとか、なんかどうだろう。
SIMド使った場合とか、WASMド使った場合どう積み分けるんだとか、なんかそういうなんかこう格論的な話をもっと聞かせてくれみたいな人は結構いらっしゃるんでしょうね。
多分そうですね。かなり一般的なウェブの開発の話よりも結構そういうちょっと尖ったトーク内容の方が喜ばれるんでしょうね。今で、もし今やるとすれば。
MJLはもうあれですね、そういう意味ではちょっとラストとはコミュニティと言ってもちょっと若干雰囲気は違うかもしれないですけど、でもやっぱりその運営の難しさみたいなのは確かに私も結構感じることがあるんで、今のお話はいろいろうなずけるところが多かった話でしたね。
ちなみに今はYouTubeで、LTとかで配信されてると思うんですけど、違うツールを使ってやってみようとかいろいろ考えてはいるってさっきおっしゃってましたけど、今のところは定期的にやっぱり開催して、しばらくはまた継続して開催していけたらなみたいな感じですか。
直近の先々の展望で言うと。 そうですね、なんか完全にこれはまだ頭で考えてるだけなんで、確約はできないんですけど、今んとこはその各月で確実にやろうとしていて、多分次が来年の1月かな、やる予定なんですけど、
多分YouTubeでしばらくは例えば3月とか5月とかまではやるかなと思っていて、それ以降が正直に言うと悩んでいるところで、物理の環境ではやりたいなとは思っているんですけど、
オンラインならではの良さっていうところをやっぱり捨てれないなと思っていて、例えばなんですけど、多分九州とか大阪とか、フィジカルに遠い人が参加してくださってると思うんですよ。
それは確かにオンラインの良さとしてかなりでかいと思います、私も。 なんですよね、そこを担保するために理想を言うと、ハイブリッド、オフラインのイベントを開きつつその状況をオンラインで映すみたいなのことをやりたいんですけど、
僕が思いつく限りで大きく2つ問題があって、1個が集客できるのっていうのがまずあって、オンラインで楽なのって何も遠い人ばかりではなくて、近い人も例えばご家庭があって、あんま外に出れないんですよって方もいらっしゃると思いますし、
27:11
単純に仕事忙しくて、抜けれないから、あんまり良くないんですけど、仕事中に見ながら仕事もできるみたいなことがあって、それだったら参加するけどって人も多分結構いらっしゃる。
2つ目の問題としては、どう放映するかって問題で、YouTubeに放映すると簡単にその録画と配信を同時にやれるんですけど、物理の環境だとカメラって例えばどうするのとか、カメラじゃなくてもいいんですけど、
教養のPCとか用意して、そこからブロードキャスティングしていくのかとか、ちょっといろいろな問題があって、そこをどうやってクリアするんだっけってところがちょっと悩んでるとこですね。
そうっすよね。これは全然別に参考にしてもらおうという意図で喋るわけじゃないんですけど、WebGLスクールとかGLSLスクールもその問題がまさにあって、コロナウイルスが名前が頻繁にニュースで目にするようになったぐらいのタイミングが、
ちょうど2年前のWebGLスクールの開催時期と重なってたんですよね。だからもしこのパンデミックが本当にひどくなっていくんだったらちょっとリモートでやるしかないかなみたいな空気で悩んでた時期があったんですよ。
その時に私が考えたのは、もう全部機材を揃えて撮影している様子をリアルタイムに配信するしかないなって思って、カメラとかマイクとかもう全部買いましたね、当時。
で、その会場に実際に使わせてもらう会場にお願いして、ちょっと1時間ばかり会場を貸してくれって交渉して、全部Wi-Fiとかのアップロードする速度は本当にこれで、このWi-Fiで、ここの施設のWi-Fiで大丈夫なのかとか全部チェックして、
これ一人でやるのかなり無理ゲーだなって思いながら、まあでもとりあえずお金もらってスクールやるんだから、俺が頑張らなきゃと思って全部チェックとかやったんですけど、結局、まあその、本当にいよいよ流行が始まってしまった感じだったんで、
最終的にはもう家から普通にYouTubeで配信っていう感じになっちゃったんですけど、うん、やっぱ全部一人でやるのは相当熱い展開になりますね。もう会場入りを1時間ぐらい繰り上げないとまず無理で、
もう早めに行って三脚立ててとか全部準備して、画角も決めて、音も拾えるかマイクもチェックしてみたいなのを一人でやると、まあだいぶきつかったですね。
そう、だから多分もしそれやるとしたらやっぱり一人じゃなくて、コミュニティというかその運営チームみたいな感じにしてやらないと結構きついかなっていうのは感じますね。
30:07
そうですね、だから本当におっしゃる通りだと思います。今のオンラインだったら、その私がこう、まあパニックになるかもっていうリスクを目をつぶれば一人でできるんですよ。
そう、それもわかる。なんか喋る本人のね、メンタルな部分とかも実際は結構大変だったりしますからね。
はい、あのね、配信のこうトラブルに対応しながらこう普通に司会をするってまあまあメンタルにはくるんですけど、
わかる、まあまあ大変ですよね。それは。
まあできるかできないかって言っちゃえばできちゃうので、まあそこはオンラインの強みで。で、まあオフラインだとじゃあ一人で運営できますかって言ったらまあ無理ですね、一人は。
うん、無理ですね。受付とかもやらないといけないしね。
そうなんですよね。そう、なんかセキュリティとかいろいろ考えないといけないし、その、いろんな参加者の方いらっしゃるんで、その例えば学生さんとかだったら、その細かいところだとその時間を気にしてあげないと多分ダメで、親御さん心配しちゃうからとか、
そもそもあの、党の条例的にあのダメな時間とかもあったりするんで、そこも気にしないといけなかったりするので、なんかその、なんだろう、個人で回せるからって言ってそこをおろそかにしていいわけじゃないので、そうするとやっぱり最低限必要な人数ってのはやっぱ決まってきて、一人じゃイベントは開けないよねってなっちゃうのかなって思います。
うん、そう、だから私もなんかもう、そのカメラの話とかも、ちょっとまた話戻しちゃうんですけど、結局それはやらないですんで今にはいたってるんですけど、もしあのまんま、その教室で講義をしながらそれを同時に配信もしてみたいな感じのことをやらなきゃいけなくなってたとしたら多分、誰か手伝ってっていうふうに多分なってたと思いますね。
やっぱりちょっとそのリスクがでかくなっちゃうというか、何かあったときに運営がままならなくなっちゃう、例えばその映像が配信されてませんでしたみたいな機材トラブルが起こってましたっていうのを全部しゃべり終わってから、講義が終わってから気がついちゃったりとかしたらね、ちょっとそれはやっぱ問題があるわけで、なんかそうなるとやっぱり一人じゃできないなっていうのは思いますね。
今はスクールの方も動画として配信してみてもらうっていう感じになってるんで、私がテンパったり死んだりしなければ一応続いてはいくんですけど、まあでもやっぱちょっとメリットは確かにあるんですよね。
33:01
日本でもそれこそ海外に至って見れるわけだから、それは確かにメリットなんですけど、まあでもやっぱこの人に実際に会えるっていうのもあるじゃないですか、オフラインの醍醐味として。
そうですね。
憧れのあの人に挨拶できるよみたいなのもあったりすると思うんで、オフラインでやれるんだったらね、やりたいなっていうのはやっぱりちょっとありますよね。
そうですよね、なんかその、やっぱ会えることは全然違いますからね、なんかどうなんだろう、その本当にその界隈になんか有名な人とかを実際に目で見るとなんかまあ軽くやっぱアイドルに会ったようなテンションですよね。
なるなる、普通になります。これ本物だってなりますよね。本物を目にしてしまったっていう興奮がありますよね。
そうですね、なんかその自分も1回だけその海外のイベントに行ったことがあって、そのJS ConferenceのEUに行ったことあって、そこやっぱそのヨーロッパ圏なんで、なんかそれこそあのMDNのブログとか書いてるなんかすごい有名な開発者とかなんかその辺普通に歩いてるんで、
はいはい。
おお、じゃあさすがになりますよね。
なりますよね。いやーわかります。私もやっぱりありますいっぱい。そういうなんかイベントに参加したことによって初めてその、例えばわかりやすいのだとMr. Doobとか、やっぱりそのイベントに行かないと会えない人、普通にこうお家にいては会えないじゃないですか、やっぱり。
はい。
でもイベントでね、見かければもちろん勇気を出せば話しかけることもできるし、Mr. Doobと握手したりこう一緒に写真撮ってもらったりした時はテンション上がりましたよ、本当に。
そうだと思いますよ。各界隈でやっぱ有名人いらっしゃるんで、なんかみんなやっぱ会うとテンション上がるのか、みんなこう肩組んで写真撮ってます。
うん、撮ってますよね。確かにね、なんかそういうのはやっぱオフラインイベントならではだから、そうですね。もしかしたらなんかWebGLスクールもね、その対面で実際に話を聞けたことのなんかこうプライスレス感みたいなのはあったのかもしれないんですけど、
でも今はちょっとそれができてないんで、落ち着いたらね、どうしようかなってのは確かにちょっと考えちゃいますよね。
そうですよね。本当に開けれたら開くといいんですけどね、なかなかこう、やっぱまぁ憧れの人に会うって面もありますし、やっぱりなんかこう、なんかTwitterとかその各種SNSの印象と実際に会うと印象が違う人とかも結構いらっしゃるので、
うん、そうですね。なんかあってなんぼみたいなところはありますよね。なんかいろんな人、その、僕とかどうかわかんないんですけど、なんかこう、すごいあの文章が例えば短髪だとなんか、あの、なんだろうこう、怒ってんのかなって思われちゃうことも全然あると思うんですよね、そんな本人に悪気がなくても。
36:14
で、なんか実際に会うとめちゃめちゃ、えっ、この文章書いてる人こんなに優しい方なんですかとか全然あると思うんですよね。
はい、あるかもしれない、確かに。
なんか難しいですよね、なんかアイコンからその人の人となり、わかんないですからね、なんか。
それはでもそうかもしれない。なんか私もよく言われるのは、もっとなんか冷たい感じの人かと思ってましたって言われます。よく言われますね。
いや、わかん、いやでも本当にドクサスさんなんか本当にその、ドクサスさんなの、アイコンしか知らないって人結構いらっしゃるじゃん。
そうだ、最近なんかこのノーモライズFMのおかげで、声という新しいこうアウトプットが増えたことによって、多少人となりが伝わりやすくなったのかなと思うんですけどね。
あー、声聞こえるのは結構第一ですよね。
結構でかいですよね。なんかこの人はこんな感じのトーンで喋る人なんだなとかっていうのが、その表情とかは見えなくても結構声だけでも意外と伝わったりするのかなっていうのは思ったりすることはありますけどね。
そうですね、やっぱり僕もともと、実は文学畑から来てる人なんですけど、大学の専攻が日本文学なんですけど、やっぱテクストコミュニケーションって結構やっぱり不完全で、なかなかその人となりをこう表現するにはまだまだこう足りない部分があるので、
どうしてもテクストベースだと、なんかその人のことわかんないので、なんかしらこう言葉の端に滲み出す優しさとかはあるかもしれないんですけど、なんかそれもやっぱりこう付き合いが長くなってからわかるとかあったりすると思うんで、まあ、直に会いたいよねって面は絶対あると思います。
やっぱ対面でこう表情だったりね声だったりを聞きながら感じるものとそのツイッターとかで文字だけで伝わるものってやっぱ全然違うと思うんで、そういう意味でもやっぱオフラインイベントはやれるならやりたいですね、やっぱりね。
あとあれじゃないですかね、シンプルにWebGLとか、なんだろう、こう、あのー、直のイベントに行ってなんかそのシェーダーコーディングとかを目の前でやってもらうと、その感動はまた全然違うと思うんですよね。
そうですね、そうですね、まあライブコーディングとかはやっぱりちょっと、特にWebGLなんかはわかりやすい、その見た目にすぐバッと出るんで、ライブコーディングとかがわかりやすい成果として見えやすいっていうのはあるんで、そういうのもなあ確かにね、オフラインでこう目の前で展開されることの迫力みたいなのありますからね。
39:02
そうですね、僕もちょっとこの間のラスト東京で、シェーダーのライブコーディングやってますって方が一人登壇されてたんですけど、それで初めてその動画見て、このレベルでやれるんだとちょっと思った。
そうですね、はい、あのー、この間、本当についこの間東京デモフェストっていうイベントがあったんですけど、それでもライブコーディングやってましたよ、彼は。
あ、ですよね、そこに出てますって話されてて、なんか、あのレベルってライブで組み立てれるものなんだってちょっと思いましたね。
そうですね、あのー本当にやっぱ日本だけじゃなくて世界的にも何人かやっぱりそのそういうことで有名な人っていうのはやっぱ何人かいますけど、ちょっとやっぱ普通ではないというか、我々がどんなに頭ひねって時間かけても作れないようなものを目の前でライブで作っていっちゃうっていうのが本当になんかもう圧倒的な迫力としてこう目の当たりにすることになるんで、ああいう経験はやっぱりね、オンラインで見てもすげえなってなっちゃいますからね。
いや、オンラインで見てもすごいんですけど、あれ生で見たら多分信じられない感じだと思うんですよね。
ちょっと引きますよね、若干引くぐらいの感じになっちゃいますよね。
分かるわ、それ。やっぱ私でもできないですもん、あんなのは。その、なんか言語使用をある程度知識として知っているっていうのとまた全然違うスキルだと思うんですよね、ああいうのって。
そうですね、なんかどういう組み立てでやっているのか分からないんですけど、多分ある程度、シェーダーとか見た時にこう動くなっていうのが頭にあってそれを組み合わせているとは思うんですけど、あれはまた別の才能ですよね、才能というか別の技術。
単純にWebGLが分かっているとかそういう話ではない感じですよね。
まあいろんな、多分その、まあそれこそ数学だったりとか、あとはその単純に見て綺麗な絵をたくさん経験的に作ってきたから、なんとなくこう、こういうところを持っていけばかっこよくなるなっていうのもなんとなく感覚として分かってるんだと思いますけどね、彼らの場合は。
でもそれにしてもやっぱりちょっと想像を超えてくるというか、本当にこんなことできるんだってね、魔法使いみたいな感じ見えますよね。
そうですよね。どんだけ修練を積んだら離れるんだろうって思いますね。
そうですね。それはそうですね。
いやーもう本当に、もう先日のその東京デオンフェストでもね、あのシェーダーのライブコーディングイベントがあって、もう白熱しましたね。
あれは本当に、なんか選ばれた本当にヒーロー、ヒーローたちっていう感じがします、私から見ても彼らは。
いやー面白いな。なんかこんな話をするとは思ってなかったけど、面白いですね。
そうですね。
コミュニティの話からこんな話になっちゃいましたけど。
僕もね、そんな、その語れるほどではないですけど、一応、あの、独卒さんの生徒の一人なんで。
42:09
いやーまあでも、まあそうですね。一応そうですね、確かに。まあWebGLと無縁ではないわけだから。
そうですね。
なんかちょっとまた話戻しちゃいますけど、ちょっとラスト自体の話もちょっと。
はい、ぜひぜひ。
さっきまあ自分はプレイヤーとしてはっていう話もありましたけど、まあとはいえね、私なんかよりは全然わかってるとは思うんで、
ちょっとラストという言語自体についてもちょっと聞いていけたらなと思うんですけど。
はい。
えーと、まあ私、ちょっと先に私自分の話しちゃうのもあれですけど、ちょっと先に話しちゃうんですけど、
そのラストを使って、なんかレイトレ的な実装を組んだことがあるんですよね、自分の経験としては。
はいはいはいはい。
その、まあCPUで動くけども、まあそこそこ速度が出るよみたいな話があったんで、
まあだったら、そのGLSLで培った知識をラストで書き換えたらどうなるのかなっていうのをちょっと自分でも実験してみたくて、
まあそれでレイトレっぽいのをラストで書いたことが1回あるんですけど、
まあその時もすでに結構エコシステムは今とあんま変わんないぐらいしっかりしていて、
まあなんかこう直感的にはNPMに似ているというか、パッケージをこう持ってきて組み合わせて作れるみたいなのはもう、
私がその触ってた頃には特にそういう仕組みがすでにあって、
で結構あの、まあ勉強も兼ねてたんで、MathLibraryみたいなのは自分で実装したんですけど、
まあわざわざ自分で実装しなくてもそこそこいろいろもう選択肢が当時すでにあったんですよね。
そのMathLibraryみたいなのも、線形代数とかも、これ使えば鉄板ですよみたいなのがもうあって、
結構その、それまでの、これ私の本当に勝手な印象なんですけど、それまでのネイティブな、
例えばC++とかああいう言語って、どうしてもやっぱ敷居が高く感じてた部分はあって、
でもラストの場合はその、なんかこう学習コストが高いとかっていうのはいろいろ言われてるとは思うんですけど、
とはいえ結構エコシステムしっかりしてるし、いいなって個人的には思ったんですよね、当時。
ただまあ最近は全然、ちょっとね、仕事が忙しかったりもしてあんまり触れてはいないんですけど、
ラスト自体はすごく個人的にも興味のある言語で、なんかそういうふうに思ってる人結構多いんじゃないかなっていう印象があるんですよね。
そのウェブの開発者の人たちも、いろんな意味でラストとか注目してたりするのかなと思うんで、
45:05
その辺ちょっとね、なんかまずラストってこういう言語ですよみたいなところから、ちょっともし聞かせてもらえたら嬉しいなと思ってたんですけど。
はい、そうですね。まずそのラストってどういう言語かっていうと、
よく言われるのはシステム言語とか、OSだったりとか、そういう低レイヤーに使うことを目的にされた言語ですよと説明されることが多いのかなと思います。
実際その結構開発にそのModularっていうそのFirefoxを作っている団体が大きく関与していて、
そのModularが開発しているサーボっていうブラウザー関連の技術なんですけど、そこにそのラストが結構最初の頃よく使われていましたところで、
そういうところに特化した言語ですと。
で、そのそういう出自からが結構ラストで大事にしていることの一つとして、
スレッドセーフであるっていうのが結構大事な概念の一つで、
ラストのその最初の学習が大変になる理由として多分皆さんよく聞くのが、所有権とかライフタイム、生存期間っていうのがあって、
これって全部そのいわゆるレースコンディションを防ぐ、レースコンディションってそのマルチスレッディングのプログラミングしたときに、
なんかその共有のJS風に言うとなんかシェアドアレイバッファーみたいなのが例えばあったときに、
今その読み込んでいる最中なのに裏で別のスレッドから書き込まれちゃったりすると当然状態が壊れちゃうと思うんですけど、
これを一般にそのレースコンディションって言うと思うんですけど、
これを防ぐために所有権っていうものがあって、
1個のオブジェクトを求めるのは1つだけですよとか、ちゃんとムーブしちゃいますよとか、
そのライフタイムっていうのはそのあるオブジェクトがどこまで生きているかっていうのを制御する仕組みがライフタイムなんですけど、
それもその全部レースコンディションとかを防ぐ仕組みで、
こういったものが結構その静的スタティックに解析できるので、
例えばそのメモリーリークがありますよみたいな実装をコンパイル時に検知できたりするっていうのが結構ラストの良さですっていうのが、
ラストの大まかな説明で、どうですかね。
いやいや、十分すごく伝わりやすいというか分かりやすい説明だったと思います。
48:00
ラスト、これ勝手な私の印象もちょっとあるんですけど、
プログラミングというものをざっくり歴史として見たときに、やっぱりだんだんプログラミングというもの自体が一般に普及して進化していく過程で、
途中でやっぱりJavaScriptみたいに、誰にでも気軽に使えるみたいなものが潮流としてあった時期があったと思うんですけど、
多分それが過ぎて、やっぱりみんなしっかりものを作っていかなきゃいけないっていう需要が高まってきた中に、
ラストってやっぱりその需要に対してぴったりはまる位置づけの言語なのかなって個人的には思ってるんですよね。
結構個人でプログラミングを勉強するときも、最初はやっぱりJavaScriptだったりPythonだったり、
多少言語の書き方のルールがルーズでも意外と動いちゃうものっていうのがやっぱり初心者向けかなとは思うんですけど、
ただとはいえやっぱりきっちり書こうと思ったらしっかり型があるだったりとか、
所有権とかああいうちょっと初心者からしたら難しいようなルールがありながらも、
ただそれで書くことによってコンパイルエラーにもちろん悩まされたりすることはすごくメンタルを削っていく経験になることはあったとしても、
最終的にはいいものができていくっていうのが、プログラミングの歴史の中でいろいろ培ってきたものの結晶みたいな感じがラストからは感じますね。私個人の意見ですけど。
なるほど。僕の意見で言うと、公俗の言語だからこその良さっていうのはもちろんあるかなと思っていて、
あとは結構やっぱりそれぞれの言語が何を大事にするかの結果で、今こういう各言語の特徴が出ているのかなと思っています。
ラストに関して言うと、自分が思っているのは先ほどちょっとお話ししたレースコンディション。
僕も昔マルチステッドを駆使したプログラミングっていうのを結構やる機会が仕事であって、その作業の何が大変かっていうと、バグを起こしたときのデバッグがめちゃめちゃ大変なんですよね。
そのスレッド止めて、このスレッドの時にこの変数どうなってて、この裏のスレッドがこうでっていうのをデバッグから止めるのがめちゃめちゃ大変で、
なんか大きなトラブルがあって、iOSのこれでこういう現象ができたんですけど、本当に起きるか試してくださいって言われたときに、
まず再現自体がそもそも難易度高くて、どうするんだこれみたいな感じになっちゃったんですよね。
ラストはそういう問題に対して、そういう問題って後から分かるより手前で分かった方がいいでしょっていう考えに多分すごい振っちゃってるんですよね。
51:08
その結果、コンパイル時にレースコンディションするんじゃないのとか、そういうのを見つけられるようにした。
その代わりに学習曲線とかを犠牲にしている面は絶対あると思ってて、ラストは一方で。
他の例えば型がない言語とかがちゃんとしてないかっていうと、そんなことはないと思っていて、
例えばスタートアップでとにかくアイデアをまず形にしないといけないっていうフェーズの時に、
ラストのコンパイルエラーで困ってたら多分会社潰れちゃうと思うんですよ。
そん時に、例えばNode.jsでシステム作りますとか、もっとさらに高速にやりたいからってことで、
RubyとRails使ってアクティブリコードも駆使して即座にアイデアを形にするんだっていう時に、
Rubyとかはいいと思ってて、その代わり大きくなってきた時に、例えば型がないことによって、
いろんな人が触るっていう時にちょっと難易度上がっちゃうっていうデメリットを多分強要してると思うんですよね。
JavaScriptとかRubyとか、そういう差が出てきていて、ラスト版はバグが起きたらめんどくさいっていう分野のために作られたから、
そういう理屈的に難しい仕組みとかがいっぱい入っていて、今のような感じになったのかなっていうふうに自分は考えてます。
なるほどな。すごく説得力がある感じですね。私はすごく感覚でこのラストに対して個人的に感じることをしゃべっちゃいましたけど、
確かにそうですよね。コンパイラがめっちゃ起こってくれるのって、すげえ羨ましいなと思っちゃいますけどね。
普段JavaScriptを書いてると、意外とやっぱりそこエラー出してくれよっていうのが出ないまま突っ走っていっちゃったりすることもあるんで、
事前にコンパイラが教えてくれるのってすごくいいなって個人的には思っちゃいますけどね。
いや、とてもわかります。
でも初心者がやっぱりちょっと、そもそもやっぱり動かないかったら、なかなか楽しいっていう気持ちになれないっていうのもあるだろうし、
今言ったようにビジネスの中でも今はそのタイミングじゃないよねみたいなところも確かにあったりすると思うんで、
そういうとこがやっぱりケースバイケースというか、状況に応じて使い分けが必要なのかもしれないですね。
多分今の例で言うと、Zaimっていうアプリがあるんですけど、お金の管理するアプリですね。
54:05
確か関西さんという経営者の方が最初、HTML5+JavaScriptのアプリで、それでAndroidとiOSそれぞれも一発で出したっていう確か経緯だったと思うんですよ。
それでビジネスが成長して、その後結局AndroidとiOSのネイルティブに確か変えたと思うんですよね。
まさしくそういう感じなのかなと思っていて、
Rubyとかも僕はちゃんと触ったことないんですけど、やっぱり愛されるところってすごい単純に書きやすいっていうのと、設計者の松さんが開発してて楽しいっていうのを大事にしたいっておっしゃってるんで、
やっぱその辺の差なのかなってところで思いますね。
もちろんJavaScriptでエラーが出たら辛いっていうのは僕も経験してるんですけど。
まあそうですよね。
なんかでも、やっぱり今の話をいろいろ伺った中で感じるのはやっぱり本当にあれなのかもしれないですね。
その言語ごとのキャラクターというか性格みたいなのがやっぱりいろいろ違うんだろうなっていうのは、
捉え方としてその捉え方すごく正しいなっていうふうにはちょっと思いました。
なんかあんまりそういうふうに考えたことなかったけど、
やっぱりそれぞれの言語ごとに思想というか大事にしているものっていうのがちゃんとあって、
Rustの場合はそれが結構しっかりはっきりしてるなっていうのはあるかもしれないですね。
そうですね。先ほどちょっと触れたんですけど、
後発だから嬉しいなって思うことで言うと、
Rustって先ほどドクサスさんが触れられてたんですけど、カーゴっていうパッケージマネージャーがあって、
NPMみたいな使い心地ですっておっしゃってたと思うんですけど、
実際なんかカーゴってすごい使いやすいのと、
いろんな言語を触っている方、特に業務で触られている方って言語自体のバージョンの管理って困ると思うんですよ。
例えば、Node.jsをV14でやるのか16でやるのかとか、
そういう時にRustってRustAppっていうコマンドラインのツールがあって、
RustAppってRustが標準で出してるんですけど、
普通にRustAppのインストールでバージョン入れると勝手にバージョン引っ張ってきてくれて入れてくれてっていうの。
特にRustってチャンネルって呼ばれるものが3つあって常に、
Stableっていう安定版と、BetaっていうStableに入るちょっと前のもの。
Nightlyっていうもうイケイケゴーゴーな開発中のやつ。
で、これのチャンネルをRustAppそのデフォルト、StableとかNightlyとかBetaってやればすぐ切り替えれるっていうのは、
57:06
その言語バージョンを切り替えるの大変だよねっていうのを、
他の言語コミュニティが今まで戦ってきた歴史があるんで、
そこを開発する段階でこれは絶対に俺たちもこけるって分かってやれてるのは後続の良さですよね。
確かにそうですね。
もう本当にそういうところだけでも本当に使いやすさに直結してきますもんね。
そうですね。やっぱりみんな苦労したとこですからね。
他で言うとLinterとかも一応Rustって標準であって、
Rust Formatとか、ClippyとかLinterとかFormatterを持っていて、
そういうところやっぱりNode.jsとかもすごい充実してるんですけど、
一時期ESLintでやるべきなのかPretierでやるべきなのかって、
すごいみんな悩んでたと思うんですよ。
でもやっぱり言語でこれがオフィシャルですって言った方が、
みんなひょっとしたら悩まないかもしれないっていうのもやっぱり後続だからできる技なのかなって思ってます。
そうですよね。本当にRustには標準のLinterがあるっていうのは、
すげえ頭いいなと思いました当時やっぱり。
これがあることによってとりあえずみんなでこれに合わせていこうよっていう合意がやっぱり取りやすいですもんね。
そうですね。難しいですよね。
どっちでも書けますって言われちゃうと難しいんですよね、本当に。
やっぱり人の好みがあって、俺はセミコロンつけたいとか、
俺はダブルクオーテーションでやりたいとか、どうしてもなっちゃうんで、人間なんで。
そうですよね。
いや本当にそういうエコシステムみたいな部分は確かにいろいろな経験を踏まえて洗練されたものがいろいろついてて、
かなり開発しやすいなっていうのは確かに思いますね。
私が当時RustでRayTrayを書いていた頃は、あの頃はね、まだWASもやるときにNightlyじゃなきゃできないぐらいの頃でしたね、確か。
結構もう前か、だいぶ前か、でもそう考えると。
もう4,5年ぐらい前かもしれないですけど、最近だと、最近はもうEverAssembly Buildみたいなのは標準のステーブルでできるようになってるんですよね。
デフォルトでいけるはずですね。WASM32のアンノンアンノンとかで、ビルドターゲットでできると思いますね。
実際なんか、これ本当に私全然知らないから無邪気に聞いちゃうんですけど、
あんまり、私の周りにはRustからEverAssemblyでっていうのってあんまり聞いたことないんですけど、
Rustのコミュニティの中では結構ちょいちょいユースケースってあったりしますか?
1:00:04
RustでWASMを作ってってことですか?
そうそう。
あ~たまに伺いますね。ただなんか、WASM多分大きく使う人って、C+かRustかでまずなんか二分しちゃう気がするんですよね。
M.ScriptonっていうのがC+にあって、もともとそっちが結構先行していたと思うんですよ。私の印象だと。
Rustが標準でビルドターゲットにできるんで、それでRust使いますって人がまず半々いらっしゃるのと、
あと、ちょっと難しい話題になっちゃうんですけど、WebAssemblyをどこで利用したいかによっても色々話変わっちゃうと思うんですよね。
ブラウザーで使いたいのか、OSの上で動かしたいのかで結構話が変わってしまうと思っていて、
例えばブラウザーでWebAssemblyを動かしたいです、本来それが普通のユースケースなんですけど、
そうですね。はい。
ブラウザーで動かしたいですっていう方だと、Rustを使うんであれば、Wasm PackとかWasm Bind GenっていうCrate。
CrateっていうのがRustにおけるパッケージだと思ってもらえばいいんですけど、Crateっていうのがいいんですね、Rustだと。
なので、だいたいブラウザーで動かすことを目的とする場合は、Rust単体でビルドするんじゃなくて、
Wasm Bind GenとかWasm Packっていうのを使って利用することが多いかなと思います。
いろいろな理由はあるんですけど、まず単純なところで言うと、WebAssemblyって.Wasmっていうファイルを書き出したら、
よし、使えるぞっていうわけではないっていうのは、多分、Docxatさんも経験されてて大変だなって多分思ったと思うんですけど、当時。
実際どうやるかっていうと、例えばブラウザーで動かす場合は、Fetchとかを使って、Wasmのファイルをまず引っ張ってきて、ダウンロードしてきて、
そいつを特殊な方法でConstructorとかで入手して、その中からモジュールを取って、それをようやく関数として割り当てて使うみたいなことをやらないといけないんですけど。
これがまた引数にストリングとかを受け付けちゃうと、実はメモリの体系の問題上、ちょっとそこの読み替えが大変ですとか、いろいろ面倒くさいことがあるんですけど。
1:03:05
それを順番変えで生のJavaScriptでやるっていうと結構大変なんですよね、とても。
分かります。
そこを抽象化してくれるんですよ、Wasmパックとか使うと。
具体どういうことをやってくれるのかっていうと、今のBindingっていうつなぎ込みの部分を隠蔽化してくれますっていうのと、
Type.d.tsを吐き出してくれるんですね。
これ何が嬉しいかっていうと、JavaScriptを使う方で、エディターにVS Codeを使う方って結構いらっしゃると思うんですけど、
そういう時にD.tsって結局型ファイルなんで、TypeScriptとして読み取れるインターフェースを公開してくれるんで、
ちゃんとJSから使う時に本当にJSの関数みたいな見た目で使えるようになるんで、
使うのがとても楽っていう理由でWasmパック使うといいかなっていう理由と、
ここからはちょっとややこしくて、
Wasmって今、ブラウザーで動かす以外に、例えばMacの上で動かしたいですとかWindowsの上で動かしたいですっていう需要が実はあったりしますと、
それのキーワードとしてWASIっていう、WebAssembly System Interfaceっていうのがあるんですけど、
それをやる時にブラウザーにあまり特化したビルド方式を取っちゃうとポータブル性、持ち運び性が下がっちゃうよっていう理由で、
ラスト本体のビルドの仕組みの中に入ってない実装みたいなのがあるんですよね、Web固有の実装とか。
そういう時にその実装をWasm Bind Gen側が実装してくれてたりするんで、ブラウザー上で使うときはWasm Bind Genを使った方がいいっていうシチュエーションがあったりなかったりしますね。
なるほど。
結構その辺が多分、ちょっと実際に統計取ったわけじゃないんで分かんないんですけど、
結構このノーマライズFMを聞いている人たちってどちらかというとやっぱWebのフロントエンドの人たちがおそらく多くて、
意外とやっぱラストとか、興味はあるけど調べるとなんかそういうちょっと難しいこともいろいろ話題として出てきちゃうし、
ラストを使ってWebアセンブリでみたいな、なんとなくそういう話は耳にしたことはあるけど実際にはまだ1回もチャレンジできてないみたいな人が結構いるような印象があって。
私とかもやっぱりWebGLで何かする上で役に立つ、特に最初の頃ですね、出始めの頃は、
1:06:06
なんかこうWebアセンブリとかうまく活用したらWebGLでなんか面白いことが役に立ったりするのかなみたいなのがあったりもしたんですけど、
とはいえやっぱ最近はどっちかっていうと、今おっしゃられたみたいな必ずしもWebアセンブリとはいいですWebではないみたいな使い方が結構注目されたりもしていて、
ラストとそのWebアセンブリの組み合わせについては、なんとなくいろんな未来があるのかなと思いながらも、結構私も含めてみんな結構挑戦なかなかできてないのかなっていうのもあったんで、
ちょっとね、鳥屋さんみたいに普段結構ラストに近い人がもし来たら聞いてみたいなと思ってたんですよね。
なるほど。そうですね、なんかその、多分いろんな側面があると思っていて、
一旦なんかWebGLとかグラフィック系に閉じてしまうと、最近だと結構高速化するための手法がなんかWordZoomに増えてきていて、
スレッドの機能とか、僕毎回発音がわかんないんですけど、SIMDかSIMDかSIMD。
どっちも聞きますよね。別にどっちもなんか不自然な感じはしないけど、SIMDが多いのかな、どうなんだろう。でもSIMDっていうのも普通に言いますよね。
はい、SIMDがなんだっけ、シングルインストラクションマルチデータかな。
1回の命令で複数データを送るってやつですよね。とか、スレッドっていうのがあって、結局マルチスレッディング相当のことができますよってところで、
だから主に計算処理とか描画を分割っていうのは、結局キャンバス同じだったら分割も何もないのかもしれないですけど、
例えば計算を平行で流しますっていうところには使える分野になってきたかもって思ってます。
実際、自分が知ってる実例だとTensorFlow.jsっていう、TensorFlowって機械学習に使われる技術があるんですけど、
それをグラフィカルに表示するJSがあって、そこの高速化にSIMDとスレッドが使われたっていう例を聞きますし、
他にはGoogleさんが作られたSquooshっていうサービスがあって、Squooshってブラウザー上で画像の圧縮をしてくれるサービスなんですけど、
例えば、すごい軽いJPGファイルとか、ちょっと特殊なPingのファイルとか、そういうの作ってくれるんですけど、
1:09:09
それって普通、今まではどっか裏にあるサーバーにリクエスト投げて、そこで圧縮してっていうのがあったんですけど、
Squooshとかもブラウザーの上でやっちゃっている。
それは圧縮アルゴリズムがわずめになっているから動かせるんですよっていう時に、そこの処理が例えばスレッドとかそういうの使われていて、
高速でできますよってところなんで、DLとかだったら、もしすごい重たい計算があって、
それを処理しないと全然終わらないよとかいう表現が仮にあったら、それが一瞬で終わるようになって表現の幅が広がりますねとか、
そういう良さがあるのかもしれないんです。
今もちらっと話題の中に出てきましたけど、やっぱり機械学習とかああいうのもだんだんJavaScriptが結構いろいろ関わるシーンで使われることを目指していくとかってなってくると、
やっぱりそういう計算速度みたいなところはすごく重要なのかなっていうのは思うんですよね。
結構機械学習とかで、PoseNetとかでWebcamから撮ってる映像を元に撮影している人の姿勢を推定するだったりとか、
そういうところにも結局計算速度が早ければ恩恵が大きいわけで、
そういう形の使われ方がメインになっていくのかなっていうのは、最近、私はそういうユースケースが今のところ一番可能性が広がる領域なのかなって勝手に思ってたりはしたんですよね。
WebGLと無理やりくっつけるとすると、多分、頂点情報を大量に作らなきゃいけないとか、そういう用途かなと思うんですね。
やっぱり60fpsでぶん回している最中に使うとかっていうよりは、最初にまとめてデータを大量に処理しなきゃいけないみたいな時に、
多分そういうのがあったら違うのかなっていうのはちょっと思ったりしたことはありますね。
そうですね。実際にWebGLのスレッドとかそういうののエクザンプルで見るのは、
オフスクリーンキャンバスとかをそれでやったりとか、あとマンデルブロシューボーを確かにそれでやったりとか。
結構WebGLと無理やりくっつけるのが難しいのは、結構それってシェーダーでできるんじゃないみたいなこともあったりするんですよね。
あります。
シェーダーでできるんじゃないもあるし、今後WebGPUとかが本当に使えるようになってくると、今度コンピュートシェーダーも使えるようになるんで、
JSで計算するんじゃなくて、GPUに計算させるみたいなこともだんだんブラウザ上でできるようになっていくから、
1:12:01
リアルタイム性を求めるんだったら、あんまりWebアセンブリじゃなくていいのかなっていうのはちょっと感じるところがあって。
そうですね。実際何かどこで使うのかって結構難しいなって自分も思っていて、
TensorFlowとかそれ以外だと、例えば今まさに使っている収録とか音声の変換とか、そういうところは全然ありそうだなと思ってます。
ブラウザ上でまだまだ役に立つ場面はいっぱいあるなっていうのは確かに思うんですよね。
今まではブラウザでやろうともしなかったようなこともブラウザでできるようになっていくのかなっていうのがちょっと期待というか、
この未来に向けていろいろ起こってくるんだろうなっていうちょっと予測が個人的にはあって、音声データの処理とかもまさしくそうだし、
多分計算が早くて困ることってあんまりないというか、早ければ早いだけ嬉しいことの方が多いはずなんで、
今後もスレッドとかも、やっぱりJavaScriptで無理やりワーカー的なもので頑張るっていうのは今までもできましたけど、
そこら辺がもしスマートにシュッと作れるようになってくるんだったら使いたいなっていうのは思ったりもしますけどね。
今、独卒さんがさらっと言われてるんですけど、実はワンズームのスレッドってスレッドっていう独立した機能じゃないんですよね。
なんかその全然、私その辺り全然知識がないんですけど、いわゆるネイティブなスレッドとはちょっと違うものなんですか、これって。
はい、私も最初調べるまでは知らなくて、なんかそのワンズームの中でいわゆるスレッドができるのかなと思っていたんですけど、
実はワンズームの特にブラウザーで動くスレッドってのはそうではないです。
実は今独立さんがまさに答えを言ってたんですけど、実はWorker.jsを使ってるんですね。
なので、メインのWebAssemblyのモジュールがあって、その子がまずWorker.jsを立てますと。
で、Worker.js立てた後に、そのWorker.jsがそのPostMessageっていうそのなんかシグナル飛ばす関数持ってるんですけど、
そこに実際のその分割する時に使うそのロジックとなるWasmモジュールと、
SharedArrayBufferを1個の配列に入れて、そのPostMessageで渡していくんですよ、各ワーカーに対して。
そうすると渡されたWorker.jsの中でWasmが読み込まれて、SharedArrayBufferも一緒に渡されてるんで、
1:15:04
そこに分割した作業をババババババって書き込んでいく。
それのエコシステムがスレッドって呼ばれている。
ラストで、例えばRayonっていうすごい有名な平行プログラミング用のクレートがあるんですけど、
それで普通にパーイターってすると、その配列がパラレルになるんですよね。
パラレルイターだと思うんですけど、パラレルイテレーターの略称でパーイターっていう関数があるんですけど、
それをやると平行プログラミングになるんですけど、
Wasmのスレッドを使うとそのラストの実装がそのままちゃんとWorker.jsに分配されて動くようになったって感じがWasmのスレッドで。
Wasmのスレッドで何が変わったかっていうと、
まずWasmMemoryっていうのが確か増えていて、
WasmMemoryっていうのはデフォルトだとバッファードアレイかな、バッファードアレイの拡張で、
単純な配列なんですけど、シェアドってフラグがあって、
WasmMemoryにそのシェアドのフラグをトゥルーにすると、
シェアドアレイバッファーの拡張になって、
それがWorker.js間でシェアドアレイバッファーの内容を共有できるようになりましたっていうのが1個大きな変更であって、
その他にWebAssembly Atomicsっていう企画というか、実装提案というかそういうのがあって、
何ができるようになったかっていうと、
JavaScriptでMutex相当のことができるようになった。
なんで書き込みのロック解除ができるようになったっていうのと、
プラスして、ちょっとどう忘れちゃったんですけど、Notified Stopみたいな感じだったかな。
結局何が言いたいかっていうと、スレッド、実際はWorker.jsなんですけど、
そのとあるWorker.jsに対して処理のサスペンドとNotifiedなんで、
サスペンドしたスレッドの処理をリジュームする操作ができるようになったっていうのが、スレッドの実装ですね。
なんかすごいな、それどうやって、すごいですね、ラスト側には純粋にスレッドの仕組みがあるじゃないですか。
それをWorker.jsにうまいことエクスポートみたいな感じで持ってこれるっていうのが、
どんな黒魔術が使われているのか想像もつかないけどすごいなって思っちゃいますね。
そうですね、中の処理とかも多分難しいし、現状は結構単純に使うのも難しいですね。
1:18:07
JSの層とWasmの層を行ったり来たりするんで、結構実装がちょっと迷子になっちゃうと思います。
そうですよね。
なんかその辺、どうなんだろうな。
将来、誰にでも使いやすいものになっていくような技術じゃないというか、
そういうものじゃ元々ないのかなって個人的には思うから、
やっぱりそれなりに知識があって、そこそこ突っ込んだことをやらなきゃいけない場面に出くわす人たちが
どんどん掘り下げていくものなのかなっていう気はするんですけどね。
まあ、でも将来的には簡単になると思いますね。
例えば、フロントエンドの技術でいうと、リアクトとかそういうフレームワークがあったりするんですけど、
そこの内部で仮想ドムがどういうふうに動いているのかってちゃんと理解して使っている人って、
多分リアクトのユーザーの中でもごく少数だと思うんですよね。
僕自身もちゃんと説明できるかっていうとちょっと怪しくて。
コード見たらある程度はわかるかもしれないですけど、さすがにソラでは言えないです。
それと同じことで、ウェブアセンブリとかその辺の周辺技術も将来的には、
ラストのこういうコードを書いておけば、それがヨシナに動くようになりますよぐらいまでは抽象化できるのかなと思っているので。
確かにそうかもしれないですね。
最近、あれ誰と収録した時だったか忘れちゃいましたけど、WebGPUにも似たような話があって、
WebGPU使いこなせる人ってなかなか出てこないとは思うんですけど、
ただ結果的にその恩恵を受ける層はどんどん広がっていくとは思うんですよね。
だからこういうすごく深い部分のラストから、
ラストの方で実装された割とネイティブよりのカリカリめの難しいコードも、
より活用しやすくなってくると裾野が広がっていくというか、
今まではその恩恵を受けられなかった人も気軽に試したり役立てたりができやすくはなっていくのかなと思うけどね。
そうですね。途中で話があったWajiとかもあって、将来的にWebアセンブリが、
もし一般化することがあると、一回書いたコードがいろんなプラットフォームで簡単に動きますよって世界が、
もしかすると来るのかもしれない。
そういうことを少なくともWajiを作っているグループはやりたいはずで、そういう世界を今夢見ている。
1:21:09
ちょっとWajiもすごい難しいというか、
どこをチェックするのが結構大変というか、
どこを追うべきなのかっていうのが、ちょっと軽く見ただけだと、分かりづらいのかなーって思ったりしますね。
大きく、未来星とじゃないですけど、流派が2つ分かりにくい。
それはちょっと難しそうだね、確かに。
ちょっと調べていただくと分かると思うんですけど、そのWasmTimeっていうのを出しているとこと、
WasmaかWasmaかちょっと読み方分かんないですけど、その2つがあって、
結構その2つがWasmのランタイムとしてかなり有名なプロダクトなんですけど、
ちょっと流派というか考え方が違うので、それぞれ多分個別にちゃんとウォッチしていかないといけなかったりして、
そこが難しい。昔FastlyさんがRusetってのを出されてたんですけど、そのRusetはWasmTimeの確か開発チームに合流して、
今一緒にWasmTime作っていこうってなってたりとかしてたりして、
結構考え方がそれぞれ違うんで、ちゃんと2つともちょっとワジを見たいっていう人は追わないといけないのかなっていう、
自分はそういう認識で見てます。ちょっと僕ちゃんとワジはウォッチしてないんで話半分に聞いていただきたいんですけど、
でもそういう感じがあって、結構ちゃんと追わないと理解がしにづらい文脈になってるかもしれないです。
そうですね。結構そもそもWebアセンブリも結構ちゃんと追いかけてないと意外と分かんないことが多いものなのかなとは思うし、
でもどっちかっていうとWebの開発者よりもRustとかのコミュニティとかの方がよっぽど活発な議論がされてるというか、
あんまりWebの開発者でWebアセンブリバリバリいろいろやってますみたいな人って、
なんかあんまり、それこそチコスキーさんとかくらいしか思い浮かばない感じは、もちろんいっぱいいるんでしょうけど、
Webを主体とした活動をされてる方でWebアセンブリってあんまりひも付かない感じはしますね、なんとなくですけど。
そこはなんか結構難しいとこなのかなと僕は思っていて、
1:24:03
そうなっちゃってる理由は先ほどドクサスさんが示唆されてた通り、
まだ使うまでのハードルが高いっていうのが一番あると思うんですよね。
これから多分いろいろな、さっきドラヤキさんが言ってたみたく、
だんだんいろんな部分で簡単とか手軽っていうところがどんどん領域としては広がってくる中でだんだん普及していくのかもしれないですよね。
一方でこれは私の想像なんですけど、
ワーキンググループとしては今の使いづらい段階でもちゃんと使ってもらって、
いろいろフィードバックというか文句というかを聞かせてほしいっていうジレンマは抱えてるんじゃないかなって思ってました。
結局ユーザー置いてけぼりでいろいろロードマップを敷いたところで、
全部終わってからこれ使いにくいよって言われてもちょっと難しいなって思ったりしてるんじゃないかなって。
なんかそういうのも、さっきの最初の方の我々二人のコミュニティの話もそうだけど、こういうのもなんかすごい難しそうですね。
どうやって普及させていくのがいいのか。難しいですね。
最近で言うと、僕らのWasmの話もそうなんですけど、
例えばDenoっていう。
Nodeの後継ですよね。後継というか、Node.jsをもう一回新しい設計で作り直すみたいなやつですよね。
そんな感じですね。もともとNodeの生みの親の方が新しく作られているプロダクトで。
Nodeの時にできなかったこととか、気づけなかったことを新しくやり直そうとされてるんですけど、
ただ、ユーザー自体のボリュームっていうのはやっぱり確保しないと続けていけないよねってところで、
苦心されてるのかなって自分はなんか感じていて。
ユーザーのボリュームの確保のためにNode.jsのモジュール、NPMのモジュールをそのままというか、ちょっと工夫すると使えるようにしますよっていうのが多分最近やられてたと思うんですけど、
そういうのって結構、それをやっちゃうことによって当初やりたかった理想の世界観っていうのを自分から壊しにいってる側面もおそらくあるんですよね。
だけど、そこでまずそのユーザーちゃんと確保しないと、そもそもそのコミュニティ自体の存続できるんだっけってところのジレンマはやっぱり持たれてるんじゃないかなっていう気がしていて、
1:27:14
そこなんかもう、なかなか永遠にみんな解決できない問題だなってところで。
そうですね。だからやっぱり、もちろん、例えば技術とか言語とかが、そもそも作ろうとしているソフトウェアだったり言語だったりが優れている特性を持っているというのは最低限必要なことだと思うんですけど、
やっぱりそれを支えてくれるユーザーであったりとか、コミュニティを運営してくれるオーガナイザーの人たちだったりとか、やっぱりマンパワーが絶対ないと続けていけないですよね。
そうなんですよね。結局、人がいて初めてどこも成り立っているんで、人を置き去りにしていろんなことは進められないんですよね。
そうですね。だから本当に、そういう意味でもラスト界隈って、すごく情報発信、すごくトータルでラストというものを全体で見たときに、世界的にも日本でもすごく情報発信がされていて素晴らしいなっていうのは普段よく感じてますね、私なんかは。
そうですね。そこはやっぱり先達の方々に助けていただいている面が多いのかなと思っていて、
例えばユーザーコミュニティの情勢というか盛り上げという部分は、僕が見ている限りだと結構Rubyコミュニティにすごい影響を受けているというか、参考にさせていただいているところがあって、
そのコードオブコンタクトだったりとか、そもそものイベントの仕立てとか、そういうところは例えばRuby会議とかそういうところにすごい参考にさせていただいているところが多いのかなと、
僕は海外のラストのコミュニティ見たときに結構元Rubyにコントリビュートしていましたとかそういう方結構いらっしゃるので、
そこの多分RubyはRuby独自で苦労してきた歴史があると思うんですけど、コミュニティ情勢に対して。
そこで苦労したときに培ったノウハウとかそういうところをそのまま参考にできていて、今結構やられているのかなと。
他のコミュニティにも多分いろいろ参考にさせていただいていると思うんですよね。ノードだったりとか、もっと他の言語、C++だったりとか。
その辺はやっぱり繰り返しになっちゃうんですけど、後続であるがゆえに人生ではないけど先輩がたくさんいらっしゃって、
1:30:05
こういうことでみんな困るのかっていうのがあらかじめわかっているから動きやすいのかなって思っているので、そこはもうありがとうございますしかないです。
同時に自分たちの後続の人たちのためにもいろいろ残せるものは残していきたいなってことですよね。
そうですね。そうなんで、ラストのさらに後続っていうと、どんなすごい先進的な言語が出てくるんだろう。
ラストでもまだ若いと思っているのに、もっと若いすごい言語が出てくると思うと恐ろしいですよね。
そうですね。でも人類がまさかこのまま何も新しいものが生まれないで終わるってことは絶対ないわけだから、何かが時代に合わせて出てくるんでしょうけど。
そうですね。
ドライアキさんみたいに、未来に向けてちょっとでも何か貢献できないかなって普段からすごく考えられてるっていうのはめちゃくちゃいいことだなっていうのは感じましたし、
私ももうちょっと最近ほんとにサボっちゃってるなって思ってるんですけど、やっぱりFJLとかGLSLとかもう少しなんか盛り上げていかないといけないかなってちょっと自戒も込めて、
今日は色々感じることがありましたね、話を聞いてて。
いやいやいや、貢献されてると思います。
そうですかね。だといいんですけどね。
はい、では今日はですね、なんかちょっといつもと違ってすごく技術の話がめちゃめちゃ今日は色んな話が聞けて、私個人はめっちゃテンションが上がってしまって、いつの間にかもう時間がめちゃくちゃ経っていたので、
ちょっと長くなってきちゃったのでね、色々もっと話したいことはあるんですけども、今日はこの辺で終わりにしようかなと思います。
はい、ドライアキさんの方からもし最後お知らせなどありましたらお願いします。
はい、ありがとうございます。じゃあ2点ほどお伝えしたいことがあって、まず1点目なんですけど、これからラストを勉強しようという方で、近くにラストやってる人がいないとか相談する人がいないっていう方向けに、
ラストJP Slackというものがありますので、ぜひこちらをご活用くださいという連絡になります。
そして最後、僕が宣伝することではないんですけども、オライリからラストの本の第2版の日本語版が近日発売されますので、もしかするともう発売されてるかもしれないですね。
1:33:00
分からないですけど、近日発売されますので、ぜひぜひラストをちょっと初めて勉強しますよって方、ちょっと分厚い本で気遅れしちゃうかもしれないですけども、
別にラストに興味なくても結構プログラミング全般で役に立つ本かなと僕は思ってますので、ぜひぜひこの機会に読んでいただけたらいいのかなと思っております。はい、以上です。
ありがとうございます。初版本は実は俺持ってたりするんですけど、まさか第2版が出るとは知りませんでした。
初版すごい良い本で、特に文字列のあたりの章がめちゃめちゃ多分良いと思うんですけど、あの辺とか多分他の言語を触られててもメモリーの扱いとかその辺の勉強にすごいいいと思うので、ぜひぜひ。
あの別に僕に陰性とか入ってこないんですけど。そうですね。いやでも本当に素晴らしいですね。なんかもうラストのことをすごく考えてらっしゃるのがもう今日はひしひしと伝わってきました。本当にね。
いろんなお話が聞けて楽しかったです。今日はありがとうございました。はい、ありがとうございました。
はい、では最後になりますけども、いつものノーマライズFMのお知らせになりますけども、ノーマライズFMでは#ノーマライズFMというハッシュタグでご意見ご感想など大勢持ち募集してます。
本当に聞きましたとか面白かったぐらいの軽い感想でも全然嬉しいですので、ぜひ何か思うことがありましたらツイッターなどでハッシュタグ付きでつぶやいていただけましたら励みになりますので、ぜひ皆さんつぶやきをお願いします。
はい、ではね。今日はちょっと長くなりましたけども、この辺りで今日は終わりにしたいと思います。最後まで聞いてくださってありがとうございました。
ありがとうございました。
チャンネル登録よろしくお願いします。
01:35:13

コメント

スクロール