へんてこのブログ

日々気づいたことや、最近やっていることを書いています

kitematicを読んでる

前回でとりあえずElectronのことが少しは分かったので、今回は他のElectron製のアプリのコード読んでみることにした

選んだのはdockerのGUIアプリのkitematic

github.com

選んだ理由としては、kitematicを使った時の最初の印象がすごいみたいな感じだったのと、単純にdockerとどう連携してるのかが気になったのでこれを読むことにした

読み方

とりあえず普段使ってるIntellij IDEAにimportして読んでる
今のところはビルドせずに単純に読むだけ、コードジャンプはしたいのでIntellij IDEAにお任せする、みたいな感じで読んでる

kitematicがlocalのdockerとどうやって連携しているか

まずlocalのdockerとどうやって連携しているのかが気になったので、そこから読み進めていってる

結論としては、kitematicはdockerのRemote APIを使って連携してるっぽい
https://github.com/docker/kitematic/blob/master/src/utils/DockerUtil.js

当初は普通に child_process.execSync とかでdockerコマンド叩いてるのかなとか妄想してたら、そうだRemote APIあるやんってなった
もっと詳しく見ると、どうやらnpmモジュールのdockerodeを使ってるみたい
便利すぎるこれ…

といいつつ、dockerのデーモンの生存確認として、child_process.execSync を使ってるみたいだった
https://github.com/docker/kitematic/blob/master/src/utils/DockerUtil.js#L120

さいごに

読むの楽しくなってきたからもう少し読んでみる
次はdockerやVirtualBoxなどの、localのインストールしておく必要がある依存しているもののインストールをどうやって行っているのかが知りたいのでそこら辺を見てみる