8/14/2020

新しいJupyter Bookを発表

Jupyterのブログより

クリス・ホールドグラフ

Jupyter Bookは、計算コンテンツを含むソース素材から、出版品質の書籍、ウェブサイト、ドキュメントを作り上げるためのオープンソース・プロジェクトです。この投稿では、Jupyter Bookがゼロから書き直され、インストールがより簡単になり、より高速に使用でき、より複雑な出版コンテンツを書籍にできるようになったことをお知らせします。現在、Jupyterエコシステム及びそれ以降でインタラクティブで実行可能なドキュメントのためのオープンソース・ツールを構築するオープン・コミュニティであるExecutable Book Projectによってサポートされています。

新しいJupyter Bookのインタフェース。コンテンツにコード出力を挿入する方法を強調しています。

この投稿では、Jupyter Bookの新機能の概要とプロジェクトの将来についての背景を説明します。

新しいJupyter Bookのドキュメントを閲覧したり、Jupyter BookのGitHubリポジトリをチェックアウトすることもできます。

❗❗ Jupyter Bookはまだベータ版であるため、状況は常に変化しています。プロジェクトを改善するためのフィードバック、アイデア、PRをお待ちしています!❗❗

新しいJupyter Bookは何をするのか?

新バージョンのJupyter Bookは非常によく似ていると感じるでしょう。しかし、下部にある新しいJupyter Book スタックにより、多くの新機能を持っています(詳細は後ほど)。

新しい Jupyter Book には以下の主な機能があります(それぞれに関連するドキュメントへのリンクがあります)。

Markdownで出版品質のコンテンツを書く
Jupyter markdown、またはパブリッシング機能を備えた拡張フレーバーのmarkdownのいずれかで書くことができます。これには、引用や相互参照数式や方程式などのリッチ構文のサポートが含まれます。

Jupyter Notebooksにコンテンツを書く
これにより、コードと出力をブックに含めることができます。また、ブックを作成する際、実行のためにノートブック全体をmarkdownで記述することもできます。

ブックのコンテンツを実行してキャッシュする
.ipynbとmarkdownノートブックの場合、コードを実行して最新の出力をブックに挿入します。さらに、後で使用するために出力をキャッシュして再利用します。

ノートブックの出力をコンテンツに挿入する
文書を作成する際に出力を生成し、ページを越えてコンテンツにインラインで挿入します。

本にインタラクティブ機能を追加する
セルの表示を切り替えたり、Jupyterのインタラクティブな出力を含めたり、Binderのようなオンラインサービスに接続したりできます。

様々な出力を生成する
これには、PDF出力だけでなく、単一ページや複数ページのウェブサイトも含まれます。

シンプルなコマンド・ライン・インタフェースで書籍を作成
次のように、1つのコマンドで素早く書籍を作成できます: jupyter-book build mybook/

これらは、私たちが行った主な変更のほんの一部です。何ができるかについてのより完全なアイデアは、Jupyter Bookのドキュメントをご覧下さい

主な変更点

次のセクションでは、Jupyter Bookで気付くかも知れない、いくつかの大きな変更について説明します。

markdownの強化されたフレーバー

Jupyter Bookの最大の機能強化は、MyST Markdown言語のサポートです。MySTは「Markedly Structured Text」の略で、Sphinxドキュメンテーション・エンジンのすべての機能を実装したmarkdownのフレーバーで、科学的な出版物をmarkdownで書くことができます。RMarkdownとツールのreStructuredTextエコシステムからインスピレーションを得ています。Sphinxでできることは何でも、MySTでもできます。

MyST MarkdownはJupyter Markdown(AKA、CommonMark)のスーパーセットで、Jupyter NotebookのデフォルトのmarkdownはJupyter Bookでも有効です。引用、図、参照などのmarkdownの追加機能が必要な場合は、追加のMyST Markdown構文をコンテンツに含めることができます。

例えば、新しいJupyter Bookに引用を含める方法は次のとおりです。

引用例。ここでは、引用構文をmarkdownにインラインで含め、後でページに参考文献を挿入する方法を示しています。

そして、図を含める方法は次のとおりです。

サンプル図。ここでは、キャプション付きの図をブックに挿入する方法と、図をオプションで表示する方法のいくつかの側面を制御する方法を示します。

よりスマートなビルドシステム

旧バージョンのJupyter Bookは、PythonとJekyllの組み合わせを使って、本のHTMLを作成していましたが、新バージョンのJupyter BookはPythonを全面的に使用しています。これは、本のためのHTMLの作成するのと同じくらい簡単なことを意味します。

jupyter-book build mybookname/

また、新しいビルドシステムでは、Jupyter Cacheを利用して、コードが更新された場合にのみノートブックのコンテンツを実行し、ビルド時にキャッシュからの出力を挿入します。これにより、変更されていないコードを再実行する必要がなくなり、時間を節約になります。

ビルドプロセスの例。ここでは、jupyter-bookコマンドライン・インタフェースを使用して、コンテンツのコレクションをHTMLブックに変換しています。

その他のブック出力タイプ

Sphinxを活用することで、Jupyter Bookは単なるHTMLウェブサイトよりも複雑な出力をサポートできるようになります。例えば、現在、HTMLとLaTeXの両方でPDF出力のプロトタイプを作成しています。これにより、Jupyter Bookは、ユースケースに適した本を生成するための柔軟性を与えます。

また、個別のページでJupyter Bookを実行することもできます。つまり、1ページのコンテンツ(科学記事のような)を完全にMarkdownで書くことができることを意味します。

新しいスタック

内部の最大の変更点は、Jupyter Bookが本の作成するために、JekyllではなくSphinxドキュメント・エンジンを使用するようになったことです。Sphinxのエコシステムを活用することで、Jupyter Bookはより効果的にコミュニティ・ツールの上に構築することができ、より広いコミュニティにコンポーネントを還元することができます。

一つのリポジトリーではなく、古いJupyter Bookのリポジトリーは、いくつかのモジュール化されたツールに分離されました。これらのツールのそれぞれは、Sphinxのドキュメントの中で単独で使用することができ、Jupyter Bookを介して一緒に調整することができます。

  • Sphinx用のMyST markdownパーサーを使用すると、Markdownでフル機能のSphinxドキュメントを書くことができます。
  • MyST-NBは、Sphinx用の.ipynbパーサーで、ノートブックでMyST Markdownを使用することができます。また、SphinxでJupyter Notebookの実行、キャッシュ、変数挿入のためのツールも提供しています。
  • The Sphinx Book Themeは、Sphinxの美しい本のようなテーマで、PyData Sphinxテーマの上に構築されています。
  • Jupyter Cacheはノートブックのコレクションを実行し、その出力をハッシュ化されたデータベースに保存できます。これにより、.ipynbファイル自体に含まれることはなく、ノートブックの出力をキャッシュできます。
  • Sphinx-Thebeは、「静的な」HTMLページを、Binderカーネルによってリモートで実行されるコードセルを含むインタラクティブなページに変換します。
  • 最後に、Jupyter Bookはsphinx-copybuttonsphinx-togglebuttonsphinx-commentssphinx-panelsなど、拡大を続けるSphinx拡張機能のコレクションもサポートしています。

今後は、開発者に焦点を当てた記事を書いて、各コンポーネントについてさらに詳しく説明していきたいと思います。

お次は何?

Jupyter Bookとその関連プロジェクトは、Jupyterエコシステム内外の計算コンテンツから質の高い科学出版物のためのオープンソース・ツールを構築するコミュニティであるExecutable Book Projectの一部として引き続き開発されます。

Jupyter Bookの詳細や独自の書籍の作成を開始したい場合は、新しいJupyter Bookのドキュメントをご覧下さい。Jupyter Bookはまだベータ版であり、常に改善されているので、フィードバックや貢献はいつでも歓迎します

あなたが確認したい特定の機能がある場合は、問題を開くか、既存の問題に👍を付けます。これにより、機能リクエストのリーダーボードに表示されます

参加する

この投稿に記載されているプロジェクトに貢献したい場合は、そうすることを強くお勧めします! Executable Book Project (とJupyter Book)はオープンなプロジェクトとして運営されており、他の人からの貢献を歓迎しています

私たちは、新しいJupyter Bookのすべての新機能と改善点に興奮しており、コミュニティがこのスタックで作成する新しい本を見るのを楽しみにしています!

Hacker News