多言語対応API検索エンジンのアイディア
上記資料をScrapboxに書き直したもの↓
目次
解決したい問題:いい感じの検索エンジンの不在
提案する解決策:多言語対応API検索エンジンSisku
手法のエッセンス:Language Server Protocolの応用
解決したい問題:いい感じの検索エンジンの不在
「人生の三分の一は睡眠です。」という文句をどこかで聞いたことはないでしょうか。多分あると思います。では、残りはなんの時間でしょう?
https://scrapbox.io/files/6273d90b179ad1001d68ef14.png
僕の場合、もう三分の一はTwitterです。もはやライフワークです。残りの三分の一は?
そう、Googleです。情報社会と呼ばれるようになってもはや久しい現代において、検索は何よりも重要な、いや、何か重要な物事のために、なくてはならない技術でしょう。
プログラミングにおいても、検索は重要な技術です。例えば、
久々にPythonでスクリプトを組むことになったが、テキストファイルの扱いを忘れてしまった。
といったときには、こんな感じでググるんじゃないでしょうか?
Python read file
Python read file line by line
他にもいろいろ
https://scrapbox.io/files/6273d92e1bbe220021364d08.png
とはいえ、Googleは完璧でもない
検索といえばGoogle検索。これはプログラミングにおいても例外ではない。
しかし、ちょっと不便なところもある。
記号がうまく検索できない
「"」「>」「;」などを検索したいが、うまくヒットしない
公式の情報がヒットするとは限らない
Qiitaなどの投稿サイトのほうが優先されがち
そこで、プログラミングに特化した検索エンジンが欲しくなる。
事例:Hoogle
https://scrapbox.io/files/6273d2cfcd81c3001da7f7e6.png
Hoogleの紹介
Haskellライブラリを検索する、専用の検索エンジン
型で検索できるので、型が雄弁なHaskellではとても重宝する
集合 Set a に、要素 a を追加する関数を検索する例
https://scrapbox.io/files/6273d43ec12d3300233cd17d.png
https://scrapbox.io/files/6273d5c5e64b800023cc607c.png
nonempty-containers, containers, rioなど、複数のライブラリがヒット
それぞれの関数のドキュメントや実装へのリンクがある
問題提起:ベストな検索ツールの不在
これまで見てきた検索ツールは、どれも不便なところがある
Google : 公式のドキュメントがなかなか出てこない、記号の検索がいまいち
Hoogle : Haskell限定、自然言語での検索ができない
これらの不満を解決する検索ツールがあるととても嬉しい→作ろう!
提案する解決策:多言語対応API検索エンジンSisku
ライブラリのAPIドキュメントを検索する検索エンジン
既存のツールをうまく活用した多言語対応
各言語が自発的に対応せずとも、ある程度機能する
https://scrapbox.io/files/6273d76f51f301001fbe1877.png
手法のエッセンス:Language Server Protocolの応用
https://scrapbox.io/files/6273d8399ae92600239f36a2.png
to_string()の型とドキュメントをホバー表示している
これを集めれば、いい感じのAPIドキュメントが得られるのでは?
LSPを使えば、容易かつ言語非依存で集められる!!