@FGN Tech Meetup #1 ~みなさん最近どうですか?~ https://fgn-tech-meetup1.peatix.com/
本プレゼンテーションはGoogle Docsにもあります(リンクなどはそちらから) https://docs.google.com/presentation/d/1tzBPVGjg6d0aHrqggSfishmYGm0Jeh_vEAG3o6bnyhA/edit?usp=sharing
Re: みなさん最近どうですか?in 2021近藤うちお / GMO PEPABO inc.2021.11.10 FGN Tech Meetup #11
View Slide
2自己紹介技術部 データ基盤チーム/技術基盤チーム2013年 入社、同年福岡移住近藤宇智朗 Uchio Kondo (@udzura)● 駆け出しデータ基盤エンジニア● シニアシレンジャー● 最近良かったこと: 北九州、三ヶ森の「らーめん工房龍」に久しぶりに行けた。● 好きなバンド: Pavement東三河出身
最近どうですか?3
in 20214
ご趣味お仕事5in 2021・データ基盤チームを立ち上げた・オンラインでのチーム作りとか 結構工夫した・未熟なりに成果は出ている、か?・本を出した(in 2020)・Rustを始めた・自作言語の勉強を始めた・特にまだ成果物はない
・データ基盤チームを立ち上げた・オンラインでのチーム作りとか 結構工夫した・未熟なりに成果は出ている、か?・本を出した(in 2020)・Rustを始めた・自作言語の勉強を始めた・特にまだ成果物はない6in 2021今日はこっちでご趣味お仕事
・データ基盤チームを立ち上げた・オンラインでのチーム作りとか 結構工夫した・未熟なりに成果は出ている、か?・本を出した(in 2020)・Rustを始めた・自作言語の勉強を始めた・特にまだ成果物はない7in 2021こっちの話も近日中に...ご趣味お仕事
Rust との出会い8
・月並みだけれど新型コロナウイルスにより、進捗感のない一年・2021年は新しいことをしよう...Rustとわたし9激動の2020年が終わった
・2020年までの流れで、システムプログラミングに興味があった。・じわじわ話題になってきてるし、Rustをやるか!!1(BPFのツールなどでワンバイナリを作れる言語を求めてたのはある)Rustとわたし10言語をやろう
勉強した方法11
12動的型野郎がいかにRustを学んだか・まずは公式ドキュメント「The Rust Programming Language」・Tour of Go的なものより骨太だったので、並行して 「実践Rust入門」(自転車本)・とくに初学者にわかり辛いポイント: 所有権(ムーブ周り)、トレイト、Enumの 解説は参考になった。Rustを学んだ時のリソースhttps://doc.rust-jp.rs/book-ja/https://gihyo.jp/book/2019/978-4-297-10559-4
13動的型野郎がいかにRustを学んだか・ちなみに前提として学習時の @udzura のスペック・Ruby … 10年近く。標準ライブラリの仕様は大体頭に入っているつもり・C言語 ... システムプログラミング周りで 2 〜 3 年やった。 メモリ管理はわかってるつもりだったがかなり怪しいと思う・Go、Python … 書こうと思えば書ける。あまりライブラリは頭に入ってない・C#、Java(古め) … 頑張れば思い出せる。なおJavaは苦手意識強・あと「7つの言語 7つの世界」のおかげでScala/Haskellの基本は知ってたRustを学んだ時の前提知識普通にそこそこ色々書ける人、ではあった。
14動的型野郎がいかにRustを学んだか・一つ、仕事で使えそうなツールを書いた。・非同期でGitHub APIを叩き、活動データをCSVで吐き出すだけのツール・使ってみて→ 速い。そして意外とというかかなり宣言的な書き方も許されるし、 あと、型をしっかり設計したら機能追加が簡単。ある程度学べてきてすっかりとりこに...https://github.com/pepabo/octx
次何しようかな...15
・流行ってたので(?)「ゼロからのOS自作入門(みかん本)」を読んでいた(なお、まだ未完読)・C++、読めるようになったけどむずいな...... いつかRustで書き直したりとかできるもんなんかな道を踏み外すきっかけ16並行して勉強してたこと
・フィヨルド某キャンプとか、あと社内勉強会で「Rubyのしくみ」が流行っていた。・なんやわいもRubyわかるで!→こっそり無料のるびまで勉強しよ...・「YARV Maniacs 【第 2 回】 VM ってなんだろう」を読む道を踏み外すきっかけ17そんな時に読んだhttps://magazine.rubyist.net/articles/0007/0007-YarvManiacs.html
18道を踏み外すきっかけ「そうなのか! OSの仮想化と、言語の実行環境の仮想化は繋がったものと考えられるんだなあ」「じゃあ、いつかOSのことをちゃんと理解するために、まずは言語を自分で作ってみよう!」 (???)「そもそもなんで仮想化するんでしょうね」
ということで自作言語沼へ19 16年前の笹田さんに今更そそのかれ ...
RustでLuaを実装した例がなかったので、作ってみた。→ Purua https://github.com/udzura/puruaしかし特にパーサが不慣れ、ある程度動いたけど無理がきそう...一から勉強することにした。自作言語江之道20まずは手を動かしたhttps://docs.google.com/presentation/d/1Dw2ULrcGf2ajrBM6u8VzoAXJLYJh3GDFj3gzSkwD_YA/edit?usp=sharing
とりあえず読めそうな本を読みまくったこの分野は素人なので...「IT Text コンパイラとバーチャルマシン」(オーム社)「ふつうのコンパイラをつくろう」( SBクリエイティブ)「Rubyのしくみ」(オーム社)「はじめて読む486」(アスキーメディアワークス)Luaの中国語の本も今度読みたい自作言語江之道21本を読みまくった
22自作言語江之道・必要なトピックを(書籍で実装しない範囲含め)漏れなく網羅している・文章が確かで、わかりやすい・著者青木さんもRubyistなので、波長が合う(?)・デメリットとして、 Java 5 で実装、アーキテクチャがIA-32前提なので、そこは 差し引いて読むと良さそう。Rust+IA-64版が待たれ...る「ふつうのコンパイラをつくろう」は良かった中間表現 機械語ASTソースコードトークン列スキャナ パーサ 最適化バーチャルマシン型検査 静的解析リンクELFフォーマット
「Crafting Interpreters」https://craftinginterpreters.com/前半Java、後半Cだが、両方Rustに「翻訳」をしている。これで終わってたらかっこいいけど、前半の途中です... が、山場は越えたぞ!と思いたい。自作言語江之道23「翻訳」もしている
Puruaをちゃんとしたスキャナ+パーサで、VMありで書き直したい!ついでにRustの何かのカンファレンスで話したい。自作言語江之道24当面の目標
プログラミング言語処理系が好きな人の集まり Slackhttps://prog-lang-sys-ja-slack.github.io/wiki/とくに @monochrome さん、@yhara さん自作言語江之道25Special Thanks?
振り返ってみて26
1) 自分の問題の幅が広がった2) プログラミング好きだ!って改めて気づけたふりかえり27Rustを学んで良かったことhttps://devswag.com/products/rust-ferris
Ruby中心でやっていた頃は、例えば・言語を実装する・OSを実装する・組み込みで何かをするなどは「自分が書くプログラム」と思っていなかった。でも、Rustという強力な適用範囲の言語を知ることで、「ワンチャンできるんでは」となり、勉強する幅が広がった感。ふりかえり28自分の問題の幅が広がったhttps://www.facebook.com/cookpad.fresh/photos/552782821416040/Ruby(mruby) でできないことではない。けど、Rustは強力。リッチな型最高!
さすがにRuby歴も10年オーバー、刺激がなかったのかも?Rustという、Rubyと全然違うのに一周回って同じような気持ち良さを求めてるような言語と出会えたのは良かった。結果、Rubyの別の面(RBSとかYJIT) も気になってきた。ふりかえり29プログラミングが好き!
普通にコードを書いていてはRubyKaigi(世界最大級の技術者の飲み会)の参加資格(CfP通過)を得られない。頑張ってRubyに絡める。e.g. mrubyのバイトコードをRustに喰わせる、などの奇行に走る。ふりかえり30Rustのデメリットhttps://rubykaigi.org/2021-takeout/presentations/udzura.html
31まとめます
32総括だ!総括!最近どうですか?
33総括だ!総括!・自分が興味を持ち且つ解決できる問題の幅を広よう。・Rustは良いものです。・RubyKaigi リアル開催版に行きたい。