Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Re: みなさん最近どうですか? / FGN tech meetup in 2021

KONDO Uchio
November 10, 2021

Re: みなさん最近どうですか? / FGN tech meetup in 2021

@FGN Tech Meetup #1 ~みなさん最近どうですか?~
https://fgn-tech-meetup1.peatix.com/

本プレゼンテーションはGoogle Docsにもあります(リンクなどはそちらから)
https://docs.google.com/presentation/d/1tzBPVGjg6d0aHrqggSfishmYGm0Jeh_vEAG3o6bnyhA/edit?usp=sharing

KONDO Uchio

November 10, 2021
Tweet

More Decks by KONDO Uchio

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 最近どうですか?
    3

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. Rust との出会い
    8

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. 勉強した方法
    11

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. 次何しようかな...
    15

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. 振り返ってみて
    26

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  30. 31
    まとめます

    View full-size slide

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

    View full-size slide

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

    View full-size slide