>100 Views
October 10, 26
スライド概要
10年放置した家庭内IoTを、TinyGo と Claude Code で作り直した話
Credo: この腕で切った傷さえもっと愛せるなら ガンガンとITネタ発信してますのでどしどしフォローしてね! 名前の由来はイモリを二匹飼ってるからです
なんか小さくてかわいいGoなやつ 10年放置した家庭内IoTを、TinyGo と Claude Code で作り直した話 Sreake事業部 ソリューション3部 加藤 泰隆 Copyright © 3-shake, Inc. All Rights Reserved.
会社紹介 会社名 株式会社スリーシェイク 設立日 2015/1/15 代表者 代表取締役社長 所在地 東京都中央区銀座8丁目21番1号 住友不動産汐留浜離宮ビル7F 吉田 拓真 Googleクラウド・AWSの両方のエンジニアリングに強みを持つ (2024年8月に国内2例目の、GoogleCloudのDevOpsスペシャライゼーションを取得) Mission: インフラをシンプルにして イノベーションが起こりやすい世界を作る Google Cloud×SRE / GenAIにおいて、スリーシェイクは国内トップパートナー Vision: 労苦〈Toil〉を無くすサービスを適正な価格で提供し続ける 従業員: 200名over 日本のSREをリードする あらゆるサービスを 連携するハブになる インフラ・アプリ・データ・セキュリティ・AI 全方位で顧客の内製化を推進する伴走支援 あらゆるSaaSをノーコードで連携する クラウド型ETL/データパイプラインSaaS 10 0 Engineer 60% 50 事業者が抱える セキュリティリスクをゼロに 「いいエンジニア」を あなたのチームに セキュリティ対策をワンストップで 実現する脆弱性診断SaaS ハイスキル人材の紹介とHR戦略支援の両輪で エンジニア組織の課題に併走 0 2015 2016 2017 2018 2019 2020 2021 2022 会社・事業部説明資料(SpeakerDeck)
自己紹介 加藤 泰隆 / Yasutaka Kato SNS / キャラクター紹介 SIer→事業会社→ITコンサルタントとして四半世紀業界を渡り歩 いてきました。SRE/CCoE/CSIRT経験があり、インフラ・セキュ リティ周りの業務をメインに担当しています。 その一方でOSSコミッターとして個人プロダクトを制作・リリー スしています。 いもいもくん(CV:かとうやすたか) どんどんフォローしておくんなまし! Portfolio: https://lapras.com/public/7JJE0AD
人魚 煮付け Copyright © 3-shake, Inc. All Rights Reserved. ※ 出てきません
日曜大工的に作ったIoT機器、 その後ちゃんとメンテしてます…? ワイは、まったくしていませんでした。 Copyright © 3-shake, Inc. All Rights Reserved.
ハードだけ交換して放置されたIoT機器の技術的負債 水槽クーラー Python製・自作 1 依存ライブラリ、なんだっけ そもそも何をpipで入れたのか、もう覚えていない 10年選手 2 当時のPythonが、もうEOL 動いてるからいいか・・・ 3 10年 ハードコードの地層 水温の閾値もGPIO番号も、全部コードの中に直書き。どこPINつかってたっけ?? Copyright © 3-shake, Inc. All Rights Reserved. 4
そこに、TinyGo が現れた。 Copyright © 3-shake, Inc. All Rights Reserved.
TinyGoが切り開いたリファクタリングへの道 これまで いま IoTに、Goという選択肢がなかった TinyGoで、現実的な選択肢になった マイコンといえばC / C++、じゃなければPython。 僕はGo歴は7〜8年。手慣れた言語のまま、小さなバ 慣れた言語で書けないから、そもそも作り直す気にな イナリに収まる。 らない。 今こそ、リファクタリングの契機だ! Copyright © 3-shake, Inc. All Rights Reserved. 6
Claude Codeによるリファクタリング 元コード 壁打ちデバッグ 着地 10年動いた実装が、ある エラーログを渡して直す 破綻せず、整ったコードへ 動作実績のある元コードは、 一発で完璧を狙わない。 拠り所があるから迷走しない。 それ自体が一番強い仕様書。 ログを見せて対話的に詰める。 人間が読めるかたちで着地。 ゼロから書くより、ずっと速い。 後輩指導をしている感覚。 日曜大工的な工夫の延長線。 スマホにAPI叩くURL入れてるので これを治さなくてもいいし Copyright © 3-shake, Inc. All Rights Reserved. 7
小さくてかわいい、1つのバイナリへ Before After ● 大量の依存ライブラリ ● シングルバイナリ、ひとつだけ ● ランタイムありきの構成 ● 設定は外出し、直書きを撤去 ● 何が入っているか把握できない ● 軽量化で生まれた、余裕 ● 怖いので、そっとしておく ● その余裕が、新機能実装の余地になる Go言語のサイズよりさらに27%もサイズ圧縮されたぞ!すごいぞTinyGo!! -rwxr-xr-x@ 1 yasutakakato staff 8122783 9月 11 17:41 slim -rwxr-xr-x 1 yasutakakato staff 2159696 9月 11 17:40 slim Copyright © 3-shake, Inc. All Rights Reserved. 8
家庭に眠るIoT機器を、TinyGoで 1 放置した負債は、勝手には直らない 配線はリファクタしないのか? 10年経っても、直るどころか地層になるだけでした 2 ・・・ 動いている実装は、最強の仕様書 元コードがあるから、AIに任せても破綻しない 3 人間、体感してこそ 手元の一台で試すと、TinyGoの手触りが一発でわかります 家に眠っている、あの一台。ぜひTinyGoでレッツ・リファクタリング! Copyright © 3-shake, Inc. All Rights Reserved. 9
終 制作・著作 ━━━━━ ❸ⒽⓀ
おまけ:(Tinyじゃないけど)Go言語で色々作ってます! その他にも https://github.com/yasutakatou に、おもちゃ箱があります! ① ② go-lc4ri rabbitRPA Markdownの手順書をそのままターミナルで実行できる シングルバイナリでRPAを!? 半自動&証跡残しのGoなやつ ありえない発想を形にしたGoなやつ https://github.com/yasutakatou/go-lc4ri https://github.com/yasutakatou/rabbitRPA ③ ④ slabot goToMap Slackからコマンド実行することで Googleマップをつかって オペレーションをChat化したGoなやつ 街探検ゲームを作ってみたGoなやつ https://github.com/yasutakatou/slabot Copyright © 3-shake, Inc. All Rights Reserved. 遊びにきてね! https://github.com/yasutakatou/goToMap 10