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 Slide

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

    View Slide

  3. 最近どうですか?
    3

    View Slide

  4. in 2021
    4

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. Rust との出会い
    8

    View Slide

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

    View Slide

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

    View Slide

  11. 勉強した方法
    11

    View Slide

  12. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. 振り返ってみて
    26

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. 31
    まとめます

    View Slide

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

    View Slide

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

    View Slide