くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

SleeFiにおけるTokenの流れ

はじめに

私は、仮想通貨自体を取り扱ったことがない状態でSleeFiというNFTゲームに参入しようとしています。

blacktanktop.hatenablog.com

もしご興味がありましたらぜひ、公式Discordへ参加ください

discord.gg

--追記--

当初は一般性を持たせて表現したかったのですが、ゲームによって様々であり一般性を持たせるのが困難と判断して、今後プレイしていきたい、SleeFiに着目して記事を再構成しました。


本記事では、SleeFiにおけるTokenの流れなどをはっきり理解していない状態でしたので、ざっと現金から取引所、MetaMask、そしてSleeFiにおけるTokenの流れについて、現段階の解釈をまとめてみました。

全体像が見えると、構造上どこが稼ぐポイントなのかが見えてくると思います。

書籍でも学びたい方はこちらの記事に良い書籍を紹介しています。

blacktanktop.hatenablog.com


SleeFiにおけるTokenの流れ

概要

はじめて仮想通貨を始める前提です。図をみていただければなんとなくつかめるように作成したつもりです。

あくまでも一例であると思って眺めていただければと思います。

図の色と説明文の色は大体合わせています。

SleeFiにおけるTokenの流れ

  1. 暗号資産取引所に現金でSleeFiで指定されている仮想通貨購入(つまりAVAX)

    ・取引所は「銀行のようなもの」と考えるとわかりやすいかもしれません

  2. 購入したAVAXをMetaMaskへ出庫

    MetaMaskは「お財布のようなもの」と考えるとわかりやすいかもしれません

  3. MetaMaskからゲーム内ウォレットへ出庫

    ゲーム内ウォレットAVAXでBed NFTを購入します

    ・ゲーム内で付与されるゲームTokenであるSLFTガバナンスTokenであるSLGTで遊びます

  4. SleeFiで睡眠によってSLFTSLGTを稼ぐ

    ・効率よく稼ぐために、SLFTを使ってガチャをまわしたり、Bed NFTを強化したりします

    ステーキングを行うと、効率よくSLFTSLGTを稼げるようになったりします

    マーケットプレイスがある場合は、Bed NFTやアイテムの売買・リースなどが可能

  5. 一部のSLFTSLGTは売却してMetaMaskへ入庫

    ・稼いだSLFTSLGTを現金化したい方向けです。常にゲームで使い続ける方はこれ以降は気にする必要がありません

  6. SLFTSLGT売却し得た仮想通貨暗号資産取引所にへ入庫
  7. 暗号資産取引所で入庫した仮想通貨現金へ売却
MetaMaskの複数アカウント分けることについて(上級者向け)

図の中でも表記していますが、MetaMask内で資金運用アカウントゲームプレイ用アカウントの2つを用意していますが、1つのアカウントでもNFTゲームを遊ぶことは可能です。しかし、なぜ分けているかというと、MetaMaskのゲームプレイ用アカウントゲーム内ウォレットでのやり取りが行い、資産が溜まってきた時に何かの安全性の不都合により、アカウントから資産が消えるといったことが起きうるからです。

なので、安全性を考慮して、踏み台を用意しているようなイメージです。

面倒ですが、図のようにしておくことで管理は大変になりますが、万が一ゲームプレイ用アカウントに何かあっても、資金運用アカウントは守られる可能性が高まります。

少なくともNFTゲームごとにゲームプレイ用アカウントは分けておくほうが、怪しいゲームをプレイした時の不都合のリスクを減らすことができます

MetaMaskの設定については、Light_SNBK記事に詳細に書かれているので委ねます。

note.com

MetaMaskの複数アカウントの設定の仕方はこの記事がわかりやすかったです。

defi-beginners-note.com

まだ暗号資産取引所のアカウントすらないよという方は以下の記事を参考にしてください

blacktanktop.hatenablog.com


おわりに

仮想通貨をはじめて取り扱ったり、NFTゲームをやるのがはじめての場合は、全体像が見えずに、一体どんなふうに稼ぐのかが見えづらかったですが、 いろんなWPやDiscordの中の人に質問したりすることで、理解が深まりました。(謝辞は後ほどつけます。)

私が参加しているSleeFiというNFTゲームに参加しています。睡眠 × Earn × NFTの「睡眠」と「睡眠の質」を評価して、付与されるToken量が変化するといった形で「睡眠」に特化したNFTゲームです、特にウェアラブルバイスがあると更に付与されるToken量がupするとのことで、Apple Watchが対応しているので、とても楽しみです。

もしご興味がありましたらぜひ、公式Discordへ参加ください discord.gg

公式HP sleefi.com

【SleeFi】OKCoinからMetaMaskへのAVAXの移動方法について

はじめに

現在話題のSleeFiの資金準備についてです。

  • 仮想通貨を扱ったことがない方
  • またはOKCoinで日本円からAVAXを購入するのが初めての方

が対象かと思います。

また、SleeFiってなに?という方はこちらの記事を読んでください。

blacktanktop.hatenablog.com

SleeFiをプレイ前の通貨の準備

SleeFiでは、AVAXという仮想通貨を使って、ベッドNFTを購入します。そのためAVAXを準備する必要があります。さらに私は、日本円でAVAXを買いたかったので、金融庁の認可がある国内取引所であるOKCoinで開設しました。OKCoinは2022年7月19日から日本円からAVAXが買えるようになったようです(比較的最近ですね。)

申し込み自体はWebでできますが、最終的に郵送が絡むのでOKCoinへ日本円を入金(銀行振込)できる状態になるのに申し込みから4-5日かかりました。問い合わせをしたところ、比較的混んでいるようで、Webの申し込みが完了しても、住所確認のハガキの送付処理に2営業日ほどかかっているようです。WLを持っている方のセールは8/13 9/2、一般販売は8/14 9/3 ~ なので、早めの準備(一週間前の8/22-23に流行っておきたい)をおすすめします。

8/14~のジェネシスベッドNFTセールでジェネシスベッドを買うためには、AVAXを買うタイミングにもよりますが、おそらく約5万円程度は必要になってくるのではと思っています(一応は$300程度のAVAXということにはなっています。あまりに売れたら追加販売され$500程度のAVAXとのこと。円安つらいですね・・・)

  • AVAXを取り扱っているOKCoinのアカウントを作成
  • OKCoinへ入金
  • AVAXを購入
  • MetaMaskをインストール
  • OKCoinからMetaMaskへ移動

といった流れが必要です。

まだOKCoinのアカウントを作成していない方は、以下の私の紹介リンクでアカウントを作成するとビットコイン1000円分がもらえるそうです。良ければ使ってください。 www.okcoin.jp

  • MetaMaskをインストール、設定について説明しているわかり易い内容がこちら。私もこれを見てMetaMaskの設定を行いました。 note.com

ただこちらにはOKCoinからのMetamaskへのAVAXの移動については書かれていないので、そちらについてはこちらにまとめました。(OKCoinへ入金は単純な銀行の振り込みですので省きます。)

OKCoinでのAVAXの購入

これは結構簡単なので簡易にします。 1. TOP画面の左上の販売所をクリックし、AVAXをクリック。 2. その後、適切な金額を入力して、確認

販売所での購入例

または、タイミングを見計らって、指値で買いたい場合は、取引所をクリックし購入してみてください。

OKCoinからのMetamask資金移動

既に、OKCoinへ入金、 AVAXを購入、MetaMaskをインストールまでが終わっている前提です。まだの場合、は上記の記事を参考にしてみてください。

では、OKCoinからMetaMaskへAVAXの移動を行う方法を書いていきます。以下の画像の様に、 1. 暗号資産出庫を選択します。 1. 暗号資産のプルダウンでAVAXを選択します。

OKCoinからMetaMaskへの資金移動(暗号資産出庫)

そうすると以下の画面に切り替わるので順番に必要な情報を入力していきます。(以下は一例ですのでご自身の状況に合わせて確認して行ってください)

OKCoinからMetaMaskへの資金移動(情報入力)

  1. 暗号資産:AVAXを選択します。

  2. ネットワーク:Avalanche C-Chainを選択します。

  3. 出庫先アドレス:事前に作ってあるMetaMaskのウォレットのアドレスをコピーしたものを貼り付けます。

  4. MetaMaskのスマホアプリの場合は左図(上図)のように中央のアドレスが書かれているところをクリックするとコピーされます。PCの場合は右図(下図)のように上部のアドレスが書かれている部分をクリックするとコピーされます。のでコピーして出庫先アドレスへ貼り付けます。

    MetaMask(左:スマホアプリの場合、右:PCの場合)

  5. 受取人との関係:本人を選択します。

  6. 出庫先:プライベートウォレットMetaMaskを選択します。

  7. 2つのチェックボックスをチェックします。

  8. ご出庫数量:希望出庫量を入力します。(初めての場合は、少額で試して上手くいくのを確認しましょう)

  9. 入出金口座:チェックします。

  10. 出庫手数料:0.01のままにします。(多くすると、出庫にかかる時間に変化があるようです)

  11. 取引目的:本人の外部ウォレットへの送付を選択します。

  12. 実行をクリック

  13. 確認画面に遷移しますので確認をクリックすると終了です。(SMSやEメールの認証はある場合があります。)

  14. ステータス画面が5分くらい待つと、ステータスが出庫処理完了となります。参考画像は、手数料がもったいないですが、初めてなので、0.01AVAXだけを出庫した時の例です。

0.01AVAXを出庫した時の例

この時点で、MetaMaskを見るとAVAXが移動していると思います。確認してみてください。

以上でOKCoinからMetaMaskへの暗号資産の移動が完了です。

SleeFiのDiscordへまだ参加してない方はぜひご参加ください discord.gg

おわりに

これで、OKCoinからMetaMaskへのAVAXの移動ができました。 一度体験してみると、案外簡単ですが初めての場合は、5分待っている間に不安になりますね。でも、きちんと意味を理解してここにはこのアドレスを入れるはずだと理解しながらやれば間違いなく行うことができました。

追記

Light_SNBKさんが、追加記事でOKCoinの購入からMetaMaskへの移動について記事にされています。 こちらもご参考にしてくださいね。

note.com

寝て稼げるって本当?SleeFiってどんなゲーム?


はじめに

現在話題沸騰中のSleeFiという、Sleep to Earn のNFTゲームに興味を持ったので、分かる範囲で解説していきたいと思います。

その前に、NFTゲームって何?っていう方もいると思います。

そもそも、NFTがわからんって方は、書籍紹介していますので読んでみてください。 (ネット記事でも十分サーベイはできますが、内容の品質を考えると書籍で情報を得ることをおすすめします)

blacktanktop.hatenablog.com

私も仮想通貨を買ったこともなかったので、そのような方は記事の後半の仮想通貨を取り扱ったことがない方向けにて、どうやって買えばいいのか、おすすめの国内仮想通貨取引所SleeFiで遊ぶための資金準備などを記載したので読んでください。

NFTゲーム

2021年のNFTブームに乗り、いわゆるスマートフォンソーシャルゲームのようにゲームをプレイし、そのゲーム内のキャラクターを販売したりして報酬を得る「Play to Earn」が流行しました。新たな稼ぎ方として注目されるようになりました。そして、2021年後半には「Move to Earn」という考えが浮上し「動いて稼ぐ」つまり、歩いたり、走ったりして、移動することで稼ぐNFTゲームが流行しています。代表的なものはSTEPNですね。

今回はSTEPNの解説はしませんが、気になる方は公式ページを読んでみてください。


SleeFiとは

そして、本題のSleeFiです。 sleefi.com

現在まだゲームはできませんが、先行テスターを募集していたりしてものすごく盛り上がっています。

また、私はDiscordに加入して、ひたすらβテスターのGiveawayに応募、広報活動に力をいれて、翌日にはβテスター当選のDMを幾名からのOGさんからいただきました。

そして、7/28までに15000人のコミュニティにすれば、さらなるプレゼントがいただけるイベントが投稿現在走っています。(--追記-- 7/24に達成見込み)

他にもいろんなイベントが走ってます、詳しくは追記を御覧ください

興味が湧いたかたは早速、公式DiscordにJoinしてみてください。discord.gg Discordをやったことない方は、ユーザー名を適当に書いて「はい」のボタンを。 すでにアカウントがある方は、更に下の「既にアカウントをお持ちですか?」をクリックしてください


Sleep To EarnであるSleeFiの特徴

Move To EarnであるSTEPNとの大きな違いは、トークン(仮想通貨)の稼ぐ方法が違います。Move To Earnの場合は「リアルに歩いて(走って)移動する」こと自体がトークンを稼ぐための条件になります。 しかし、Sleep To EarnであるSleeFiは、「実際に睡眠する」ことがトークンを稼ぐための条件になります。


SleeFiをどんなふうに楽しむのか

以下のような流れで、寝ることで、お金を稼ぐことができるゲームです。

  • SleeFiではメインのNFTはベッドです。(STEPNだとスニーカーでしたね。)

  • そのNFTベッドを保有します。(AVAXで購入します。)

  • その上で実際に眠ることで、ゲーム内仮想通貨(トークン)であるSLFTやSLGTを稼ぐことができます。

  • トークンでゲーム内のアイテムやそのたNFTの購入ができる。

  • さらにガチャ機能(アイテムやベッドが排出される)を回すことができる。

  • さらに、Quest Systemが開発予定で活動状況に応じて報酬が獲得できる
  • そして、ゲーム内で得た、SLFTやSLGTは売却することが可能(大事)。

初期投資(一体最初にいくらくらいかかるの?)

寝ることでトークンを稼げるとしましたが、ベッドを買うための初期投資が必要です。

初期投資額が気になる方が多いのではないでしょうか?

まだ未定な部分もありますが保有する必要があるベッドNFTは自身のSleeFiでの枠によって変わります。 WL枠のGiveawayがあったら必ず参加した方がいいです。 WL(ホワイトリスト)というのは、一定の貢献が認められたメンバーや、イベントの抽選で当たるもの希少性が高いです。

WLの説明

  • WL枠:WL保持者は、一般枠よりも12AVAX引きで購入することができる
  • 一般枠:約$300相当のAVAXで販売される
  • セールが好調で早く売り切れた場合、追加で1,000個のGENESIS Bedを販売しますが、その場合は$500相当のAVAXで販売予定

追加枠が一般販売枠よりも価格が低く提供されることは決してありませんとのこと。


初期投資が難しい人は?

プレイするためにはベッドNFTを購入する初期投資が必要になりますが、現在ベッドをたくさん持っているユーザーからレンタルできる機能が開発中です。この機能が実装されれば基本初期投資なしでプレイできます。


稼げるの?

稼ぐの定義によりますが、ホワイトペーパー(WP)によると

ユーザーは睡眠を行う前に「メインベッド」、起床時間を選択した後に「スタート」を押すことで計測が開始されます。 計測中は「睡眠時間」、「睡眠の質」がスコア化され、起床したタイミングで「ストップ」を選択することで、トークンの支払いが行われます。付与されるトークンの量は、指定したアラームの時刻に近づくほど増えていきます。

とあります。 寝ること(計測をすること)でトークンの支払いが行われるのは間違いありません。なので程度はあるもの稼げるは稼げます。 トークンの価値は日々変化します。投資の要素があるので必ずしも初期投資を上回るほど儲かるのかは保証されません。 しかし期待はとてもあります。


SleeFiのトークンへの期待とリスク

SleeFiへの期待が高まったり、ゲーム人口が増えるとトークンの需要が高まり、トークンの価格も上昇するでしょう。なので、初期費用以上のリターンが見込むために、SNSなどでSleeFiの話題が活発な状態など如何にこのような状況を全体として作っていくかがポイントになります。

一方で、SleeFiの話題が減り、過疎化するとトークンの需要は下がり、トークンの価格も低下するでしょう。こういった状況になると、初期費用を回収することが困難になります。

さきほど述べた通り、トークンの価値は日々変化します。ビットコイン・イーサリウムなどの流通量が多い仮想通貨の暴落によってもトークンの価値は変化します。NFTゲームはゲームではありますが、投資であることも忘れず、全て自己責任になることは理解する必要があります。


SleeFiの基本的な遊び方

Closed βテストの準備方法

8/1から始まるClosed βテストの準備方法について、公式にアナウンスされました。 待ち遠しいですね。

公式medium記事 medium.com

日本語解説記事 note.com

始め方
  1. SLeeFiのアプリをダウンロードする
  2. SLeeFiでユーザー登録を行う
  3. SLeeFiで自分のウォレットを作成する
  4. SLeeFiのウォレットにAVAXを送金する
  5. SLeeFiでベッドNFTを購入する

これだけで、SLeeFiの準備は完了です。 睡眠計測開始時間から20時間後にエネルギーが回復し、1日1回睡眠の計測を行うことができます。

睡眠測定の仕方
  1. 自分の睡眠時間に合わせてベッドを選択(ショートスリーパーでもロングスリーパーでも公平です)
  2. 寝る前に起床時間を設定
  3. 寝る時にアプリで「スタート」を選択
  4. 寝る
  5. 起きたらアプリで「ストップ」を選択
  6. トークンやLucky Boxを獲得 獲得トークンの量は、指定したアラームの時刻に近いほど増えます。さらに良質な睡眠を取っている人に多くのトークンが付与されるとのこと(そのうちウェラブルデバイスとリンクして睡眠の質を測定すると思われれます。

--追記--

ホワイトペーパーが更新されました。 想像していたとおり、ウェアラブルバイスを装着して睡眠計測を行うとより多くのトークンを獲得することができるようになりました。 現状対応しているウェアラブルバイスは以下で、今後対応デバイスをふやしていくとのこと。

さらに、SleeFi独自のウェアラブルバイスの開発も進められており、独自デバイスだとさらに多くのトークンが付与されるように開発を進めているようです。楽しみが増えましたね。

その他
  • ジュエル
  • ガチャ
  • Bed-Minting
  • レンタル
  • エス
  • 保険(ベッドやジュエルは一定確率でBurnされる可能性がある、それを守るための保険)

これらによって、効率的に寝ることでトークンを貯められたり、ベッドをコレクションしたり、貸し出したりするなど様々な遊び要素があります。今後その他の機能も追加される可能性があります。

詳細はWPのGame-Fi Systemを読んでいただければと思います。


仮想通貨を取り扱ったことがない方向け

SleeFiをプレイ前の通貨の準備

こちらの記事にまとめたので、見てください。

blacktanktop.hatenablog.com

おわりに

とあるきっかけでNFTゲームに興味を持ちはじめて、何をやろうかなと探していたら、SleeFiやってみませんか?っていうTweetを発見して、まずはDiscordに入ってみました。基本英語ですが、日本語で話せる場所があるので安心です。 SleeFiのコミュニティーの居心地の良さがとても素晴らしく、みんなでSleeFiを盛り上げてて、雑談もしつつ楽しい空間です。興味が少しでも湧いたら、まずは公式DiscordにJoinしてみてください。

discord.gg

謝辞

  • いつもアドバイスをくれるコミュニティメンバーありがとうございます。
  • Discord内で素材を作成してくれたメンバーの方画像を使わせていただき感謝いたします。

追記

--20220723追記-- 更に豪華なイベントも走ってます。このように現在βテスト前で大盛りあがりしているのです。

私からβテスト枠のGiveawayも行っています。良かったらどうぞ (一旦7/24で終了いたしました)

--20220724追記--

Discord登録ユーザー15000人達成しました。

NFT・NFTゲーム関連書籍を読みました

はじめに

一般的なNFT・NFTゲームの知見を深めるために以下の書籍を読みました。まだ隅々までは読めていないですが、感想を書きます。

実は、今話題沸騰のNFTゲームSleeFiを始めるにあたって知識吸収を行いたかったのが本当の理由です。 NFTゲームに興味がある方は、こちらに、SleepToEarnであるSleeFiの紹介記事を書いておりますのでご覧ください。

blacktanktop.hatenablog.com

SleeFiの紹介

Discordが主なコミュニティになっているので興味ある方は参加してみてください

興味が湧いたかたは早速、公式DiscordにJoinしてみてください。discord.gg Discordをやったことない方は、ユーザー名を適当に書いて「はい」のボタンを。 すでにアカウントがある方は、更に下の「既にアカウントをお持ちですか?」をクリックしてください


書籍紹介

今回紹介する、NFT徹底解説に関しては、電子書籍のみです、Kindle Unlimitedを契約している方は、0円で読めますし、契約していない方も、投稿日現在は30日間無料体験や2ヶ月間でかなりお得な金額契約ができるのでKindle Unlimitedがおすすめです。(その他の2つの書籍もKindleで読めますのでおすすめです)

まず、NFTの教科書では、ツイート、VRアート、ゲーム内コンテンツなどのデジタルデータが資産となり、取り引きされるようになったのかという歴史から書いてるので、これまでNFTに触れてこなかった来なかった方にも時系列を追って理解できます。また、目次を見るとわかりますが、アートだけでなく、ゲーム、メタバース、スポーツ、トレーディングカード、その他様々な、NFTの各ジャンルで活躍する20名以上のの具体的な解説があるので実例とともにNFTの内容を理解したい、NFTアート以外も全般的に知りたい方におすすめです。

また、このような実例だけでなく、法律・会計にも触れられています。 NFTに関わる法律・会計などにまで詳細に触れられていて、かつ平易な文章で書かれている書籍は稀だと思います。とても読みやすいです。


NFTの知見を増やすための2冊目、もしくは1冊で網羅的に知りたい方におすすめです。362ページというかなりのページ量で、とてもわかり易い図を用いて説明されています。 NFT概要から始まり、NFTの実例として、CryptoKittiesやEthereum Name Serviceなど10数個の実例の解説があります。そして実際のマーケットプレイスとして有名なOpenSea・MakersPlaceなどの解説があります。ここらへんのマーケットプレイスの説明が詳細に書かれているものは稀なのでこれだけでも価値があります。

また、NFTアイテムの売買方法をとても丁寧に書かれていて、イーサリアムなどの仮想通貨を取り扱ったことがない方にもわかりやすく書いてあります。 私は、最初にNFTの購入のために仮想通貨を取り扱える状態にするために自力で調べましたが、最初からこの本を読んでいればよかったと思うほどです。買い手になりたい方だけでなく、売り手になりたい方には特におすすめです。

そして、NFTから、暗号資産に触れてみようと考えた人は仮想通貨についての知識が少し少ないかもしれません。仮想通貨の基礎知識を補ってくれる章があるのがとても嬉しいです。以下についてパっと説明できない方にはとても有益なまとめが書かれています。


最後に、NFTゲーム・ブロックチェーンゲームの法制ついてです。こちらは、NFTの中でもBCG(ブロックチェーンゲーム)と呼ばれる、ブロックチェーンを利用したゲーム(アプリ)に特化した希少な書籍です。

NFTゲームの中には、Play to Earnといった、これまでのソーシャルゲームのようなNFTゲームから、Move to Earn、Sleep to Earnといったタイプの日常での活動によって"稼ぐ" NFTゲームが存在しています。特にXXX to Earnタイプのゲームが2021から現在にかけてものすごい勢いの流行があります。そのようなNFTゲームでの具体的な事例と法的な考え方を網羅した書籍になっています。

特にこれまでのソーシャルゲームでは、運営が終了してしまうとそれまでゲームにかけてきたものは無に帰すわけですが、NFTゲーム場合その特性上、そのアイテムNFTは価値を持ちます。NFTゲームにおけるアイテムの価値・権利関係という視点で、とてもわかり易い図を用いて、ゲームによくある言葉で説明がされているので、ソーシャルゲームをやっていた方がNFTゲームをやってみようかなという場合でも、NFTゲームをとりあえず始めてみたいけどどんな感じなんだろうって不安を感じている方におすすめです。まず読んでいただければ、安心して始められるのではないかと思います。現状NFTゲームにおいて、法的な視点で書かれている書籍はないので、NFTゲームを開発、運営される方は必読だと思います。

まとめ

NFTの教科書。こちらはNFTって何?ビットコインと何が違うの?っていうくらいの感覚の方におすすめです。

NFT徹底解説: 基礎から学ぶ非代替性トークン。こちらは、NFT全般について超網羅的に記載があります。NFTの教科書を読んだあとに読んだ方が理解が進みます。

NFTゲーム・ブロックチェーンゲームの法制。こちらは、NFTゲームってなに? もしくは、NFTゲームを法的な視点で考えたいという方におすすめです。

Solubility-Aware Protein Binding Peptide Design Using AlphaFoldがPublishされました

はじめに

2022/07/07に自身がこれまで取り組んできた研究成果をまとめた論文がBiomedicines誌に掲載されました。

Kosugi, T.; Ohue, M. Solubility-Aware Protein Binding Peptide Design Using AlphaFold. Biomedicines 2022, 10, 1626. https://doi.org/10.3390/biomedicines10071626

一体どんなことをやったのかということを、ざっとFigureをベース解説していきたいと思います。(ちょっと論文調の感じで分かりづらかったらTwitterで質問してください。)

ざっくりというと、AlphaFold2のペプチドドッキングにおいて、AlphaFold2の信頼性指標のpLDDTやPAEやdistogramだけでなく、さらにアミノ酸の溶解度指標による損失関数を作成し、backpropさせることで、ターゲットタンパク質に結合が期待できかつ脂溶性が高すぎないようなペプチド配列をデザインする技術を開発しました。

この論文はCC BY 4.0として、内容の翻訳解説やFigureを転載しています。

論文概要

近年、新しいタンパク質-タンパク質相互作用(PPI)が発見されているものの、PPIは従来のリガンドポケット型等の標的とは異なり、PPI界面は広く、浅いという特徴のため、そのような領域に低分子化合物をモダリティとすることは難しいことが知られています9, 11。ペプチドはPPIを標的とする新しいモダリティですが、計算によって、ターゲットタンパク質に結合し得る適切なペプチド配列を設計することも困難でした。 しかし、2021年AlphaFoldやRoseTTAFoldの開発により29, 30アミノ酸配列から超高精度にタンパク質構造を予測することが可能となり、その結果、ある立体構造を形成しうる配列をデザインするde novoタンパク質設計が可能になりつつあります33-35, 50

そのde novoタンパク質設計手法の中でも、私の研究室ではSergey先生が開発を進めている、AlphaFoldを用いたde novoタンパク質設計法であるAfDesign36binder hallucinationプロトコルであれば、ターゲットタンパク質に結合し得る適切なペプチド配列を設計することが比較的容易にできるのではないか?と考え、ターゲットタンパク質としてPPIを持つ可能性の高いペプチドを設計しました。しかし,そのペプチドの溶解度はnativeのペプチドに比べると低い傾向にありました。そこで、Hydropathy Indexのようなアミノ酸の溶解度指標 (solubility index)を用いて、AfDesignの損失関数に合うように溶解度損失 (solubility loss)を設計し、溶解度を考慮したAfDesignのbinder hallucinationプロトコルを開発しました。

このプロトコルを用いて設計された配列のペプチド溶解度は、solubility lossの重みとともに増加し、さらにsolubility indexの特性を捉えていることが確認でき、さらに、ターゲットタンパク質とペプチドのドッキングによる結合親和性評価によって、この新しいプロトコルの配列は、ランダムまたはnativeの1残基置換の配列よりも高い親和性を持つ傾向がありました。

MDM2/p53を例として、溶解性を制御しながらPPIの界面に結合できるペプチド配列を設計することが可能であることが示されました。

結果詳細

詳細は、論文を読んできただけれたらと思いますが、Figureの流れに合わせて、ポイントだけ。 論文はオープンアクセスなので、論文と照らしてみていただければと思います。

  • 溶解度を考慮したペプチドデザインをするために、3つのアミノ酸のsolubility index41-43を用いて、solubility lossを設計しAfDesignに導入しました(Figure 1)(3つのindexで検討したのは比較検討をしたかったから。約40年前に検討されたsolubility indexが適切なのか、それとも近年機械学習で溶解度予測に使われている重みをsolubility indexとしたものが適切なのか等。)

Figure 1. Schematic of the optimization method of the AfDesign binder hallucination.

  • "開発された当時"のAfDesignのデフォルト設定で、binder hallucinationをMDM2に適用すると、溶解度がnative binding peptide のp53よりも低い傾向でした。そしてその配列群のWeblogoは中央に疎水性・芳香族アミノ酸が集中していることがわかりました。(Figure 2)

Figure 2. Distribution of logS of MDM2 binder sequences designed by AfDesign and sequence logo of the binder sequences.

  • 溶解度を考慮し設計されたペプチド配列の溶解度(logS)は、すべてのsolubility indexにおいて、solubility lossの重みとともに増加し、そのsolubility indexの特徴も捉えていることがわかりました。(Figure 3, Figure 4, Supplementary Table 1-2)

Figure 3. Distribution of logS for various weights of sequences designed in AfDesign using three solubility indices.

Figure 4. Sequence logos designed by AfDesign binder hallucination with solubility loss for each weight parameter.

  • 溶解度を考慮し設計されたペプチド配列の結合親和性はベンチマークで評価されたAutoDock CrankPep44, 51を用いて計算されました。その結合親和性はsolubility indexによって異なる傾向を示し、特にHydrophobicity Indexは重みの増加とともに、結合親和性が悪くなる傾向が見られました(Figure 5) (エネルギーが低いほど結合親和性が高く、良い。なので分布が左に行くほど結合親和性が高く、良いということです。)

Figure 5. Distribution of binding affinity for various weights of sequences designed in AfDesign using three solubility indices.

  • 溶解度と結合親和性の関係性を調べたところ、Hydrophobicity Indexは溶解度が向上するものの、結合親和性も低下する傾向があり、Hydropathy IndexとSolubility-Weighted Indexに関しては、溶解度が向上しつつ、結合親和性も向上する傾向があありました。特にHydropathy Indexではその傾向が顕著でした。(Figure 6)

Figure 6. Scatter plots of binding affinity and logS for various weights of sequences designed in AfDesign using three solubility indices.

最後のFigureに行く前にsupplementary figureの説明に入ります。

  • デタラメな配列でも結合親和性が高くなる傾向がある可能性を否定するため、ランダム配列の結合親和性を計算、比較しました。さらに、溶解度を考慮したデザイン配列がnativeのp53配列およびその1残基置換配列の結合親和性を計算、比較しました。ランダム配列の結合親和性の分布は最も低めであり、nativeのp53の1残基置換配列の結合親和性の分布はランダム配列の結合親和性の分布よりは高いものの溶解度を考慮した配列の結合親和性の分布よりは低めでした。(Supplementary Figure 1)

Fig. S1. Comparison of MDM2 bind- ing affinities between random sequences and one residue substitution sequences of p53 peptides and se designed by AfDesign.

  • 溶解度と結合親和性の評価に加え、PyMOLを用いた可視化、DockQを用いたドッキングの評価も行いました。(Supplementary Figure 2)AfDesignのbinder hallucinationプロトコルでSolubility-Weighted Indexをsolubility indexとして設計した配列の中から、p53ペプチド配列よりも高いlogSで結合親和性のが最も高い配列とnativeの立体構造を比較すると、その座標はp53ペプチドとほぼ同じでした。DockQ scoreは0.500で、ペプチドの主鎖原子のRMSDであるLRMSは5.303Å、リガンド間の界面にある残基の重原子のRMSDであるiRMSは2.294Åと算出されました。これはCAPRIのタンパク質-タンパク質ドッキング基準では中程度の品質とされ、AfDesign binder hallucinationプロトコルでSolubility-Weighted Indexをsolubility indexとして設計した配列がMDM2にドッキングする妥当性が示されました。(シアン:p53, マゼンダ:設計配列, 緑・白: MDM2)

Fig. S2. Comparison of crystal structures and three-dimensional (3D) structures predicted by AfDe- sign.

実際の設計時におけるsolubility lossのiterationごとの変化を中央値で比べてみると、solubility indexを用いない方が設計時のstageの変化によるlossの変化が少ない。これは,溶解度が低くなりがちな配列の溶解度を最適化することと,最適な複合体を形成しそうなペプチド配列を最適化することのトレードオフといえる可能性がわかりました。(Supplementary Figure S3)

Fig. S3. Comparison of each solubility index at the median of the AfDesign loss values.

  • また、MDM2/p53複合体でだけでなく、βシート同士のPPI事例としてPD-1/PD-L1複合体のPD-1をターゲットタンパク質として、同様にbinderを設計したところ、結合親和性に関してランダム配列とあまり違いがなく、Hydropathy Indexを用いた場合だけランダム配列よりも結合親和性の向上が見られました。(Supplementary Figure S4)

Fig. S4. Comparison of PD-1 binding affinity between random sequences and sequences designed in AfDesign with each solubility index.

  • p53 like peptideとして実験的に結合親和性も確認されている超高結合親和性であるPDIQ55を今回の検討と合わせるためにC末端に"N"を付加した配列の溶解度と結合親和性を計算し、フィルタリングし、その中から結合親和性が最も高い配列(我々がデザインした高親和性配列)を用いて、以下の検討を行いました。

  • フィルタリングの結果、solubility indexを用いなかった場合は配列が残りませんでした。Solubility-Weighted Indexを用いた場合の配列は600個中9個、Hydropathy Indexを用いた場合の配列は600個中90個、Hydrophobicity Indexを用いた場合の配列は600個中2個が残りました。Hydropathy Indexを用いた場の90配列についてWeblogoで可視化すると、PDIQと同様に、6番目と7番目の残基は主に'W'であり、5番目の残基は'Y'である傾向があり、結合親和性を高めると考えられ、C末端とN末端の残基は'E'と'D'の傾向があり、全体的に溶解性を高めている可能性があると考えられました。

Fig. S5. Weblogo of sequences designed with AfDesign binder hallucination using the Hydropathy Index as a solubility index. Using 90 sequences filtered by logS and binding affinity thresholds for PDIQ + ‘N’ peptide.

  • native peptideであるp53 peptide 配列とcompetitorとして我々がデザインした高親和性配列を用いて、近年報告があったAlphaFoldを用いたcompetitive peptide binding prediction49をColabFoldを用いて行いました(20runs x 5models = 100 predictions)。20runsのtop-rank1の全てにおいて、competitorである我々がデザインした高親和性配列の構造がMDM2のPPI結合界面に位置していました。(Supplementary Figure S6)(シアン:競合結合で飛ばされたp53, マゼンダ:我々がデザインした高親和性配列, 緑: MDM2)

Fig. S6. All top rank models from competitive peptide binding prediction of MDM2 with p53 and our highest affinity peptide consistently indicate the highest affinity peptide as the strong binder.

  • さらに、100predictions中1例を除き、competitorである我々がデザインした高親和性配列のほうがp53 peptide 配列よりもplDDTがやや高い傾向くRMSDが低いという結果になった。(Supplementary Figure S7, Supplementary Table S9)これは、competitorである我々がデザインした高親和性配列のほうがp53 peptide 配列より結合親和性が高いことを示唆しており、これまでの結果と整合性が合うと考えられました。(左側13残基がcompetitorである我々がデザインした高親和性配列、中央はMDM2、右側13残基がp53 peptide配列を示していて、competitorである我々がデザインした高親和性配列のほうがplDDTが高い傾向があることがわかります。更にRMSDとの整合性もありました。)

Fig. S7. Heatmap of all pLDDT values in predictions of competitive peptide binding of the competitor peptide and p53 peptide with MDM2 using ColabFold.

  • そして、最後に、PLIP49を用いて、MDM2/p53の原子間相互作用とMDM2/我々がデザインした高親和性配列の原子間相互作用を比較しました。その結果、MDM2の共通する残基において、いくつかの塩橋・疎水性結合が見られました。MDM2/p53のおける共通の相互作用がColabFoldを用いた設計ペプチドのモデルでも再現されていることが示されました。(Figure 7)

Figure 7. Interatomic interaction analysis for MDM2 with the designed peptide DEVYYWYYHLEND and p53 peptide using PLIP.

まとめ

本研究では、AfDesignのbinder hallucination protocolをPPI標的ペプチド設計に適用し、ペプチドの配列設計と溶解度の制御の同時最適化を試みました。

  1. AfDesignの柔軟な損失関数の概念により、その損失関数ににsolubility indexを用いたsolubility lossを加えることで溶解度をコントロールしながら、PPI界面に結合しそうなペプチドを設計することができました。
  2. ドッキングと競合ペプチド結合予測による結合親和性の評価により、PPIをターゲットタンパク質としたネイティブペプチドの結合親和性よりも高いペプチド配列を設計することができました。
  3. さらに、ネイティブのMDM2/p53複合体の原子間相互作用と比較した結果、設計したペプチドはMDM2の共通アミノ酸残基とも原子間相互作用を持つことがわかりました。

これらの結果から、本手法はPPIを標的としたペプチドデザインを用いた創薬に役立つ可能性があると考えられます。

コード

論文で用いられている、3つのSolubility index及びその重みを設定しつつ、AfDesignのbinder hallucinationを実行できるコード・Colab用のnotebookはGitHubで公開しています。 github.com

参考文献

上付きの数字は論文に合わせています。とりあえずブログで引用した分は書いておきます。

  1. Shin, W.-H.; Kumazawa, K.; Imai, K.; Hirokawa, T.; Kihara, D. Current challenges and opportunities in designing protein–protein interaction targeted drugs. Adv. Appl. Bioinform. Chem. 2020, 13, 11–25.

  2. Kosugi, T.; Ohue, M. Quantitative Estimate Index for Early-Stage Screening of Compounds Targeting Protein-Protein Interactions. Int. J. Mol. Sci. 2021, 22, 10925.

  3. Jumper, J.; Evans, R.; Pritzel, A.; Green, T.; Figurnov, M.; Ronneberger, O.; Tunyasuvunakool, K.; Bates, R.; Žídek, A.; Potapenko, A.; et al. Highly Accurate Protein Structure Prediction with AlphaFold. Nature 2021, 596, 583–589.

  4. Baek, M.; DiMaio, F.; Anishchenko, I.; Dauparas, J.; Ovchinnikov, S.; Lee, G.R.; Wang, J.; Cong, Q.; Kinch, L.N.; Schaeffer, R.D.; et al. Accurate Prediction of Protein Structures and Interactions Using a Three-Track Neural Network. Science 2021, 373, 871–876.

  5. Anishchenko, I.; Pellock, S.J.; Chidyausiku, T.M.; Ramelot, T.A.; Ovchinnikov, S.; Hao, J.; Bafna, K.; Norn, C.; Kang, A.; Bera, A.K.; et al. De Novo Protein Design by Deep Network Hallucination. Nature 2021, 600, 547–552. [Google Scholar] [CrossRef]

  6. Cao, L.; Coventry, B.; Goreshnik, I.; Huang, B.; Park, J.S.; Jude, K.M.; Marković, I.; Kadam, R.U.; Verschueren, K.H.G.; Verstraete, K.; et al. Design of Protein Binding Proteins from Target Structure Alone. Nature 2022, 605, 551–560. [Google Scholar] [CrossRef] [PubMed]

  7. Jendrusch, M.; Korbel, J.O.; Sadiq, S.K. AlphaDesign: A de Novo Protein Design Framework Based on AlphaFold. bioRxiv 2021.

  8. GitHub, AfDesign (v1.0.2); GitHub: San Francisco, CA, USA, 2022. Available online: https://github.com/sokrypton/ColabDesign/tree/main/af(accessed on 14 March 2022).

  9. Bhandari, B.K.; Gardner, P.P.; Lim, C.S. Solubility-Weighted Index: Fast and Accurate Prediction of Protein Solubility. Bioinformatics 2020, 36, 4691–4698.

  10. Argos, P.; Rao, J.K.M.; Hargrave, P.A. Structural Prediction of Membrane-Bound Proteins. Eur. J. Biochem. 1982, 128, 565–575.

  11. Kyte, J.; Doolittle, R.F. A Simple Method for Displaying the Hydropathic Character of a Protein. J. Mol. Biol. 1982, 157, 105–132.

  12. Zhang, Y.; Sanner, M.F. AutoDock CrankPep: Combining Folding and Docking to Predict Protein–Peptide Complexes. Bioinformatics 2019, 35, 5121–5127.

  13. Adasme, M.F.; Linnemann, K.L.; Bolz, S.N.; Kaiser, F.; Salentin, S.; Haupt, V.J.; Schroeder, M. PLIP 2021: Expanding the Scope of the Protein-Ligand Interaction Profiler to DNA and RNA. Nucleic Acids Res. 2021, 49, W530–W534.

  14. Norn, C.; Wicky, B.I.M.; Juergens, D.; Liu, S.; Kim, D.; Tischer, D.; Koepnick, B.; Anishchenko, I.; Foldit Players; Baker, D.; et al. Protein Sequence Design by Conformational Landscape Optimization. Proc. Natl. Acad. Sci. USA 2021, 118, e2017228118.

  15. Weng, G.; Gao, J.; Wang, Z.; Wang, E.; Hu, X.; Yao, X.; Cao, D.; Hou, T. Comprehensive Evaluation of Fourteen Docking Programs on Protein–Peptide Complexes. J. Chem. Theory Comput. 2020, 16, 3959–3969.

最後に

今回の論文はTwitterでいろんな方に助けていだきました。

ColabFoldをローカルのマシーンで使えるlocalcolabfoldの開発者である森脇先生には、別件で、MSAを再取得する必要がない場合には、a3mを入力するといいよと教えていただきました。ペプチドにはMSAは必要がなく、MDM2のMSAはすでに持っている状態だったので、この入力方法でCompetitive Peptide Binding Predictionsを行いました。

@ddd_ppp_storyさんには原子間相互作用をいい感じに可視化したい時にPLIPというツールを教えてくださいました。最終的にはデザイン配列とp53配列の比較としてmain figureにすることができました。

@jvarga92さんにはPyMOLを使ってMDM2でalignしたあとにp53やデザインしたペプチドのRMSDを計算の仕方がいまいちわからなかった時に教えていただきました。こちらも計算結果をSupplementary Table S9に載せることができました。

そして、もちろん論文にも記載していますがSergey先生が開発したAfDesignを用いて今回の論文を構成しました。当時はまだTwitter上でもほとんどコミュニケーションをしてはいなかったのですが、今では、更に進化したbinder hallucinationの実装について議論させていただいてます。

ここには挙げきれていない先生方もいらっしゃいますが、本当にありがとうございました。これからもよろしくおねがいします。

【M1】devcontainerを使った、研究コード開発環境の構築

はじめに

これまで、Pythonをベースとした研究コードを作成する際に、pyenvディレクトリごとにPythonのバージョンや必要なmoduleをinstallして作っていましたが、 共有計算機や別環境で計算を行うことも多く、pyenvがupdateされていて、いい感じに必要なライブラリなどが用意できてないとpyenv install x.x.xといった単順なコマンドがコケることもあり、この際再現性などの観点からもDockerで研究コードを開発するようにしようと思ったのがきっかけです。 (ちなみに、M1のMackBook Proのまっさらな状況で、Homebrewでbrew install pyenvでインストールしてPATH等設定したら挙動することは確認できてますが今回はDockerで環境を作ることに集中します。)

前提

  1. MacのM1チップ用のDocker Desktopを利用
  2. 他の多くの計算環境でも使えるようにデフォルトのARM64イメージではなく、x86-64(AMD64)のイメージで行う
  3. Visual Studio Code](https://code.visualstudio.com/)のdevcontainerを使う(完成物と開発過程のDockerイメージを基本同一で開発したい)

特に最後のdevcontainerの話は、開発物にはformatterやnotebookのモジュールはいらないけれど、開発時にはそのようなモジュールがあると嬉しいみたいなことがあったり、 最近Visual Studio CodeのupdateでRemote - SSHでもdevcontainerを使えるようになったので、ある程度開発が進んでマシーンスペックを上げて共有計算機やクラウドなどで並列計算させたりしつつリモート環境下での開発などの需要のときに、わざわざリモート側で開発物用の環境を作る必要がないということが大きいです。(これまでは、リモートでpyenvやvenvなどを使ってDockerfileのバージョンに合わせ、requirements.txtを使ってほぼ同じ環境っぽい状態にするといった工程が挟まっていたが、それがなくなった。)

code.visualstudio.com

【注】他の共有計算機環境があるならそこにRemote −SSH + devcontainerで開発すればいいのでは?って言うこともありますが、本題は新しいMacのM1チップでどこまでできるのかということを意図しています。共有計算機ないけど、M1 MacBook ProがあってDockerでゴニョゴニョしたいという状況が1番優先される前提です。今後利便性も含め、x86-64環境でビルドしたDocker imageをつかってM1のDockerでコンテナ作成、実行などができるかの検証も今後する予定です。

M1という障壁

その他の記事でも言われていますが、M1でなければそんな面倒でもないですが、ローカルの環境がM1のMacBook Proだとチップの違いによりARM64でビルドされていないPythonモジュールはpip installできません。Dockerでもそれは同じで、Dockerで作られるimageがARM64だと同様の現象が起きます。 有名どころのモジュールは対応してくれていますがそんなたくさんないのでM1 用のDoker Desktopはマルチプラットフォームでimageが作成可能なため、AMD64でimageを作ることで、前述の問題を回避します。さらにそのビルドしたimageはx86-64の環境でそのまま使えるということにも繋がります。

対応策

最終的な形はこちらのGitHub レポジトリを見てもらえば良いと思いますが、要所をまとめます。

Dockerfile

  • 適当にお好みのPython公式のimageを引っ張ってくる。マイナーバージョンまで指定すればビルドタイミングによるバージョン変更など起きない。
  • requirements.txtに研究コードに必要なモジュールをバージョンを指定しておく。
  • WORKDIRはdocker-compose.ymlのservicesに合わせる 。アプリケーション開発だとappとすることが多いので一旦appとしているが適宜変えて良い。
FROM python:3.7.9

COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt

WORKDIR /app

まぁシンプルな感じ

docker-compose.yml

Dockerコマンドが開発ディレクトリをマウントしたり、imageのidを参照するなどすると面倒だし、コマンドが長くなるので、docker-composeを使う。そのため、その設定ファイルであるdocker-compose.ymlが必要

  • 最大のポイントはここで platform: linux/amd64としてプラットフォームを指定し、x86-64(AMD64)のimageが作られるようにする。
  • あとは開発ディレクトリをマウントしておく(.とすることで、docker-compose.ymlがある場所をマウントするということになる。)
version: "3.8"
services:
  app:
    build: .
    platform: linux/amd64
    volumes:
      - ./:/app

とりあえずテスト

まずはDockerfileをビルドする。

docker-compose build

とりあえずビルドが終わったら、所定のバージョンがインストールされているか、ご所望のモジュールがインストールされているかなど確認してみる

docker-compose run app python -V
# Python 3.7.9 (Dockerfileで指定したversion)
 docker-compose run app pip list

# Package         Version
# --------------- --------
# click           7.1.2
# numpy           1.21.5
# pandas          1.3.5
# Pillow          8.4.0
# pip             21.0.1
# python-dateutil 2.8.2
# pytz            2021.3
# QEPPI           0.1.11
# rdkit-pypi      2021.9.3
# setuptools      53.0.0
# six             1.16.0
# wheel           0.36.2

コンテナの中に遊んでもいい。

docker-compose exec app bash

とすれば、コンテナの中に入れるのであとは適宜必要に応じて確認などする。

pythonモジュールの作成

なんか適当に開発モジュールを適当に作る。要するにxxxx.py。
今回テスト的に、py4chemoinformaticsを参考にRDKitのMolToGridImageでsildenafilとvardenafilの構造式をプロットしてくれるコードを書きました。(MolToGridImage.py)

github.com

あと、今回の本題とは、ずれますがargparserとしてclickを採用しました。シンプルで結構便利です。

click.palletsprojects.com

モジュールを動かしてみる

docker-compose run app python -m rdkit_MolToGridImage --output ./data --name test --align True

# 上記はargをあえて書いているが、defaultを指定しておけば、
docker-compose run app python -m rdkit_MolToGridImage
でも実行可能

f:id:black_tank_top:20211224140651p:plain
出力結果

単にDockerでPython環境を固定して動かすだけであれば、これで十分だが、Visual Studio Codeのdevcontainerを使って開発したいので、こちらを準備する。

devcontainer

Visual Studio Codeを開いて、左下の><となっているところをクリックして、Add Development Container Configuration Filesっていうのをクリックして、From docker-composeというのを選ぶと、.devcontainerディレクトリができて、devcontainer.jsonとdocker-compose.ymlが生成される。

devcontainer.json

基本自動生成されたままでよいが、使用するPythonは、devcontainerのpythonを指定。/usr/local/bin/pythonで問題ないはず。 今回は、devcontainer上だけで使いたいフォーマッターなどのモジュールをinstallしたり、Visual Studio CodeのExtensionを毎回設定するのは面倒なので、devcontainerを使うときに最初から設定されるようにする。

"settings", "extensions", "postCreateCommand"らへんがそんなところ。

docker-compose.yml

自動生成されたままでOK

詳細はGitHubを参照してもらえばと思います。

devcontainerの起動

上記がおわったら、早速起動してみましょう。左下の><となっているところをクリックして、Open Fold in Containerをクリックすれば、devcontainerがビルドされます。コンテナ作成と追加のモジュールのインストール程度の時間なので、1-2分くらいです。そうすると以下のようになります。

f:id:black_tank_top:20211224142757p:plain
devcontainerが起動したVisual Studio Codeの画面

あとは、よしなにこちらで開発をすすめていけばOKです。

Jupyter Notebookについて

Visual Studio Code.ipynbファイルを読みこんでノートブックとして動かすことが可能で固定された環境でとても便利ですが、上記の経緯で進めた結果、Notebookの実行でM1固有の問題に直面し、Cellを実行すると、

Failed to start the Kernel. 
qemu: uncaught target signal 6 (Aborted) - core dumped. 
View Jupyter log for further details.

となってしまって、実行できませんでした。いろいろ調べましたが現状Jupyter NotebookをVisual Studio Codeで動かすことは、まだ難しそうです。

おわりに

今回は、

  1. MacのM1チップ用のDocker Desktopを利用して、M1のMacでも特定のPython環境にお好みのモジュールをinstallし研究コードを開発する環境構築方法を示しました。
  2. また、docker-composeを使うことで長くなりがちのdockerコマンドを簡略化しました。
  3. docker-composeコマンドを使って、実際のpythonモジュールを動かす方法示しました。
  4. Visual Studio Codeのdevcontainerを使って、完成品の環境と同一のimageを使った状態で開発をすすめる方法を示しました。

残念ながら、Jupyter NotebookをVisual Studio Codeで動かすことができなかったです。今後のupdateを期待したいところです。

【M1】Dockerコマンド補完でハマったのでメモ

はじめに

Apple Silicon (M1)のMacBook ProでDocker Desktopを導入後Dockerコマンドを補完するやり方をこれまでのMacBook Proと同じようにはできなかったので、ドキュメントに書いてある方法などでうまくいかなかった方法や、最終的にできた方法を記します。 ちなみにzsh/bin/zshのものを使っています。

Dockerコマンドの補完機能の設定について

公式にはDocker composeの設定の仕方が書いてある docs.docker.com oh-my-zshは使っていないので、 Without oh-my-zsh shellでのやり方を見ると、

mkdir -p ~/.zsh/completion
 curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/zsh/_docker-compose \
    -o ~/.zsh/completion/_docker-compose

となっているが、このあとの処理を書き加えてもうまく行かない。(結果的にこのcurlしてくるファイルがM1には良くないっぽい)

なんか違う方法はないかと色々調べるとここらへんに行き着く docs.docker.jp

これのM1バージョンで、brewzshのpathに変更してもだめ(M1の場合のPATHは/opt/homebrew/share/zsh/site-functions/

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /opt/homebrew/share/zsh/site-functions/_docker
ln -s $etc/docker-compose.zsh-completion /opt/homebrew/share/zsh/site-functions/_docker-compose

とまぁ、色々試した結果、なんだかよくわからんが上記合わせ技で解決。 つまり、1つ目の補完に必要なファイルをcurlで引っ張るのではなく、Docker Desktop for Macに付随している補完スクリプトシンボリックリンクを貼るようにする。

後半はzshの補完機能を有効にするために.zshrcに記述する。 シェルを一度切って、もう一度立ち上げ、docker[半角スペース]としてtabを押せば以下のようになる

% docker
attach     -- Attach local standard input, output, and error streams to a running container
build      -- Build an image from a Dockerfile
builder    -- Manage builds
buildx*    -- Docker Buildx (Docker Inc., v0.7.1)
commit     -- Create a new image from a container's changes
compose*   -- Docker Compose (Docker Inc., v2.2.1)
config     -- Manage Docker configs
container  -- Manage containers
...

docker-compose[半角スペース]としてtabを押せば以下のようになる

% docker-compose
build    -- Build or rebuild services
convert  -- Converts the compose file to platform's canonical format
cp       -- Copy files/folders between a service container and the local filesystem
create   -- Creates containers for a service.
down     -- Stop and remove containers, networks
events   -- Receive real time events from containers.
exec     -- Execute a command in a running container.
images   -- List images used by the created containers
kill     -- Force stop service containers.
logs     -- View output from containers
ls       -- List running compose projects
...

補完できている。これで快適Docker生活

おわりに

まだM1でDockerコマンドの補完について書かれているものは見つからなかったので、同じくハマっている人がいたら参考になればと思います。