Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finch OSSコードリーディング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
48
re:Inventで現地参加したコンテナ関連セッションを振り返る
xblood
0
560
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.7k
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
2.5k
AWS Glue Git統合のPoCでの活用
xblood
0
230
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
1
1.2k
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
AIが無かった頃の素敵な出会いの話
codmoninc
1
210
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
130
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
170
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
150
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
150
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
220
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
170
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
340
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Language of Interfaces
destraynor
162
27k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
Designing for humans not robots
tammielis
254
26k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.9k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
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