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
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
290
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.6k
すこし踏み込む CancellationToken
htkym
2
1.4k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
100
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
990
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
490
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
25
10k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.5k
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
SREの越境 / SRE Collaboration
y0hgi
2
290
Intent as Code
shoppingjaws
6
1.1k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Git: the NoSQL Database
bkeepers
PRO
432
67k
Producing Creativity
orderedlist
PRO
348
41k
Six Lessons from altMBA
skipperchong
29
4.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
720
sira's awesome portfolio website redesign presentation
elsirapls
0
430
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing Powerful Visuals for Engaging Learning
tmiket
1
580
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
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