piacere です、ご覧いただいてありがとございます
I'm piacere, the 4 Elixir communities founder/organizer, thank you for reading!
前回に続き、今回もElixir界のエッジコンピュータと惑星間ファイルシステム、DIDの専門家、Brooklyn ZelenkaのPodcast翻訳をお届けします(下図はElixir.LDN 2017より)
このPodcast翻訳シリーズの目次は下記です
[翻訳] ①Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ②Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ③Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ④Brooklyn Zelenka and The Exciting World of Edge Computing
There are 16 Elixir Advent Calendar, making for a hot winter!
We are experiencing an unprecedented level of excitement ... Please support/subscribe
https://qiita.com/advent-calendar/2022/elixir
JavaScript、Ruby、全てのJVM言語からElixirへ
DI: I think one of the things I'm just enjoying listening to you talk about all this is you're coming at this with such an approach around, it's about the ideas and not the language, not necessarily the implementation, but that we're at a point where the ideas of distributed computing are the ideas of an actor model, or the ideas look, we can take these and apply them in other places. So even though you are doing work in Haskell or in TypeScript you're leveraging knowledge, experience and patterns from previous places. I'm curious with that where were you before Elixir? What were you working in there? Was Elixir, your first introduction to functional programming or what was your journey?
BZ: For sure, yeah. So my main, I guess, professional experience prior to Elixir, was obviously JavaScript and Ruby. I started, worked at Ruby for a number of years, and was doing Elixir on the side and decided I wanted to do that full time and got a job that was specifically looking to do Elixir in 2015 or so. So did that full-time for a few years, and taught, etc. Prior to that on the side, I had, I really love programming languages, I'm a primary language geek, and would collect them or try different ones out and write little projects with them and try to compare and contrast them.
My first, you can really, again, it's about the techniques more than the language. One of my first languages, second language actually was Clojure, so I learned JavaScript and Clojure about the same time. We were, so the first startup I was at, actually, and we were using this framework that was based on the JVM, so you can use all the JVM languages, and that company was definitely using all of the JVM languages. I had to pick up JRuby and Groovy and Java, and all of these languages really quickly, I found, I really enjoyed that. So in the first year or so I had picked up about 20 or so and just kept going and would go and play with FORTRAN or C++ or whatever.
Bit of it, very atypical journey into Elixir from there, but part of what got me into Elixir in particular was, I mean, yes, the Ruby background. There's some very surface level similarities, doesn't really go past the syntax, I think. My Clojure background, my LISP background, really drew me in more, because you have Macros, it is Homoiconic. You do have all of these, it's in a lot of ways, it's essentially a LISP with a better syntax, right? That felt very familiar.
I was running the functional programming meetup in Vancouver at the time, and lots of people were interested in, that we're coming in mainly from Ruby, because lots of Rubyists. They were interested in Elixir and in Haskell, and specifically they wanted to know what a Monad was, or a Functor was. I said, well, you know, I can probably teach this by rewriting those things in Elixir for you and then you can learn both at the same time, and hence the very beginnings of witchcraft. Right from that and then I just took that much further than I think anyone thought I would. Yeah.
DI: Very interesting.
AH: Really just like going above and beyond. I love that.
BZ: Yeah.
DI:私があなたの話を聞いていて楽しいと思ったのは、あなたのアプローチが、言語や実装ではなくアイデアに基づくものであるということです。分散コンピューティングのアイデアは、アクターモデルのアイデア、またはこれらを取り入れて他の場所に適用できるアイデアになりつつあります。つまり、HaskellやTypeScriptで作業をしていても、以前の場所での知識や経験、パターンを活用しているわけです。Elixirを使う前はどうだったのですか?そこで何をやっていたんですか? 関数型プログラミングに初めて触れたのはElixirだったのでしょうか?どのような道のりでしたか?
BZ:そうですね。Elixirの前の私の主な専門的な経験はJavaScriptとRubyばかりでした。私はRubyを始めて何年か働き、副業でElixirをやっていましたが、それをフルタイムでやりたいと思い、2015年くらいにElixirをやることを特に求めていた仕事に就いたんです。それで数年間フルタイムでやって、教えたりしていました。それ以前は、プログラミング言語が大好きで、言語オタクで、プログラミング言語を集めたり、いろいろな言語を試してみたり、小さなプロジェクトを書いたりして、比較検討をしていました
私の場合、言語よりも技術に重きを置いています。私の最初の言語のひとつは、実は第2言語がClojureで、JavaScriptとClojureをほぼ同時に学びました。私が最初にいたスタートアップでは、JVMをベースにしたフレームワークを使っていたので、すべてのJVM言語が使えました。JRubyやGroovy、Javaなど、すべての言語をすぐに習得しなければなりませんでしたが、それがとても楽しかったんです。最初の1年くらいで20個くらい覚えて、そのままFORTRANとかC++とかで遊んでいました。
そこからElixirに入ったのは、とても変わった道のりだったんですが、特にElixirにのめり込んだのは、Rubyのバックグラウンドがあったからです。ただ、表面的な類似性はあるけれど、シンタックスを超えるものではありません。ClojureやLISPのバックグラウンドを持っている私は、より一層引き込まれました。マクロもあるし、ホモアイコニック(訳注:実行中に関数にアクセスでき、その関数を書き換えられる特性、メタプログラミングのために必要)なので、いろいろな意味で、より優れたシンタックスを持つLISPだと思います。それはとても身近に感じられました。
私は当時、バンクーバーで関数型プログラミングのミートアップを運営していました。そして多くの人が興味を示していました。Ruby使いがたくさんいたので、主にRubyから入ってきていました。ElixirやHaskellにも興味を持っていて、特にモナドやファンクタが何なのか知りたがっていました。そこで私は「私がElixirでこれらを書き直せば、両方を同時に教えられるでしょう」と言いました。そこから、誰もが思っているよりもずっと先に進んだんです。
DI:とても興味深いですね
AH:まさに、その上を行くという感じですね。それが好きなんです
BZ:えぇ
Elixirの欠点
AH: I feel like we've talked a lot about, a lot of the benefits of Elixir. What do you think are some drawbacks?
BZ: I'm not a person who thinks that you must have a type system in the language, but it can also be really helpful, especially if it is an optional thing you can turn on, dialyzer doesn't quite capture quite the same thing. There is this challenge, where if part of your program is typed and the other part of it isn't, you don't really get the benefit. It's the more of it that really the better. Having the ability to have a type system, more than type specs would be extremely helpful. I know, there's been a couple attempts at that, that, I guess, just haven't panned out.
The ability to easily reason about side effects, right? They're just hidden. They're really side effects. Managed effects of some kind would be really nice. OCaml these days has a nice way of handling that. Pulling in some of those ideas might be nice. It's something that if I ever am not at a scrappy startup that needs all of my time, that I might try to build something towards. The lack of a Wasm support today is a challenge, right? Trying to integrate it with other tools and other ecosystems.
One of the amazing things with Wasm is it has become a or is increasingly becoming a thing that people won't say no to, of like, well, they have a Go project, but you've got some Wasm blob, and so you can just plug that in, and it's fine. They don't care what is written in inside. Being able to compile down to Wasm would be a huge, huge help. There's been improvements, definitely, to performance, but it still runs inside of a virtual machine. It's quite slow compared to Haskell, Rust, Go, and the ones that are more on the native code side. Being able to target native code, as soon as you targeting Wasm, you may as well also target native code and get some speed-ups there.
AH: Elixirの利点について、これまでたくさんお話ししてきたように思います。欠点は何だと思いますか?
BZ: 私は言語に型システムが必要とは考えていませんが、Dialyzer(訳注:Elixirの型チェックツール、ただし判定は甘い)は同じように捉えてくれないので、オプションでオンにできるものであれば本当に役立つこともあります。プログラムの一部が型付けされ、他の部分が型付けされていない場合、その利点を享受できない、という課題があります。型付けは多ければ多いほど良いのです。型指定だけでなく、型システムを持つことができれば、非常に便利です。これまでにも何度か試みはありましたが、うまくいかなかったようです(訳注:これはElixirでの型システム実装のことと思われる、アナウンスはあったけど結局、実装に至っていない)
副作用を簡単に推し量ることができることですね。それらは隠されているだけです。本当に副作用があるんです。ある種の管理された効果というのは本当に素晴らしいものです。最近のOCamlはそれをうまく処理できるようになっています。そういうアイデアを取り入れるといいかもしれません。もし私が、私の時間を全て必要とするようなスクラッピースタートアップ(訳注:根性があって、向こう意気が強いスタートアップのこと)にいないなら、何か作ってみるかもしれませんね。WASM(訳注:WebAssemblyの省略表記)のサポートが無いのは課題ですよね? 他のツールや他のエコシステムと統合しようとすることです
WASMの凄いところは、「Goのプロジェクトがあるけど、WASM blobがあるから、それに接続すればいいんだよ」と断られないような存在になりつつあることです。中に何が書いてあるかは気にしないんです。WASMにコンパイルできるようになれば、非常に大きな助けになります。性能は確かに向上していますが、まだVMの中で動いているんです(訳注:ElixirがVM配下で動いてることと思われる、VMはErlangVMのこと)。HaskellやRust、Goなど、ネイティブコードに近い言語と比較すると、かなり遅いのです。ネイティブコードをターゲットにできるということは、WASMをターゲットにした時点でネイティブコードもターゲットにして、そこそこのスピードアップを図ることができるかもしれませんね
The Jump to Hyperspace
https://fission.codes/blog/jump-to-hyperspace-brooklyn-zelenka-elixirconf-edge-computing/
AH: I completely lost my question that has been floating around in my mind for easily 45 minutes, but I do have a very random one for you. If we jump back to the title of your talk, "The Jump to Hyperspace", would you rather go into deep space, or go to the deep sea?
BZ: Ooh. I think, there's probably way more interesting stuff in the deep sea.
AH: Yeah. Probably. You could see giant squids. Yeah.
BZ: Right? Yeah.
DI: Yeah. Go to a place where you know there's life, as opposed to a place where there may be life, right?
BZ: Exactly.
AH: Exactly. Exactly.
DI: That's a good argument. Good argument.
AH: People make fun of me, because one of my greatest fears is space. I think, it is a well-placed fear.
BZ: Not a friendly place to be. It's true.
AH: Exactly.
AH:45分間、私の頭の中にあった質問を完全に忘れてしまいましたが、とてもランダムな質問をさせていただきます。講演のタイトルである「The Jump to Hyperspace」に話を戻すと、あなたは深宇宙と深海のどちらへ行きたいですか?
BZ:あぁ、深海にはもっと面白いものがあるんじゃないかと思うんです
AH:そうです。たぶんね。ダイオウイカが見られるかもしれないです。
BZ:でしょう?そうです
DI:そうですね。命があるかしれない場所より、命があると分かっている場所に行くことですね?
BZ:その通りです
AH: たしかに。たしかに
DI:それは正論ですね。正論だ
AH:私は宇宙を恐れているので、みんなにバカにされます。私は、それはよくできた恐怖だと思います
BZ: フレンドリーな場所ではないですね。おっしゃる通り
AH:その通りです
エッジコンピューティングの学び方
AH: Brooklyn, do you have any If people are really interested in getting into edge computing, learning about it, do you have any good resources for those people, or good recommendations, places they can just start from square one?
BZ: Yeah, absolutely. I mean, distributed computing in general, there's a couple of really great books. There's Designing Data-Intensive Applications, which is mainly about databases. When you think about distributed systems, it's really about the data and how to get that distributed and access it efficiently, and all these things. I would say, it probably the best introduction to distributed systems book out there.
In terms of some of the things we're talking about before, like content addressing, if you go to proto.school, they have lots of things there about immutable data and content, address data, and hash rate data. Come to the Fission Discord. We have a very active community that are asking questions on posting papers on the regular. We have calls most Thursdays as well, community calls, where often, somebody will be giving a presentation about things that are related in our space, which often end up being, as you can imagine. It should be computing related, and show up to those and there's lots of interesting things to learn there.
AH: That is open to anybody to join?
BZ: Absolutely. Absolutely, anyone. Yeah, so come join the Discord. We post links to those every time. We also have a it called Luma, which is a new platform for scheduling events. We post those events on Luma, lu.ma. I believe, you could then search for Fission inside there and find us.
AH: Cool. That's amazing. I love that that's open to anybody to join. That's super awesome. I love that. Well, Brooklyn, do you have any final plugs, asks for anybody, where people can find you on social media, the projects you're working on, etc.?
BZ: Sure. You can find me pretty much anywhere on the Internet as expede, E-X-P-E-D-E. I'm on Twitter. You can also find my company, Fission, @fissioncodes on Twitter. Witchcraft, always looking for more contributors, maintainers. I'm pretty distracted right now, changing the way the Internet works. If you want to get involved in witchcraft, please drop me a line, or just go directly to the repos. The organization is github.com/witchcrafters. Open issues, or even just drop an issue and to say hi, and that you're interested in starting to take a look at some stuff.
AH: Brooklynさん、もしエッジコンピューティングに興味を持ち、それを学びたいと思っている人がいたら、その人たちのために何か良いリソース、あるいはお勧めの場所、ゼロから始められるような場所はありますか?
BZ:えぇ、もちろんです。分散コンピューティング全般についてですが、本当に素晴らしい本が何冊かあります。「Designing Data-Intensive Applications」は主にデータベースについて書かれています。分散システムについて考えるとき、それはデータについてであり、いかにしてデータを分散させ、効率的にアクセスするかということなのです。恐らく、分散システムの入門書としては最高の本だと思います
先ほど話したコンテント・アドレッシングについても、proto.school(訳注:分散型Webプロトコルのチュートリアルサイト)に行けば、イミュータブルデータやコンテンツ、アドレスデータ、ハッシュレートデータについてたくさんのことが書かれています。FissionのDiscordに来てください。非常に活発なコミュニティがあり、定期的に論文を投稿して質問しています。毎週では無いですが木曜日にはコミュニティコールがあり、誰かが私たちの領域に関連する事柄についてプレゼンテーションを行うことがあります。コンピュータに関連するもので、そこに来れば、たくさんの興味深いことを学ぶことができます
AH:それは誰でも参加できるのですか?
BZ:もちろんです。もちろん、誰でも参加できます。ですので、FissionのDiscordに参加してください。毎回リンクを貼っています。また、Lumaと呼ばれるイベントをスケジュールするための新しいプラットフォームもあります。イベントをLuma(lu.ma)に投稿しています。そこでFissionを検索していただければ、私たちを見つけられます
AH: すばらしい。それはすごいですね。誰でも参加できるのがいいですね。超すごい。そういうの、大好きです。さて、Brooklynさん、最後に何かプラグインや誰かにお願いしたいこと、人々がソーシャルメディアであなたを見つけることができる場所、あなたが取り組んでいるプロジェクトなどがあれば教えてください
BZ: もちろん。インターネット上ではexpede、E-X-P-E-D-Eとして、どこでも私を見つけることができます。Twitterもやっています。Twitterでは、私の会社であるFission、@fissioncodes もご覧いただけます。Witchcraftは、常に多くの寄稿者、メンテナを募集しています。私は今、インターネットの仕組みを変えるために、かなり気を取られています。もしあなたがWitchcraftに関わりたいなら、私に連絡をください。あるいは、直接レポジトリにアクセスしてください。github.com/witchcrafters です。Issuesを開いて「ハーイ」と連絡してください。そして、色んなものを見始めることに興味があることを伝えてください
最後のご挨拶
AH: Awesome. It's been a dream of mine to be involved in the magical wizarding community ever since I was a child. Besides being on Elixir Wizard, maybe now I will also become interested in witchcraft.
BZ: Amazing.
AH: All related things. Dan is laughing at me, as he should be. I'm so sorry, everyone, for making bad jokes. But not at all, actually.
DI: No, you shouldn't be. That fine. You be you, Alex. It's great.
AH: Thank you, Dan. I appreciate your support. Well, everybody, Brooklyn, thank you so much for joining. It was really great to have you on. I feel like, I've learned a lot more even though, I think, a lot of it has still gone over my head, but I feel more comfortable now after getting this chance to talk with you after listening to your talk. Thank you so much for joining.
BZ: Amazing. Thank you so much for having me.
AH: It was really, truly our pleasure. Thank you everyone else for listening. That's it for this episode of Elixir Wizards. Elixir Wizards is a SmartLogic production. Today's host include myself, Alex Housand, and my wonderful co-host, Dan Ivovich. Our producer is Bonnie Lander and our executive producer is Rose Burt. We get production and promotion assistance from Michelle McFadden.
Here at SmartLogic, we build custom web and mobile software. We're always looking to take on new projects. We work in Elixir, Rails and React, Kubernetes and more. If you need a piece of custom software built, hit us up. Don't forget to hit like, subscribe and leave us a review. You can follow @smartlogic on Twitter for news and episode announcements. You can also join us on the Elixir Wizards Discord, just head on over to podcast page to find the link. Don't forget to join us again next week for more on the Impact of Elixir.
AH:すごいですね。子供の頃から、ずっと魔術師のコミュニティに関わるのが夢だったんです。Elixir Wizardsに出演したことで、今度はWitchcraftに興味を持ったかも知れません
BZ:素晴らしいですね
AH:全ては関係してるんです … Danが普通に笑っている。みなさん、悪い冗談を言ってしまって本当にゴメンナサイ。実際は、全然違うんです
DI:やらなくていいんですよ。大丈夫。あなたはあなたのままでいてください、Alex。それは素晴らしいことなんです
AH:ありがとう、Dan。あなたのサポートに感謝します。さて、皆さん、Brooklynさん、ご参加ありがとうございました。あなたが出演してくれて本当によかったです。私は、チンプンカンプンなところが多かったけど、私はより多くを学んだように感じています。あなたの話を聞いて、あなたと話す機会を得て、私は今満足な気分です。本当にありがとうございました
BZ:よかったです。お招きいただき、本当にありがとうございます
AH:本当に、こちらこそ。皆さんも聞いてくださってありがとうございました。今回のElixir Wizardsのエピソードは以上です。Elixir WizardsはSmartLogicの制作です。今日のホストは私、Alex Housandと、素晴らしい共演者であるDan Ivovichです。プロデューサーはBonnie Lander、エグゼクティブ・プロデューサーはRose Burtです。制作とプロモーションはMichelle McFaddenが手伝ってくれています
SmartLogicでは、独自Web/モバイルのソフトウェアを作っています。私たちは常に新しいプロジェクトに取り組みたいと考えています。Elixir、Rails、React、Kubernetesなどを使って仕事をしています。もし、独自ソフトウェアの構築が必要でしたら、ぜひご連絡ください。「いいね!」「購読する」「レビューを残す」を忘れずに。Twitterでは、@smartlogicをフォローすると、ニュースやエピソードの告知を見ることができます。また、Elixir Wizards Discordでも参加できます。Podcastページにリンクがあります。来週の「Elixirの衝撃」へのご参加もお忘れなく!
- Translator's impression : 訳者の感想 -
(English version)
One of the drawbacks of Elixir is that the type system is incomplete in Dialyzer (and Elixir doesn't have a type system yet) and the performance is not as good as native code.
As a solution, WebAssembly support was discussed.
He also mentioned the similarities between Elixir and Ruby, as well as the similarities between Elixir and Clojure and LISP in the context of macros and metaprogramming.
I think the phrase "LISP with better syntax" was spot on.
Towards the end of the book, there is also a section on how to learn about edge computing and distributed computing, as well as an introduction to the community, so if you like this translation series, why not visit those communities?
Brooklyn Zelenka herself posts information on her blog, so if you want to know more, please go to her blog!
(日本語バージョン)
Elixirの欠点として、型システムがDialyzerでは不完全なこと(またElixirが型システムを未だ持てていないこと)と、性能面でネイティブコードには届かない点が挙げられました
その解決として、WebAssemblyサポートについて論じられていました
また世間で良く言われる、ElixirとRubyの類似点だけで無く、マクロやメタプログラミングの文脈で、ClojureやLISPとの類似点についても言及されていました
「より優れたシンタックスを持つLISP」というフレーズは、的を射た表現だと思います
終盤には、エッジコンピューティングや分散コンピューティングの学び方と、コミュニティの紹介もあり、この翻訳シリーズを気に入った方は、それらコミュニティに訪れてはいかがでしょう?
Brooklyn Zelenkaさん自身も、ブログで情報発信しているので、もっと知りたい方は、彼女のブログを見に行ってみてください
このPodcast翻訳シリーズ全体は、以下の通りです
[翻訳] ①Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ②Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ③Brooklyn Zelenka and The Exciting World of Edge Computing
|> [翻訳] ④Brooklyn Zelenka and The Exciting World of Edge Computing
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