2024.12.24
ビジネスが急速に変化する現代は「OODAサイクル」と親和性が高い 流通卸売業界を取り巻く5つの課題と打開策
リンクをコピー
記事をブックマーク
石澤基氏(以下、石澤):作成したテストケースは、他のユーザーが利用できるようにコンテナイメージとして配布できます。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の文章を読んで、これはどういうことなんだろう? というのを確認しながら実装していくのが、けっこうおもしろいなと思います。
司会者:これからも人類のためにがんばっていただきたいと思います。
石澤:はっはっは(笑)。ありがとうございます。
司会者:それでは石澤さん、セッションありがとうございました。
2025.01.16
社内プレゼンは時間のムダ パワポ資料のプロが重視する、「ペライチ資料」で意見を通すこと
2025.01.15
若手がごろごろ辞める会社で「給料を5万円アップ」するも効果なし… 従業員のモチベーションを上げるために必要なことは何か
2025.01.09
マッキンゼーのマネージャーが「資料を作る前」に準備する すべてのアウトプットを支える論理的なフレームワーク
2025.01.14
コンサルが「理由は3つあります」と前置きする理由 マッキンゼー流、プレゼンの質を向上させる具体的Tips
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.14
目標がなく悩む若手、育成を放棄する管理職… 社員をやる気にさせる「等級制度」を作るための第一歩
2025.01.10
プレゼンで突っ込まれそうなポイントの事前準備術 マッキンゼー流、顧客や上司の「意思決定」を加速させる工夫
2025.01.07
資料は3日前に完成 「伝え方」で差がつく、マッキンゼー流プレゼン準備術
2017.03.05
地面からつららが伸びる? 氷がもたらす不思議な現象
2025.01.08
職場にいる「嫌われた上司」がたどる末路 よくあるダメな嫌われ方・良い嫌われ方の違いとは
安野たかひろ氏・AIプロジェクト「デジタル民主主義2030」立ち上げ会見
2025.01.16 - 2025.01.16
国際コーチング連盟認定のプロフェッショナルコーチ”あべき光司”先生新刊『リーダーのためのコーチングがイチからわかる本』発売記念【オンラインイベント】
2024.12.09 - 2024.12.09
NEXT Innovation Summit 2024 in Autumn特別提供コンテンツ
2024.12.24 - 2024.12.24
プレゼンが上手くなる!5つのポイント|話し方のプロ・資料のプロが解説【カエカ 千葉様】
2024.08.31 - 2024.08.31
育て方改革第2弾!若手をつぶす等級制度、若手を育てる等級制度~等級設定のポイントから育成計画策定まで~
2024.12.18 - 2024.12.18