2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
石澤基氏(以下、石澤):作成したテストケースは、他のユーザーが利用できるようにコンテナイメージとして配布できます。dockerでコンテナイメージを扱ったことがある方はイメージがしやすいと思うのですが、dockerと同じように、protospec pushというコマンドで手元にあるテストケースをコンテナレジストリに保存して、protospec pullというコマンドでレジストリからダウンロードして使うことが可能になっています。これにはOCI Artifactsという仕組みを利用しています。
OCI Artifactsは、任意のファイルをコンテナイメージに保存するための仕組みです。これは、dockerなどのコンテナランタイムが使用するOCI ディストリビューションとOCIイメージというコンテナイメージに関する標準仕様のユースケースの1つとして定義されています。そのためOCI Artifactsそのものが仕様ではないことに注意してください。
ECRやGitHubのパッケージレジストリなど世の中にあるさまざまなレジストリたちは、すでにOCI Artifactsに対応しているので、protospecのテストケースを実際にpushして保存できます。このような仕組みは、「Helm」や「OPA」などのクラウドネイティブなツールでも利用されています。
Goのコードで「OCI Artifactsを活用したい」という場合は、「ORAS」というツールが非常に便利です。ORASはOCI Artifactsを利用して、任意のファイルをコンテナイメージにしてビルドするためのコマンドラインツールとして提供されていますが、ORAS自体はGoのパッケージとしても使用できます。
ここからはORASを使った実装例を簡単に紹介していきたいと思います。まずはOCI Artifactsをレジストリにpushして保存する場合の実装例です。
最初にORASのパッケージをインポートします。ORAS以外にOCIイメージの仕様に準拠するためのパッケージが必要になるので、それもあわせてインポートします。
次に、インポートしたパッケージを使って、dockerクライアントを生成します。そこからさらに、Resolverを生成します。Resolverは、コンテナ名を与えるとそこからレジストリのドメインやコンテナ名などを抽出して解決してくれる機能をもつ、クライアントのようなものと考えるとわかりやすいかなと思います。
Resolverの準備ができたら、コンテナイメージの中身を定義していきます。ORASでは、コンテナイメージの中身を一時保存する領域としてStoreという名前を使っています。これは、メモリ上にStoreを作成して、そこにhello.txtという名前でファイルを追加して保存しているという簡単なサンプルです。
最後にコンテナ名を決めて、先ほど用意したStoreと共にORASのpushという関数を呼べば、レジストリにコンテナイメージをpushできます。push関数の戻り値には、レジストリに保存されたコンテナイメージを一意に特定するためのダイジェスト値などが含まれているので、その値を後続の処理で使うことも可能です。非常にシンプルなコードで、簡単にpushのコードが書けました。
pullの場合も、非常に似た使い方になります。例えばコンテナイメージをレジストリから取得して、その中身にあるファイルなどをspecというローカルディレクトリーに展開したい場合は、まずFileStoreというStoreを作ります。展開先としてこの場合ではspecというローカルディレクトリーのパスを指定しています。
pushと同様に、取得するコンテナイメージの名前と作成したFileStoreを指定して、ORASのpullという関数を呼び出せば、pullができるようになります。これでコンテナイメージの中身のファイルが、ローカルに指定したspecというディレクトリーに展開されて、ファイルを使えます。ここまでがORASを使った実装例の簡単な紹介でした。ORASを使えば非常に簡単にOCI Artifactsに対応できるので、要件がうまく合えば、非常におすすめです。
ここまで簡単に、protospecやOCI Artifactsについて紹介しました。最後にまとめです。今回は、仕様準拠のためのテストケースの共有を可能にするprotospecについて紹介しました。protospecはGoを使用して実装して、ORASというパッケージを使用してOCI Artifactsとしてテストケースの共有を可能にしています。今後もprotospecはさまざまなプロトコルなどの対応を実装していきたいと考えています。
発表は以上です。ご清聴ありがとうございました。
司会者:石澤さん、セッションありがとうございました。私はなかなか自分のユースケース以外に、丁寧にRFCなどの準拠したツールを作るのが得意ではないので、そういうのをやっている人を見ると「神なんじゃないかな」とすごく尊敬します。
石澤:いやいやいやいや(笑)。でも謎解き感があって楽しいなあと個人的には思うことが多いです。
司会者:なるほど。
石澤:RFCの文章を読んで、これはどういうことなんだろう? というのを確認しながら実装していくのが、けっこうおもしろいなと思います。
司会者:これからも人類のためにがんばっていただきたいと思います。
石澤:はっはっは(笑)。ありがとうございます。
司会者:それでは石澤さん、セッションありがとうございました。
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05