nbgenerate
ツールは、DevSite の HTML と Markdown のコンテンツとテンプレートを Colab 互換の Jupyter ノートブックに変換します。
概要
Google Colab のサイトから:
Colab ノートブックを使用すると、画像、HTML、LaTeX などと合わせて、実行可能コードとリッチテキストを 1 つのドキュメントに結合できます。
Colab では、ウェブブラウザから Python コードを作成して実行できますが、 必要ありません。マークダウン コンテンツをコードセルに挿入して、同じドキュメントにリッチ コンテンツを提供できます。そのため、Colab ノートブックは、定量的な研究や ML だけでなく、デベロッパー ドキュメントによく見られる API やコンセプトのデモやテストにも適したソリューションです。
そのため、Colab ノートブックで共有されるコンテンツがコンテンツと重複することがよくあります。 詳しくは Google デベロッパー向けドキュメントをご覧くださいnbgenerate ツールを使用すると、DevSite マークアップと対応する Colab ノートブックを手動で同期する必要がなくなります。このツールは、DevSite HTML と Markdown を、Colab や他の Jupyter ノートブック実装で使用される .ipynb ファイル形式に変換します。これにより、DevSite のコンテンツをデベロッパー向けドキュメントと Colab ノートブックの両方の信頼できる単一の情報源として使用できます。
背景や技術的な詳細については、元の設計ドキュメント( nbgenerate-dd
基本的な使用方法
DevSite プロジェクトのページ用に Colab ノートブックを生成するには、以下を行う必要があります。
nbgenerate
コマンドを呼び出す前に _notebooks.yaml
というファイルを追加します。
プロジェクトに _notebooks.yaml を追加する
DevSite プロジェクトのページから Colab ノートブックを生成するには、_notebooks.yaml
というファイルをプロジェクトのルート(サイトの _project.yaml
と同じディレクトリ)に追加します。このファイルには、Colab ノートブックとして共有されるページごとに 1 つのエントリを含める必要があります。各エントリの source
フィールドには、
Colab ノートブックに変換できます。target
フィールドには、生成された Colab ノートブックが書き込まれる google3 デポのパスを指定する必要があります。
例:
- source: /earth-engine/ee-image.html
target: //depot/google3/third_party/earthengine_community/ipynb/ee-image.ipynb
- source: /earth-engine/guides/image_objects.md
target: //depot/google3/third_party/earthengine_community/ipynb/guides/image_objects.ipynb
この例では、Copybara を使用して GitHub にミラーリングされるターゲット パスを使用するため、 生成されたノートブックを、一般公開されているハイパーリンクで開けるようにする。 google3 パスを GitHub と同期する方法については、copybara をご覧ください。関連項目 ウィジェットの例: GitHub で生成されたノートブックへのリンクを追加する例。
ノートブックの生成
nbgenerate
を初めて実行する前に、.bashrc
でエイリアスを定義し、現在のシェルにエイリアスを設定します。
alias nbgenerate="/google/bin/releases/devsite/tools/nbgenerate/nbgenerate.par"
コマンドラインから nbgenerate
を実行すると、_notebooks.yaml
にリストされているすべてのファイルを再生成できます。
nbgenerate googledata/devsite/content/en/PROJECT
1 つ以上のパスを引数として nbgenerate
に指定し、処理を以下に制限します。
次に例を示します。
nbgenerate third_party/devsite/developers/en/earth-engine/guides
ディレクトリのパスは再帰的に処理されます。または _notebooks.yaml
内の
その下位にあるすべてのフォルダが処理されます。
「アクセスが拒否されました」というメッセージが表示された場合上記を使用して nbgenerate
を実行する場合
次のコマンドでツールを実行することもできます。
blaze run //devsite/tools/nbgenerate -- googledata/devsite/content/en/PROJECT
コンテンツのフィルタリング
一部のコンテンツを DevSite ページや
両方ではなく、Gemini in Google Colab ノートブックを使用して
is_ipynb
変数。nbgenerate
変換中に True
に設定されます。
プロセスですステージング時と DevSite への公開時のエラーを防ぐには、
コンテンツを選択的に含める必要があるページの上部に、次のものが表示されます。
{% if is_ipynb is not defined %}{% set is_ipynb=False %}{% endif %}
その後、Jinja タグを使用して、Colab、DevSite、またはその両方に表示するコンテンツを制御できます。例:
# Overview This section will show in both the DevSite page and in the Colab notebook as a text cell. {% if is_ipynb %} This content will only appear in Colab notebooks but not on DevSite pages. This is useful for providing Colab-specific initialization and setup instructions or code. {% endif %} {% if not is_ipynb %} ```js // This code snippet will only be rendered in DevSite but not in Colab // notebooks. console.log('Hello, nbgenerate!'); ``` {% endif %} ```py # This snippet will appear in both DevSite and in the Colab notebook as a code # cell. print('Hello, nbgenerate!'); ```
ウィジェットの例
多くのサイトは、一般的な動作をカプセル化するために独自の DevSite ウィジェットを定義します。以下に、is_ipynb
変数を使用するウィジェットの例を示します。これらのウィジェットは、サイトに合わせて調整できます。
Colab ノートブックのボタン ウィジェット
Earth Engine デベロッパー向けドキュメントでは、カスタム ウィジェットを使用して、GitHub の Colab ノートブックと同期された DevSite ページに [Colab で実行] ボタンと [GitHub でソースを表示] ボタンを一貫して表示します。
サンプル セクション ウィジェット
サンプルのセクション ウィジェット は、タブ付きセクションを設定する方法の例を示しています。 を使用して、複数のプログラミング言語や環境で記述されたコード スニペットに対応しました。 このウィジェットは、Colab ノートブックに Python スニペットのみを追加します。また、ノートブックの作成時にタブ付きセクションの表示に使用されるマークアップも削除されます。