ツナ、納豆、まよねーず。

ICTに関する日記とかメモとか。

Rust.Tokyo 2023 現地参加レポート

はじめに

2023-10-21(土)に開催されたRust.Tokyo 2023の参加レポートです。

rust.tokyo

 

現地参加の感想と自分用にセッションに関する情報をまとめています。

私の参加歴ですが、2021年と2022年はオンライン参加しました。
2023年はハイブリッド開催だったため、現地参加しました

 

 

申し込み

現地参加は500円でした。Ti.toでの申し込みでした。

チケットはスクショしてとっておきました。

 

未来の私へ:

 早めにSoldOutしたようなのですぐ申し込んでください。

 後でチケットを参照する方法がよくわからなかったので
 次回も同じ申し込み方法だったら忘れずにスクショしてください。

 

配信

ハイブリッド形式だったのでオンラインはYouTube配信でした。

アーカイブ動画が出たらこちらにリンクを貼る予定です。

 

セッション

セッション概要は以下より引用しています。

rust.tokyo

IoTプラットフォーム開発におけるRustの活用

Takumi Shimada

このプレゼンテーションではでは2017年というかなり早期から採用していたIdeinならではの経験を皆様と共有しようと考えています。

具体的にはIdeinでRustを早期から導入した経緯からRustや周辺エコシステムの変更に伴うコードの変遷(async/awaitの導入など)、Rustを実プロダクトで使うときの課題とその対策(CIでの工夫や実プロダクトで起きたトラブル)を話していきます。

Rustを実環境で導入する企業は増えてきていますが、早期から導入していた数少ない企業としてRustの進化の歴史とその影響を話せればと思います。

docs.google.com

 

かにさんタワーバトル

Yuta Ide

Rust はサーバー開発においても堅牢さと生産性を提供してくれる素晴らしい言語です。しかし言語自体は HTTP サーバーの機能を提供していないため、Rust で HTTP サーバーを作るためには何かしらのフレームワークを選定しなければいけません。筆者は現在、社内の古い世代のシステムを、メンテナブルで長生きするシステムに置き換える仕事をしており、その際にRustとaxumを導入しました。ただその際にライブラリやエコシステムに振り回されないような技術選定を考えて欲しいというオーダーがあり、axumを導入するかは最後までとても悩みました。結果的に選択しましたが、それはtowerによって別FWに乗り換えられることに気づいたからです。このトークでは、HTTPサーバーそのものの復習、サーバーの開発にRustが適している理由、axumの嬉しさ、towerによる相互乗り換えの方法について話します。

speakerdeck.com

 

他言語がメインの場合のRustの活用法 - csbindgenによるC# x Rust FFI実践事例

Yoshifumi Kawai

csbindgenというRust <-> C#FFIを自動化するライブラリを開発し、OSSとして今年の3月に公開しました。このライブラリを元にして、C#(他言語)を中心にしたアプリケーションの中でのRustの使い所、Rust実装上でのFFIのテクニック、そしてcsbindgenの実際の利用例を紹介します。

speakerdeck.com

 

素材メーカーが内製開発でRustを使っている話

スポンサーセッション AGC株式会社

AGCは素材メーカーでありながらソフトウェアの内製開発に力を入れており、2021年頃からRustを採用しています。2023年にはソフトウェア開発の専門組織を立ち上げ、Rustの利用先は社内向けWebアプリや最適化アルゴリズムの実装など多岐に渡ります。素材メーカーにおける内製開発の実情も交えつつ、具体的なプロダクトを例にRustの採用に至った経緯、採用して良かった点・苦労した(している)点、Rustを普及するために取り組んでいることなどを紹介します。

 

Rustがユニークビジョンにもたらした恩恵と苦労 ~そしてお返しへ~

スポンサーセッション ユニークビジョン株式会社

ユニークビジョンがRustを採用して6年間の取り組みをお話します。良い点や悩ましい点から、その試行錯誤の内幕や、自社で開発したちょっと便利なcrateも紹介します。

github.com

 

並行キャッシュライブラリの開発で得られた知見

Tatsuya Kawano

本セッションではMokaというライブラリの開発を通して得られた経験や課題を共有します。Mokaは私が2021年から継続的に開発している並行キャッシュです。crates.ioやsentry.ioのバックエンドに採用され、高負荷なWebサービスを支えています。

セッションではキャッシュ固有の話題に触れた後、非同期ランタイムの並行性を損なわないデータ構造の選択方法など、一般的な並行プログラミングに応用できる知識も交えて紹介します。また、開発で苦労した点なども共有します。

speakerdeck.com

github.com

 

Rust 業務経験がない開発者で集まって汎用ツールを開発した話

Kajiwara

Chatwork 株式会社では Roggol という汎用ツールを開発しています。これは CQRS における Read Model の更新を行うコンポーネントを汎用的に実装したものです。 しかし、このアプリケーションの実装を開始した当時、社内には、プライベートで Rust を触っている人はいましたが、Rust の業務経験がない開発者しかいませんでした。

このセッションでは、そのような状況下で一般的に学習コストが高いと言われている Rust で汎用的なアプリケーションを開発する上で、開発前後で想定通り/想定外だったことや、 どのような点に苦労したか、どのような点で報われたかなどを共有します。

 

Ferrocene - Enabling Rust in Critical Environments

 Florian Gilcher

How do we bring Rust regulated industries, particularly safety-critical? Cars? Industrial machinery? Maybe planes?

This talk gives an overview what it means to “qualify” the Rust compiler for safety and which approaches Ferrous Systems took to address those needs in Ferrocene.

github.com

 

所感

会場

  • 会場はメルカリさんでした。
    方向音痴な私は、どの入り口が受付か分からず数分うろうろしました(笑)。
  • カンファレンスで当日入館証をいただく形は初めてで、企業見学みたいでした。
  • 無料で飲める魔法の自販機!
    アナウンス前に使ったので「あれ電子マネー非対応なんかい」と思ったら
    そもそもお金要らなかったという、まさかの展開でびっくりしました。
  • コミュ障なのでスポンサーブースに行けず・・・。
    配布物があると近寄り易いのですが、何話していいか分からないポンコツなので
    今回は遠巻きに様子見ただけに終わりました。次回はなんとか・・・。

 

セッション

  • 運営の皆様のタイムマネジメントがしっかりされていてとてもスムーズでした。
  • 最初はマイクトラブルがあったものの、リカバリ早かったです。すごい。
  • 今回でClippyの存在を知るという、Rust書けてない自分に気がつき絶望しました。
  • Rustを導入された企業さんは、柔軟なところが多いと思いました
    (導入の説得で苦労された様子があまりなく。
    導入時のプレゼンが素晴らしいのだと思いますが)
  • C#エンジニアもRustに入りやすいとお聞きして
    自社のC#エンジニアもRust勧誘対象にしたいと思いました。
    C++エンジニアは狙い目だと思っておりましたが)
  • 英語セッションはあまり聞き取れず悔しかったです。
    オンライン(YouTube)だと自動字幕に助けられるのですが・・・英語勉強します。

 

質疑応答

  • 質問の受け付けはSli.doに寄せてありました。
  • 現地でも各自Sli.doを見るスタンスなので
    PCかタブレット持参が捗ると思いました。(Wi-Fiも使わせてくださった!)
  • たくさん質問がついており、進行の都合上読まれないものが出てしまうので
    絶対回答得たい方は現地参加して直接聞くが良きですね。
    (特にスポンサーセッションで、オンラインで別途質問するが難しそう)

 

さいごに

今回も控えめに言って最高でした。

Rust.Tokyoは初めての現地参加でしたが、私は現地参加をオススメします。

Rustaceanの方々に実際にお会いできるのは
オンラインではできない体験で、モチベーションが上がりました。

 

運営の方も推奨されていましたが
聴講側に徹するだけでなく登壇する側も目指したいです!

 

今回も素晴らしいRust.Tokyoでした。

運営の皆様、スピーカーの皆様、貴重な機会をいただきありがとうございました。

 

最後までご覧くださりありがとうございました。

自分が烏滸がましかった話 母上編

えびまよの母上は毎日、手帳に手書きでその日の地元の記録をしています。

  • 最高気温
  • 最低気温
  • (ここ3年くらいは)新型コロナ感染者数

 

情報ソースはN○Kの地元放送局のTVニュース。

10年近くは続いている習慣だと思います。

 

 

アプリ開発テーマを探していた私は
母上のこの習慣に目をつけました。

 

「プラットフォームは何がいいかな」とか
「どんな機能があると便利かな」とか勝手に一人で考えていました。

 

加えて、その頃の私は、
「毎日手書きって面倒くさくないの?」
「データ集めてるんだからそれ使って何かしたら?」
…と、いつものクソガキ思考を一人で巡らせていました。

 

しかし、ある日気づいたのです。

「(手帳をめくりながら)去年はこんなに寒くなかったよね」
「途中でごめん、(時間だから)チャンネル変えるよ」
などなど、この習慣がきっかけで会話が生まれている。

 

手帳には記録の他に予定も書かれているので
過去の記録を遡ると、
当時本人や家族が何をしていたかも一緒に思い出せて
そこでもまた家族のコミュニケーションが生まれている。

 

そもそも、多分、母上はこの習慣を面倒だと思っていない。
特に困っているわけでも改善したいわけでもない。

 

(なぜこの習慣をはじめたんだろう。今度聞いてみよう。)

 

 

ICTは必要だけれど、全部に適用する必要はない。

 

勝手に歯痒く思っていたのはえびまよだけで
ただ自分の歯が痒かっただけ。別に母上の歯は痒くなかった。

そんな自分の勘違いエピソードでした。

 

結局母上の役に立たないなら意味ないな〜と
やらない理由付けをして終わってしまいました。

 

今年はうんこする年にしたいです。

最後に投稿したのが2021年だった件

人様にうんこを見せるのは申し訳ないので

うんこについて思考を巡らせていたら

うんこすら出せなくなったので勇気をもってうんこを出します。

 

うんこは出るものなんだから仕方ない。切り替えていこうんこ。

 

 

中央システムの企業理念をワンライナー化してみた

自社の企業理念は、Pythonの構文で表現されています。

while True:
    if 人生とICTが楽しい:
        さらに豊かになる()

 

ある雑誌に自社が載るらしく、
そこに企業理念を載せようとしたのですが
スペースの関係で、そのまま載せることができませんでした。

 

改行とインデントを維持しないと構文エラーになるので
そのまま載せなければなりません。
(維持したところでエラーになるのはさておき…)

 

ワンライナー化したら載せられるんじゃね?と思い、やってみました。

 

python -c "import itertools; [さらに豊かになる() if 人生とICTが楽しい else チャレンジ() for _ in itertools.count()]"

 

elseを書かないとダメだったので、チャレンジ()を勝手に追加しました。
もちろんこのまま実行するとエラーがでます

 

実際に動く版も作りました。
 ※無限ループさせているので、
  実行させたい物好きな方はCtrl + Cなどで強制終了させてください。

 

python -c "import itertools, random; [print(random.randrange(8)) if random.randrange(5) == 1 else None for _ in itertools.count()]"

 

構文だけ再現できればよかったので、かなりてきとうです。

動作確認環境は、Python 3.8.5、Windows10、PowerShell、です。

 

 

・・・結局、日本語化させた企業理念が載ることになりました。

PHP Conference 2021 参加レポート

2021-10-02 と 2021-10-03に開催されたPHP Conference 2021に
オンライン参加したレポートです。

phpcon.php.gr.jp

 

はじめに

当日に受けたセッションと簡単な所感を述べるスタンスです。
※セッションタイトルに概要へのリンクを貼ってありますので
 詳細はそちらをご覧ください。

私はWeb系の現場経験がない かつ PHP経験ほぼゼロ(!?)なのですが
会社がPHPと縁深いので参加しました。

 

 

アーカイブ

YouTubeチャンネルに配信アーカイブがあるので
今回参加できなかった方もセッションを見ることができます。

www.youtube.com

 

1日目

PHPの今とこれから2021

  • 最新リリースを追うと昔から商用利用されている言語もどんどん進化している
    ことがわかるので胸が熱くなるなと思いました。

 

PHPにおけるコーディング規約と自動整形

  • IDE派だったのですが、IDEの設定がメンバ間で違っちゃったことがあり
    レビューで「あれれー?」が過去あったので
    ツールで自動整形させるのも安全かもしれないですね。

 

フレームワークの内部構造を理解するためにフレームワークを作ってみることにした

speakerdeck.com

 

20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方

speakerdeck.com

  • あくまで"ビジネス"で開発をやっているので、こうなのですよね。。
  • 現実的にできることをちゃんとやる、が基本だと思うんですが
    理想とかロマンは忘れたくないなとも思いました。

 

PHPで学ぶオブジェクト指向プログラミング入門

speakerdeck.com

  • 新人研修の時に受けたかったセッションでした。
  • 成瀬さんのセッションが分かりやすくて面白いので
    どのカンファレンスでも登壇されていたらつい見に行ってしまう。
  • 歴史に沿って、ボトムアップ的説明が分かりやすいなと勉強になりました。
    『オブジェクト指向でなぜ作るのか』もそうだったな。)

 

2日目

いよいよ開始!徳丸実務試験、PHP8上級試験の模擬問題解説

  • 徳丸実務試験、挑戦してみたいなと思いました。
  • PHP前提らしいので、PHP書かないと。。

 

Repositoryパターンを維持しながらN+1問題を起こさないようにする方法論について

speakerdeck.com

  • 結局要件で何が最適かが変わっちゃうところが難しいですよね。。
  • 複数の改善案とメリット・デメリットをあげてくださっているので
    検討の参考資料として、とてもありがたいと思いました。

 

抽象のはしごの上手な登り方~使いやすい汎用ライブラリを作るために~

speakerdeck.com

  • どのくらいの抽象度が良いかも、要件とか文脈とかで変わるんですよね。
  • この「はしご」の感覚をチームで共有できたらなと思いました。

 

SPAセキュリティ入門

www.slideshare.net

  • 徳丸先生のセッションを受けるといつもセキュリティリテラシー
    向上させきゃ(迫真)と思えます。
  • どれがそのシステムにとって最適で、そのリスクの分析とマネジメントを
    どうやっていくか、コストをかけて取り組まないとと思いました。

 

全体の所感

  • 質疑応答ではDiscordが使われていました。
    私はDiscordアカウントを持っていないのでチャットに参加しなかったですが
    盛り上がっていたようですし、セッションと時間が分かれていたので
    ゆっくり質疑応答できて良いなと思いました。
  • ビギナー向けセッションもありましたし、初学者や私のような
    Web開発の現場未経験者でも参加しやすいなと思いました。
  • 2019年に参加した際の企業ブーススタンプラリーが楽しくて忘れられないので
    全面的なオンサイト開催に戻ると良いなぁと思いました。

 

さいごに

運営の皆様、登壇者の皆様、本当にありがとうございました!

自分の専門外のカンファレンスでも、得られるものが多いので
思い切って飛び込んでみるのって大事だなと改めて実感しました。

 

拙筆レポート(平常運転)を最後までご覧いただきありがとうございました。

Rust.Tokyo 2021 参加レポート

2021-09-18にオンライン開催されたRust.Tokyo 2021の参加レポートです。

2019年は未参加、2020年は中止だったのでとても楽しみにしていました。

rust.tokyo


はじめに

こんな感じなので(恥)、セッション内容のレポート記事というより
全体の印象と登壇者資料をまとめるような記事です。

 

 

申し込み

申し込みフォームはTito.を使われていました。
2021年は無料!!!2019年は参加料ありだったはずです。

connpassDoorkeeperなどのようにアカウントは作っていない(はず)ので
申し込みアドレスに次回開催お知らせが来るのかは分からないです。

Twitterアカウントをフォローするなどして情報をチェックした方が
見逃しにくくなると思いました。

twitter.com

 

配信方式

YouTube限定公開でのライブ配信でした。

www.youtube.com

 

セッション

概要は以下から引用しています。
登壇者資料は1つだけ見つけられませんでした(公開していない?)。

rust.tokyo

オープニングセッション

  • Tomohide Takao
  • Rust.Tokyo チームよりご挨拶申し上げます。

 

How Rust triages regressions and prevents them from reaching to stable

  • Yuki Okushi
  • This talk describes how Rust contributors triage regressions and prevent them from reaching Stable Rust. Rust’s release cycle is relatively fast, but how do they prevent regressions? This talk helps you to understand what and how they’ve been working.

speakerdeck.com

www.youtube.com

 

One for All Thread Pool - yatp

  • Tong Mu
  • The database is an application with both IO-intensive and CPU-intensive tasks. This talk will explain how TiKV, a distributed transactional KV database built with Rust, applied yatp, the unified thread pool, which replaces multiple thread pools to optimize the scheduling of the database system.

docs.google.com

www.youtube.com

 

Rustでrbenvよりも7秒速いRubyのバージョンマネージャーを作った

  • Takayuki Maeda
  • Rubyでは、プロジェクト毎のバージョン管理が重要ですが、最も使われているであろうRubyバージョンマネージャーrbenvでRubyをインストールすると2分から3分程かかってしまいます。少しでもRubyのインストールを速くし、バージョン管理をシンプルにするためにPure RustでfrumというRubyバージョンマネージャーを作りました。このセッションではfrumを実装した際に得た知見について話します。

speakerdeck.com

www.youtube.com

 

Node.js in Rust: How to do it and what to expect from it: 株式会社ゆめみ

  • Kirill Vasiltcov
  • 本発表では、RustプロジェクトにNode.jsランタイムを組み込むことが可能だということを示し、そのメリットを説明します。

    Node.jsを組み込む段取りを見ていきます。Node.jsの公式C++組み込みAPIを紹介し、C++非対応に関わらずRustFFIで何ができるかを説明します。この発表の内容の大部分が、Node.js互換可能なプロジェクト用のRustで作られたパッケージマネジャー「Orogene」を開発するときに実験的にNode.jsを組み込んだ結果です。 

speakerdeck.com

 

Production-ready Rust in PingCAP: PingCAP株式会社

  • Wish
  • In PingCAP, we built TiKV, a distributed KV database in Rust, which is used in production by thousands of clients around the world. This talk will show you how we did it via two parts:

    (1) the ecosystem we built for Rust, e.g. libraries and teaching courses.
    (2) experience and lessons we learnt when using Rust in such mission critical scenarios: performance, stability, troubleshooting and so on.

 

Rustとコンテナランタイム

  • うたもく
  • 本発表ではコンテナランタイムでのRustを活用する可能性についての説明します。私が中心となっている開発しているRustのコンテナランタイムのyoukiの経験を踏まえることでより具体的な説明を行います。これらの経験から私はRustはもっとこの分野に貢献するべき言語だと感じました。この発表で知見を共有することで多くのRustaceanにこの分野に関心を持ってもらえることを期待しています。また、発表の最初でコンテナランタイムの技術のcgroupなどについてもyoukiの実際のRustのコードを交えながら簡単に説明します。コンテナを触れたことがあれば、ある程度話が理解できることを目指します。 

speakerdeck.com

www.youtube.com

 

Sh4der Jockey: a tool for realtime visual performances using Rust and OpenGL

  • すぱげっと
  • We present Sh4der Jockey, a tool for realtime visual performances. The tool is used to run multiple shaders in a pipeline to create demoscene-like effects. We present the motivations for building this tool, as well as some of the technical challenges faced as we developed Sh4der Jockey. 

docs.google.com

www.youtube.com

 

Unsafe in Rust (use case with sysinfo)

  • Guillaume Gomez
  • This talk will explain how to use unsafe in Rust, the traps to avoid and provide some tips to make it better. It’ll use the sysinfo crate as example. The goal of the sysinfo crate is to allow users to get system information. The important point being to have one API for all different systems. 

github.com

www.youtube.com

 

クロージングセッション

 

所感

小並感を羅列していきます。

良かった点

  • 進行がかなりスムーズでした。運営の方すごい・・・。
    何度か音声が聞こえない場面はあったもののリカバリが早く気にならずでした。
  • セッションの内容のレベルがかなり高かったです。登壇者の方すごい・・・。
    私は「はえ〜」「しゅげ〜」しか感想が出てこなかったです(白目)。
  • 英語で登壇する方が多かったですが、字幕のおかげで大丈夫でした。
  • 質疑応答のシステムがめちゃくちゃ良かったです
    sli.doで匿名質問&いいねできたので、気軽に質問できましたし
    いいねが多い(聴講者が聞きたい)質問から回答してもらえました。

注意が必要な点

  • レベルが高かったので私が参加して良いのかドキドキしました。
  • 登壇者資料が英語で統一されていてカッコ良かったですが、
    リスニングが苦手(私です)だと
    資料読みつつ&日本語字幕読みつつになるのでちょっと大変でした。
  • オンラインあるあるですが
    登壇者の環境で音声の大きさがまちまちだったので少し音量注意でした。

 

さいごに

めちゃくちゃ楽しかったです。控えめに言って最高でした。

コードを見せながら説明してくれたり
図解で仕組みを説明してくれたり
"Rustの話"のセッションを浴びることができて、参加して本当に良かったです。

2022も開催されるといいなぁと思っています。

 

最後までご覧いただきありがとうございました。

今秋参加予定のイベント

えびまよが2021秋に参加予定のオンラインイベント一覧です。

節操のなさを前面に押し出していくスタイルです。