逆引きリファレンス・リファレンス
作成日:
前口上
私は最近(1年くらい前)Perlの世界に触れて、この言語が好きになりました。
理由はいくつかあるのですが、大きなものがPerldoc1(公式ドキュメント)が充実していることです。単に充実している(網羅されている)ドキュメントということであればだいたいの言語に用意されていると思うのですが、Perldocの場合は「Perl の正規表現のチュートリアル」とか「Perl Unicode の手引き」とかの項目毎に用意されているのが素晴らしいところです。
別の言語、例えばPythonのドキュメントの場合「ライブラリーリファレンス - 机の下に置きましょう」という項目がありますが、そのリンク先を見てもあまり困ったときに役立つ気が致しません。ググった方が早そうな気がします。
このご時世グーグル検索すると変なサイトばかりが引っかかってストレスが溜まるので、できる限りググらずに済ませたい、そんな人(私)にとってPerldocは非常にありがたい存在なのです2。
とはいえ、全てをPerlで済ますわけにはいきません。『退屈なことはPythonにやらせよう』という本がありますが、Perlはそういう領域での用途への局所最適を取ったような言語に感じます(退屈なことはPerlに任せましょう)。不得意なことはたくさんあるのです。
それで、「別の言語のPerldoc」を考えます。「Perldocのどこがいいか」を考えると、それは世の中で「逆引きリファレンス」と呼ばれているものの性質をPerldocのドキュメントが備えているからではないか、というところに思い至りました。何が「逆引きリファレンス」なのかを考えると「目的から探せる(=逆引き)」「前から読む前提ではなく必要なところだけ読める(=リファレンス)」が両立されているものであろうと思います。初心者は「○○をしたいときには××をすればよい」ということが分かりません。その需要に応えてくれるのが逆引きリファレンスというわけです。
というわけで、いくつかの言語でそういう性質をもつものを探してみたリストが以下になります。ただし、公式ドキュメントではない上、私は内容のチェックをしていないので信頼性に対して責任はもてません(「これはやばい」というものがあれば連絡してくだされば修正します)3。検索している内に、「逆引きリファレンス」「目的別リファレンス」のようなタイトルではなくとも、細かく立項された入門書もそれに近い役割を果たせると気づきました。
本文
- Python
- Python入門 - @IT: 「Python入門」ではあるがかなり細かくリンクがあり、逆引きリファレンス的に使える。なお、ページの「印刷」を押すとページネーションがなくなって読みやすい。
- Python チュートリアル — Python 3.9.0 ドキュメント: 実は公式ドキュメントにも似たノリのページはあるのだけれど、読みやすいかというと……。ちょっと古いバージョンを参照したほうが未訳部分が少なくて読みやすいかも?
- Ruby
- .NET
- .NET Tips - DOBON.NET: C# によるプログラミング入門 | ++C++; // 未確認飛行 Cのほうではあまり充実していない、.NETの標準ライブラリまわりの解説はこちらという感じです。
- Unixコマンド
- シェルスクリプト
- HTML
- 逆引きリファレンス - とほほのWWW入門: これぞ逆引きリファレンス。若干古いものも混じっているけれど、趣味のWebには必要十分なのではないか。
- HTML5リファレンス: これは逆引きではない気もするが、比較的逆引き度(とは?)が高い4。
- CSS
- JavaScript
- JavaScript入門 | Let’sプログラミング: なんとなく古そうな気がしたが、ページによってはES2020が参照されていたりする。
- JavaScript逆引き | Webサイト制作支援 | ShanaBrian Website
- jQuery逆引き | Webサイト制作支援 | ShanaBrian Website
- jQuery逆引きリファレンス - 処理対象別インデックス - Build Insider
- SQL
- 逆引きSQL構文集: 作成中とのことだが、必要な関数まではわかるので便利。
- MySQL 逆引きリファレンス
- TeX
- Go言語
- 逆引きGolang: 2015年最終更新なので注意が必要
- その他
書籍
そもそもこういうものは作るのに手間がかかるものであり、書籍として売られているものが多いです(つまり上に挙げたものは稀有な例です)。
翔泳社からは「逆引きレシピ」シリーズが出ていますし、技術評論社から出ている[「ポケットリファレンス」シリーズ](ポケットリファレンス:書籍シリーズ | 技術評論社)も(ものによるとは思いますが)近い性質のものです。私が持っているものでは『LaTeX2ε標準コマンドポケットリファレンス』『Scala逆引きレシピ』、図書館で借りて使ったものでは『C++ポケットリファレンス』がありますが、どれも良い物でした。
ただ、こういうものは「ハイパーテキスト」の性質が強く生きるもののはずで、できればHTMLの媒体で使いたいなと思うところです。コピー制限あたりの事情で難しいとは思いますが、海外の電子書籍で技術書のHTMLを読む権利を売るようなものを見た記憶がある5ので、どうにかなってほしいです。
ぼやき
ググって変なサイトを見る前に公式ドキュメントを読めとはみんな言うし、概ね賛成ではあるのですが、果たして公式ドキュメントが(特に初心者にとって)ほしい情報を提供できているのかについてはもうちょっと考えられてもいいのではないかなと思います。
あと、あまりにも変化の速いものはドキュメントの翻訳や解説書の執筆が追いつかず、日本語情報が提供されたとしても断片的で、先端を追い続けられるような人には問題なくても、初心者や雑に使いたいだけの人にとっての障壁になっているのではないか、なんて気持ちもあります。
-
英語原文は https://perldoc.perl.org/ から、和訳は https://perldoc.jp/ から読むことができます。また、ブラウザだけでなくテキスト端末上でも読むことができるのが最近のプログラミング言語のドキュメントにはあまりない特長です。 ↩︎
-
このような差があるのは、Perlがオブジェクト指向ではないことに起因しているような気もします。オブジェクト指向だと各クラスの説明を充実させれば(コメントに書いておいて機械生成すれば)公式ドキュメントとしてはいいや、という意識になっているのではないかと勘ぐってしまいます。 ↩︎
-
「逆引きリファレンスを使って使うべき機能(函数、クラスなど)の名前を調べたら、あとは公式リファレンスを見る」という使い方をすれば信頼性の心配は減ると思います。 ↩︎
-
HTML 要素リファレンス - HTML: HyperText Markup Language | MDNは似た項目立てのサイトなのに、ここまで見やすさに違いがあるのは何故なんでしょうか。MDNをざっと眺めてみたところ、HTML 入門 - ウェブ開発を学ぶ | MDNの小見出しへのリンク一覧を作れば逆引きリファレンスっぽくなって良い気がします。 ↩︎
-
出典を見つけられなかった……。 ↩︎