nikkie-ftnextの日記

イベントレポートや読書メモを発信

sphinx-new-tab-link リリース1周年! Sphinx拡張公開で広がっていく世界に、ありがとう

はじめに

俺を、見ろ!1 nikkieです。

2022年10月に自作のSphinx拡張をリリースしてから1年が経過していました。

この拡張を公開したことでいくつか得がたい経験をさせていただいております。
ありがとうございます!

目次

この拡張を有効にすると、ドキュメンテーションツールSphinxでビルドしたHTMLで、外部のサイトに遷移するリンクがブラウザの別のタブで開きます

はてなブログ中のURLの埋め込み(embed)や、QiitaやZennにおけるリンクはブラウザの別のタブで開きますよね。
私はPythonPython製ライブラリのドキュメントに入り浸っているのですが、ドキュメントでは外部のリンクは同じタブで開くことが多いかなと思います。
私はドキュメントとリンク先を交互に見比べたいことが多く、macOSでは⌘を押しながらクリックして別のタブで開いています。

Python製ライブラリのドキュメントはSphinx製であることが多いと思います。
ドキュメントの読者がリンクをクリックするときに毎回⌘を押すのではなく、(QiitaやZennのように)自然に(読む体験を損ねずに)別のタブで開くようにしたく、この拡張を自作しました。

サポートしている機能

ガイドをGitHub Pagesで作っていて、そこでsphinx-new-tab-linkをドッグフーディングしています。

  • make htmlmake singlehtml・v0.2.0からmake dirhtmlをサポートしました

  • reStructuredTextにおけるリンクを作るマークアップは全てサポートしています

  • sphinx.ext.autodocでPythonファイルのdocstringからドキュメントを作る場合もsphinx-new-tab-linkは機能します

  • reSTの代わりにMarkdownで書いてSphinxを使う場合もsphinx-new-tab-linkは機能します

広がっていく世界に、ありがとう

一度試すだけでも使ってくださった皆さま、ありがとうございます!

元の実装はStackOverflowから

やり方を教えてくださり、ありがとうございます!
SphinxでビルドしたHTMLの中の外部リンクを、ブラウザの新しいタブで開くように設定する拡張 sphinx-new-tab-link を公開しました!🎉 - nikkie-ftnextの日記に書いているのですが、私はライブラリとしてめちゃめちゃほしくて、でも探した範囲ではPyPIに見つからなくて、リリースする運びとなりました。

PyCon JP 2022 Sphinxを通して考える、「拡張」の仕方

https://2022.pycon.jp/timetable?id=KJFKZH

sphinx-revealjs(など)の作者、Takeiさんによる発表。
この発表でSphinx拡張のテストの書き方が分かり、自作拡張公開に大きく前進しました。
発表いただき、ありがとうございました!

バージョンアップの中でテストコードの理解が深まる機会があり、pytestのフィクスチャを使っている、そしてフィクスチャは連鎖させられるということが分かってきました。

コードを介したコミュニケーション!!🙌

dirhtmlでサポートできるようにするプルリクエストをいただき、v0.2.0でサポートできました!

プルリクエストをいただいて機能が増えるというのは、体験してみるとめちゃめちゃ嬉しかったです。
まず使われているということが分かって嬉しいですね。

サポートするビルダーの追加はコードの差分としては1行追加だけなのですが、私の書いたコードを理解した上で提案までしていただいているんですよね。
私がプライベートで書いたコードで、他者がそこまで反応してくださったコードって(現時点では)他にないので、それがとても幸せですし、もっとコードを書いていきたいと思いました。
ありがとうございます!!

終わりに

自作のSphinx拡張 sphinx-new-tab-link の1年をふりかえり、世界が広がった出来事をまとめました。
1年前の私はプルリクエストをいただけるとは思っておらず、めちゃめちゃ嬉しく思っています。

こちらの記事で興味を持った方はよろしければお試しください!
ガイドにもありますが、Sphinxを使っているプロジェクトにインストール(pip install sphinx-new-tab-link)した後

# conf.py
extensions = [
    "sphinx_new_tab_link",
]

こ れ だ け で す!
ちょっとしたことでも(※伸びしろだけでなくぜひぜひよい点も)フィードバックをお待ちしていますし、スターをいただいても嬉しいです

執筆中、脳内ではこちらがヘビロテしてました。きらめく出会いをありがとう

P.S. Pythonの生みの親 Guidoさんに見てもらえる!

Guidoさんにsphinx-new-tab-linkを見てもらうプレゼンをさせていただきます!!

Guidoさん! 俺の、sphinx-new-tab-linkを、見ろ!!
どうだこの拡張、さぞcoolであろう!!

フィードバックを少しでもいただくために、もっと「俺を、見ろ!」してもいいかもしれないですね(執筆しての気付き)


  1. あのはなのじんたんのセリフです