Slide 1

Slide 1 text

Re: みなさん最近どうですか? in 2021 近藤うちお / GMO PEPABO inc. 2021.11.10 FGN Tech Meetup #1 1

Slide 2

Slide 2 text

2 自己紹介 技術部 データ基盤チーム/技術基盤チーム 2013年 入社、同年福岡移住 近藤宇智朗 Uchio Kondo (@udzura) ● 駆け出しデータ基盤エンジニア ● シニアシレンジャー ● 最近良かったこと: 北九州、三ヶ森の 「らーめん工房龍」に久しぶりに行けた。 ● 好きなバンド: Pavement 東三河出身

Slide 3

Slide 3 text

最近どうですか? 3

Slide 4

Slide 4 text

in 2021 4

Slide 5

Slide 5 text

ご趣味 お仕事 5 in 2021 ・データ基盤チームを立ち上げた ・オンラインでのチーム作りとか  結構工夫した ・未熟なりに成果は出ている、か? ・本を出した(in 2020) ・Rustを始めた ・自作言語の勉強を始めた ・特にまだ成果物はない

Slide 6

Slide 6 text

・データ基盤チームを立ち上げた ・オンラインでのチーム作りとか  結構工夫した ・未熟なりに成果は出ている、か? ・本を出した(in 2020) ・Rustを始めた ・自作言語の勉強を始めた ・特にまだ成果物はない 6 in 2021 今日はこっちで ご趣味 お仕事

Slide 7

Slide 7 text

・データ基盤チームを立ち上げた ・オンラインでのチーム作りとか  結構工夫した ・未熟なりに成果は出ている、か? ・本を出した(in 2020) ・Rustを始めた ・自作言語の勉強を始めた ・特にまだ成果物はない 7 in 2021 こっちの話も 近日中に... ご趣味 お仕事

Slide 8

Slide 8 text

Rust との出会い 8

Slide 9

Slide 9 text

・月並みだけれど新型コロナウイルス により、進捗感のない一年 ・2021年は新しいことをしよう... Rustとわたし 9 激動の2020年が終わった

Slide 10

Slide 10 text

・2020年までの流れで、システムプログ ラミングに興味があった。 ・じわじわ話題になってきてるし、 Rustを やるか!!1 (BPFのツールなどでワンバイナリを作 れる言語を求めてたのはある) Rustとわたし 10 言語をやろう

Slide 11

Slide 11 text

勉強した方法 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

13 動的型野郎がいかにRustを学んだか ・ちなみに前提として学習時の @udzura のスペック ・Ruby … 10年近く。標準ライブラリの仕様は大体頭に入っているつもり ・C言語 ... システムプログラミング周りで 2 〜 3 年やった。  メモリ管理はわかってるつもりだったがかなり怪しいと思う ・Go、Python … 書こうと思えば書ける。あまりライブラリは頭に入ってない ・C#、Java(古め) … 頑張れば思い出せる。なおJavaは苦手意識強 ・あと「7つの言語 7つの世界」のおかげでScala/Haskellの基本は知ってた Rustを学んだ時の前提知識 普通にそこそこ色々書ける人、ではあった。

Slide 14

Slide 14 text

14 動的型野郎がいかにRustを学んだか ・一つ、仕事で使えそうなツールを書いた。 ・非同期でGitHub APIを叩き、活動データをCSVで吐き出すだけのツール ・使ってみて→ 速い。そして意外とというかかなり宣言的な書き方も許されるし、         あと、型をしっかり設計したら機能追加が簡単。 ある程度学べてきて すっかりとりこに... https://github.com/pepabo/octx

Slide 15

Slide 15 text

次何しようかな... 15

Slide 16

Slide 16 text

・流行ってたので(?) 「ゼロからのOS自作入門(みかん本)」を読ん でいた(なお、まだ未完読) ・C++、読めるようになったけど むずいな...... いつかRustで書き直したりとか できるもんなんかな 道を踏み外すきっかけ 16 並行して勉強してたこと

Slide 17

Slide 17 text

・フィヨルド某キャンプとか、 あと社内勉強会で 「Rubyのしくみ」が流行っていた。 ・なんやわいもRubyわかるで! →こっそり無料のるびまで勉強しよ ... ・「YARV Maniacs 【第 2 回】   VM ってなんだろう」を読む 道を踏み外すきっかけ 17 そんな時に読んだ https://magazine.rubyist.net/articles/0007/0007-YarvManiacs.html

Slide 18

Slide 18 text

18 道を踏み外すきっかけ 「そうなのか! OSの仮想化と、言語の実行環境の仮想化は繋がったものと考えられるんだなあ」 「じゃあ、いつかOSのことをちゃんと理解するために、まずは言語を自分で作ってみよう!」  (???) 「そもそもなんで仮想化するんでしょうね」

Slide 19

Slide 19 text

ということで自作言語沼へ 19  16年前の笹田さんに今更そそのかれ ...

Slide 20

Slide 20 text

RustでLuaを実装した例がなかったの で、作ってみた。 → Purua https://github.com/udzura/purua しかし特にパーサが不慣れ、ある程度 動いたけど無理がきそう... 一から勉強することにした。 自作言語江之道 20 まずは手を動かした https://docs.google.com/presentation/d/1Dw2ULrcGf2ajrBM6u8VzoAXJLYJh3GDFj3gzSkwD_YA/edit?usp=sharing

Slide 21

Slide 21 text

とりあえず読めそうな本を読みまくった この分野は素人なので... 「IT Text コンパイラとバーチャルマシン」(オーム社) 「ふつうのコンパイラをつくろう」( SBクリエイティブ) 「Rubyのしくみ」(オーム社) 「はじめて読む486」(アスキーメディアワークス) Luaの中国語の本も今度読みたい 自作言語江之道 21 本を読みまくった

Slide 22

Slide 22 text

22 自作言語江之道 ・必要なトピックを(書籍で実装しない範囲含め)漏れなく網羅している ・文章が確かで、わかりやすい ・著者青木さんもRubyistなので、波長が合う(?) ・デメリットとして、 Java 5 で実装、アーキテクチャがIA-32前提なので、そこは  差し引いて読むと良さそう。Rust+IA-64版が待たれ...る 「ふつうのコンパイラをつくろう」は良かった 中間表現 機械語 AST ソース コード トークン列 スキャナ パーサ 最適化 バーチャル マシン 型検査 静的解析 リンク ELF フォー マット

Slide 23

Slide 23 text

「Crafting Interpreters」 https://craftinginterpreters.com/ 前半Java、後半Cだが、両方Rustに 「翻訳」をしている。 これで終わってたらかっこいいけど、 前半の途中です... が、山場は越えたぞ! と思いたい。 自作言語江之道 23 「翻訳」もしている

Slide 24

Slide 24 text

Puruaをちゃんとした スキャナ+パーサで、VMありで 書き直したい! ついでにRustの何かの カンファレンスで話したい。 自作言語江之道 24 当面の目標

Slide 25

Slide 25 text

プログラミング言語処理系が好きな人 の集まり Slack https://prog-lang-sys-ja-slack.github.io/wiki/ とくに @monochrome さん、 @yhara さん 自作言語江之道 25 Special Thanks?

Slide 26

Slide 26 text

振り返ってみて 26

Slide 27

Slide 27 text

1) 自分の問題の幅が広がった 2) プログラミング好きだ!って改め て気づけた ふりかえり 27 Rustを学んで良かったこと https://devswag.com/products/rust-ferris

Slide 28

Slide 28 text

Ruby中心でやっていた頃は、例えば ・言語を実装する ・OSを実装する ・組み込みで何かをする などは「自分が書くプログラム」と思っ ていなかった。でも、Rustという強力な適用 範囲の言語を知ることで、 「ワンチャンできるんでは」となり、 勉強する幅が広がった感。 ふりかえり 28 自分の問題の幅が広がった https://www.facebook.com/cookpad.fresh/photos/552782821416040/ Ruby(mruby) でできないことではない。 けど、Rustは強力。リッチな型最高!

Slide 29

Slide 29 text

さすがにRuby歴も10年オーバー、 刺激がなかったのかも? Rustという、Rubyと全然違うのに 一周回って同じような気持ち良さを 求めてるような言語と出会えたのは良 かった。 結果、Rubyの別の面(RBSとかYJIT) も気 になってきた。 ふりかえり 29 プログラミングが好き!

Slide 30

Slide 30 text

普通にコードを書いていては RubyKaigi(世界最大級の技術者の飲み会 )の 参加資格(CfP通過)を得られない。 頑張ってRubyに絡める。 e.g. mrubyのバイトコードをRustに 喰わせる、などの奇行に走る。 ふりかえり 30 Rustのデメリット https://rubykaigi.org/2021-takeout/presentations/udzura.html

Slide 31

Slide 31 text

31 まとめます

Slide 32

Slide 32 text

32 総括だ!総括! 最近どうですか?

Slide 33

Slide 33 text

33 総括だ!総括! ・自分が興味を持ち且つ解決できる問題の幅を広よう。 ・Rustは良いものです。 ・RubyKaigi リアル開催版に行きたい。