Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Finch OSSコードリーディング
Search
x-blood
April 24, 2023
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Finch OSSコードリーディング
x-blood
April 24, 2023
More Decks by x-blood
See All by x-blood
Amazon Q Developerでテストコードを生成してみた
xblood
0
57
re:Inventで現地参加したコンテナ関連セッションを振り返る
xblood
0
580
Amazon EKS Pod Identityで何が変わるのか
xblood
0
1.1k
Lizさんに届け!AWS Jr. ChampionとTop Engineerが書籍コンテナセキュリティを読んで感じたこと
xblood
0
1.6k
サーバーレスJavaパフォーマンス選手権 at AWS Dev Day 2023 Tokyo
xblood
2
1.5k
サーバーレスJavaの今 ~SnapStartとWeb Adapterを寄せて~
xblood
4
3.8k
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
2.5k
AWS Glue Git統合のPoCでの活用
xblood
0
240
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
1
1.3k
Other Decks in Programming
See All in Programming
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
260
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
230
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
410
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
420
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
30
13k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
20k
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Raft: Consensus for Rubyists
vanstee
142
7.7k
The browser strikes back
jonoalderson
0
1.7k
Transcript
Finch OSS コードリーディング 佐藤 靖幸 JAWS-UG コンテナ⽀部 #23 春のFinch特集 2023/04/24
JAWS-UG コンテナ⽀部 #23 春のFinch特集 1
⾃⼰紹介 佐藤 靖幸 @yasai_ls JAWS UGコンテナ⽀部 運営メンバー 好きAWSサービス︓ VPC、Lambda、ECS、EKS 2023/04/24
JAWS-UG コンテナ⽀部 #23 春のFinch特集 2 PARTNER NETWORK 2022 APN AWS Top Engineers
アジェンダ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 3 Finch OSSコードリーディング GitHubリポジトリの構成要素
GitHubリポジトリのディレクトリ構成 主要なライブラリ コードリーディング まとめ
GitHubリポジトリの構成要素 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 4 (2023年4⽉24⽇ 時点) 種別
P. Language go 1.20 Linter golangci-lint License Apache 2.0 CI GitHub Actions
GitHubリポジトリのディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 5 finch ├── benchmark
│ ├── container ... コンテナのビルドと起動時間のベンチマークを取得 │ └── vm ... 仮想環境の初期化とベンチマークを取得 ├── cmd │ └── finch ... CLIアプリケーションが格納されているメインとなるソースコード ├── contrib │ ├── hello-finch ... サンプルのDockerコンテナ(finchのAAがある) │ └── logo ... Finchのロゴファイル(svg) ├── deps │ └── finch-core ... Gitサブモジュール。finch-coreリポジトリを参照 ├── docs │ └── design ... 設計ドキュメント ├── e2e │ ├── container ... common-testsを参照。push,pull,runを検証 │ │ └── cosign_data │ └── vm ... 各種vmコマンドを検証
GitHubリポジトリのディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 6 finch └── pkg
... finchのmainコードから派⽣する各種処理 ├── command ... 各種コマンドを実⾏ ├── config ... Finchのコンフィグファイルから設定を適⽤ ├── dependency │ └── vmnet ... LimaマネージドNWを利⽤するためのユーザー操作 ├── disk ... ユーザーデータを保存する永続層を管理 ├── flog ... ログ出⼒ ├── fmemory ... メモリ情報を取得 ├── fssh ... SSH接続の設定と作成 ├── lima ... lima vm に関する共通処理 ├── mocks ... MockGenによって⾃動⽣成 ├── path ... ユーザーデータや設定ファイルなどのパスを特定 ├── support ... プラットフォーム情報などをfinch実⾏時に取得 ├── system ... OSに関連するAPIインターフェース └── version ... バージョン情報
Finchのサブモジュール構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 7 Runfinch/finch └── finch-core
├── lima └── socket_vmnet MakefileによるFinchのパッケージビルド実⾏時に、 依存するGit サブモジュールを利⽤ • Lima ... ⾃動ファイル共有とポートフォワーディン グ、およびcontainerdを備えたLinux仮想マシン • socket_vmnet ... Limaで起動したLinux稼働マシンと 通信するためのライブラリ
主要なライブラリ • cobra • CLIアプリケーションを作成するためのライブラリ。Kubernetesでも 使⽤されている。 • Afero • FileSystem抽象化ライブラリ
2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 8
コードリーディング cmd/finch/main.go Finchにおけるメイン関数(main) ログ出⼒、ファイルシステム管理、メモリ管理などを指定 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 9
コードリーディング cmd/finch/main.go main関数から呼び出されるxmain関数 パス設定を⾏い、finch⽤設定ファイルを読み込む 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 10
コードリーディング cmd/finch/main.go nerdctl を利⽤してcontainerdにアクセスするコマンドと finch⽤のコマンドを、cobraで利⽤するコマンドに指定 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集
11
コードリーディング cmd/finch/virtual_machine.go finch vmコマンドの実装例 start stopなどのコマンド毎に関数として定義 2023/04/24 JAWS-UG コンテナ⽀部 #23
春のFinch特集 12
コードリーディング cmd/finch/virtual_machine_start.go コマンド毎の関数の実装例 Cobraライブラリにお作法として渡す RunEで実⾏される処理を指定。pkgパッケージを参照 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集
13
(再掲)ディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 14 finch ├── cmd
│ └── finch ... CLIアプリケーションが格納されているメインとなるソースコード └── pkg ... finchのmainコードから派⽣する各種処理 ├── command ... 各種コマンドを実⾏ ├── config ... Finchのコンフィグファイルから設定を適⽤ ├── dependency │ └── vmnet ... LimaマネージドNWを利⽤するためのユーザー操作 ├── disk ... ユーザーデータを保存する永続層を管理 ├── flog ... ログ出⼒ ├── fmemory ... メモリ情報を取得 ├── fssh ... SSH接続の設定と作成 ├── lima ... lima vm に関する共通処理 ├── path ... ユーザーデータや設定ファイルなどのパスを特定 ├── support ... プラットフォーム情報などをfinch実⾏時に取得 ├── system ... OSに関連するAPIインターフェース └── version ... バージョン情報 着眼するディレクトリはcmd, pkg、この2つ!
コードリーディング 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 15 contrib/hello-finch/main.go (おまけ)動作確認⽤コンテナはfinchのAAがあるよ︕
まとめ • FinchはLimaに依存しており、LimaのVMに対して操作を⾏う CLIツールとして実装されている。 • Git サブモジュールを活⽤してコアとなる依存モジュール (Lima、socket_vmnet)を管理している。 • OSSのcobraを活⽤したCLIツールの実装の⼀例としてコード
リーディングすると、今後cobraを活⽤する時によさげ︕ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 16
ご清聴ありがとうございました︕ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 17