2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
Rust完全に理解した(嘘)_LT2(全1記事)
リンクをコピー
記事をブックマーク
刈部拓未氏:私からは「業務でRustをしれっと使う方法」について話します。私が最初にRustを触ったきっかけは、プログラミングを始めた頃にいろいろなパラダイムの言語を触ってみたいと思ったことです。スライドにある『7つの言語 7つの世界』という本を読んでいました。
この本の中にRustはありませんでしたが、言語への関心が高まっていた時に見た言語設計などの公式のドキュメントには、ちょうど仕事で触っていたSwiftが、Rustに影響を受けていると書いてあり、それでたまたま知って、興味を持つようになりました。
そのあとは、公式のドキュメントやオライリーのカニの本や、表紙に自転車が書いてあるRustの参考書などを読みながらRustで書いて勉強しました。さらに、C++で書いていた競技プログラミングをRustで書いたり、スライドの右下にある『Go言語でつくるインタプリタ』をRustに移植したりして勉強しました。
徐々に書く量が増えて、Rustを業務で使ってみたいなと思うようになり、前職までにいくつか業務でRustを取り入れてみたことが、今回の本題です。
今回は3つの話をします。1つ目は、謎のCSVコンバータを作った話です。他部署から渡される謎のCSVを自部署が使う謎のCSVに変換するためのツールをRustで書いてみました。
これは設計もなく、変換処理がベタッと書いてあるだけのCLIのツールで、公式ドキュメントを行ったり来たりしながら、なんとかコンパイルを通して動くものを作るためにひたすら書いていきました。今思うと、ひたすらコンパイルエラーを検索して、コピペするコードでした。
よかったことは、わからないことを自分で調べながらやるので、これをきっかけに外部crateの使い方やドキュメントの読み方に慣れたことです。
Rustとは関係ありませんが、この謎のCSVは恒常的に変換する必要はなく、単発だったので、特に運用に乗せることを考えずに書いて、そのまま捨てられるものだったというのも、よかったことの1つだと思います。
また、初めてきちんとしたものを作るきっかけになったので、「よくわからないけれど、とりあえずunwrap()で見なかったことにしよう」と割り切れたのはよかったと思います。
2つ目は、未完のViewerです。社内で高速な画像Viewerを作ろうという話が持ち上がった時に、検証のため作ったものです。これはWebGLをWasm(WebAssembly)経由で呼び出すため、Rustを採用して書いてみました。結局は検証で終わってしまって、本格的にプロダクトに組み込んでチームで開発しようという結論には至りませんでした。
社内の技術検証でRustを使う話をした時に、それほど反対されなかったので、このような技術検証だと、あまり反対されないのだと学びました。
結局、これは本格的な開発には至りませんでした。しかし、周りの誰もRustが書けないチームだったため、仮に本格的にプロダクトを開発するとなれば、それなりに学習コストも発生するのであまりよくない進め方だったと思っています。
3つ目は、マイクロサービスの依存関係を可視化するツールを作りました。このツールは、Terraformで書かれたAmazon SNSと、Amazon SQSの依存関係をパースして可視化するツールです。最終的なアウトプットとしては、スライドの右にあるようなグラフ構造として画像を出力します。
よかったことは、可視化されたことで依存関係が複雑化しているマイクロサービスを発見しやすくなり、社内で共有しやすくなったことです。ほかにも、2つ目のViewer開発の反省を活かして、あまりRustを書かない人に運用を強いらないように、CIには組み込まず、気になる人が気なる時に叩いて確認できる程度にした点はよかったと思います。
このツールを社内のLTで発表したのですが、SREチームの人から「HCLはJSON互換だから、JSONをパースしたほうが速いんじゃないか」と言われました。何も知らなかったのでかなり驚愕したことを覚えています。
マイクロサービスとして本当に必要だったのは、なぜ依存しているのか、また、どういう時に依存するのかという「依存している意味」だったので、これも結局あまり使われないという結末を迎えました。
結論です。社内のニッチなツールや技術検証であれば、どんな会社にもRustで作れるものがけっこうあると思います。同じ作業を繰り返しているようなトイルの撲滅にもいいですし、書き捨てられるようなものや技術検証であれば、特にハードルは低いと体感的に思いました。
ただ、プロダクトとしてRustを使う場合は、スライドに書いてあるようにかなりの責任と覚悟が必要だと思っています。これはRustに限りませんが、中途半端にツールを導入して退職すると、残される人はかなり運用がつらくなってしまうので、ある程度自分が責任を負える範囲で作るのがいいと思います。そういう意味では、Rustを仕事で使ううえでのハードルはRustそのものよりも人にあるのではないでしょうか。
学習において非常によかったことは、業務の時間にRustを書けたことです。Rustでの良い書き方を求めずに、unwrap()、unwrap()、unwrap()である程度動くものを作って、社内でフィードバックをもらいました。家に帰ってから本や公式のドキュメントを読んで、翌日また修正するというサイクルが作れたのは、非常によかったです。写経に飽きた人にはすごくおすすめです。
ということで、「自分の手の届く範囲で業務でRustをしれっと使う方法」の発表は以上です。
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦