• 作成:

Stackage Serverのちょっとした便利な使い方, Hoogleをブラウザのカスタム検索エンジンに追加しましょう, よく使うパッケージをブックマークする時はPackageRのURLにしましょう

Haskell (その3) Advent Calendar 2017 - Qiitaの4日目の記事です.

前回ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています - ncaq はかなりの長記事になりましたが, 今回はちょっとした小ネタです. Stackage Serverのちょっとした便利な使い方を紹介します.

Hoogleをブラウザのカスタム検索エンジンに追加しましょう

Haskellは関数が独立しているので, OOPLなどのメソッドと違い, 関数の名前で検索をかけることが容易です. というわけで,

と言ったHaskellの関数を検索するサービスが複数ありますが, 私は今はStackage Serverに付属のHoogleを使っています. HackageよりStackageの方がHaddock生成が早かったり, デザインが優れている所を気に入っています.

さて, Stackage ServerのHoogleはトップページにアクセスして右上のフォームに検索キーワードを入力すれば利用することが出来ます. しかし, それは面倒くさいので私は利用していません. どうやっているかと言うと, 検索エンジンを追加しました.

Mycroft Project: Search Engine Plugins - Firefox IE Chrome という, ブラウザの検索エンジンを投稿できるサイトがあります. 私はここにStackage ServerのHoogleの検索エンジンを追加しました. http://mycroftproject.com/search-engines.html?name=stackage

これをクリックしてカスタム検索エンジンとして追加して, キーワードにsを設定します. 別に任意の好きな文字列でいいです. 私は以下のように設定しています.

Firefox 設定 検索

するとロケーションバーにs fromListと入力して決定すると, fromListの検索結果にジャンプします.

少なくともFirefoxとChromeで動作することを確認しています.

Haskellプログラム開発をする上で, 関数の検索をすることは非常に多いです. トップページに何度もアクセスせずとも即座に検索できるのはかなりの時間短縮になりました.

これはあまりHaskellと関係ないのですが, 他に英辞郎やGoogle 翻訳もカスタム検索エンジンとして追加しておくと便利です.

よく使うパッケージをブックマークする時はPackageRのURLにしましょう

皆さんはHaskellでよく使うパッケージのStackage ServerのURLをブックマークしますか? 私はします. ブックマークしておくとロケーションバーに少し打ち込むだけでURL遷移候補として現れるので便利です.

さて, ブックマークするURLですが, 普通にHoogle経由で遷移したURLだと, LTSがURLに含まれるので, LTSがアップデートした時URLを変える必要があって不便です. そこでブックマークしておくのはPackageRのURLにしましょう. Stackage ServerはYesodで作られていてroutesが公開されています. stackage-server/routes at master · fpco/stackage-server

https://www.stackage.org/package/yesod-coreのように/package/#PackageNameの形式のURLをブックマークしておきましょう. そうしたらLTSがアップデートしても不変になります.

ソースコードを即座に読みましょう

常識かな? と思いつつ紹介します. Stackageに限らずHaddockで生成されたドキュメントは, 右上のSourceをクリックすることで, そのモジュールのソースコードを読むことが出来ます.

こういう機構があるメジャーなドキュメントシステムが支配的な言語は私はHaskellとRustぐらいしか知りません. 他の言語を触るとソースコードを即座に読むことが出来なくてイライラします.

ただ, そのモジュールがInternalのようなモジュールを使ってモジュールをexportしている場合, 実装を読むことが出来ません. そういう時は仕方がないのでソースコードを直接取得しましょう.

Used by packageを確認しましょう

Hackageには「このパッケージが依存しているパッケージ」しか表示されないのですが, Stackage Serverは「このパッケージに依存しているパッケージ」も表示してくれます. 似たようなパッケージがある場合, どちらが現在人気があるのか測るのに使えたりします.

HackageよりStackageを使いましょう

HackageのHaddock生成が遅いとか様々なことで悩むのはStackageを使うとどうでも良くなります. ただ, Stackageに登録されていないパッケージのドキュメントはStackageから直接読むことは出来ないのですが… しかしそういうパッケージもHackageへのリンクが貼られているのですぐにHackageに戻ることが出来ます.