職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

どう見る? Class Reference

※この内容は 2012年6月度Xcode勉強会関西ビギナーズ のLTで喋った内容とほぼ同じです。もう1週間も昔の話ですが…

問題提起

Xcodeのバージョンが4になったあたりから?、XcodeのDocumentブラウザの検索が異常に遅くなりました。その遅さ具合はスライド上で嘆いている通りですが、ウンザリしている方も多いはずです。

推測ではありますが、この検索が遅い原因として次のものが考えられます。

  1. インクリメンタル・サーチ
  2. メインスレッドでの検索処理?
  3. 検索対象の多さ

これら - 特に2番目のもの - はアンチパターンとして捉えておきたいところです。

それでは、このブラウザ以外の方法で華麗にクラスリファレンスを閲覧するにはどうすれば良いのでしょうか?

解決策1:MacのWebブラウザで見る

OS X Developer Library / iOS Developer Library
最も手軽に試す事のできる手段ですね。
これらのサイトからClass Referenceを見る場合、各Classページには検索フォームはありませんので、再検索の際に不便です。そこで、検索結果から指定したClassのページを表示させる際にはコマンド+クリック等の手段により、別のタブで表示させるようにすると検索フォームを維持できるため使い勝手が良いです。

解決策2:iPadのWebブラウザで見る

あまり知られていないようですが、前述のサイトはiPadに最適化されています。
Mac用Developer Library / iOS用Developer Library
iPadに最適化とは言っても、Portrait(縦置き)モードではMacのWebブラウザと似たような表示で面白みはありません。進化を発揮するのはLandscape(横置き)モードです。これだと左側のペインに検索フォームが生き続けますので、再検索も簡単です。時々バグって(?)検索フォームが消えますが、その時は大人しくリロードしましょう。

解決策3:"Dash"で見る

Mac App Store - Dash (Docs & Snippets)
Mac App Store で公開されている無料のAppです。
インクリメンタル・サーチを実装していますが軽快な検索が可能です。

解決策4:"DocSets"で見る

App Store - DocSets
これは冒頭に掲げた勉強会でLTやるまで知らなかったのですが、 App Store で公開されている有料のAppです。各種文書をダウンロードしてiOSデバイス内に格納して検索/表示します。デバイス内に格納するということは

  • オフラインでも検索/表示が可能
  • かなり容量食う

という長所/短所がありますので、理解した上で使用したいところです。例えばiOSの文書はバージョン1つ分で500MBytesくらいあるみたいなので、16GBytesのiPadとかだと辛そうです(実際辛い。。)。

解決策5:"AppKiDo"で見る

AppKiDo
DocSetsと同じく、勉強会に参加された方に教えて頂いたものです。クラスの継承関係を表示できるなど、高機能なブラウザです。
OS 10.4.x からのサポートということで非常に古い印象を受けます(し、LTでもそのように発言しました)が、GitHubを見る限りでは数ヶ月前にもpushの形跡があるので、きっと活動されているのでしょう。
使ってみたいのですが、時間が無くて難しい><

どれがオススメなのか?

AppKiDo以外は実際に使ってみましたが、今のところは開発に使用するMacの横にiPadを設置して"DocSets" で見るのが一番オススメです。
「コピペできるからMac上で見るのがいいやん」という話も頭をよぎりますが、Xcodeのコード補完があれば十分ですね。
金銭的な事情や作業スペースの事情などでiPadを設置できない場合は、やっぱりDashですかね。
あとは、早く時間を作ってAppKiDoを使ってみたいところです。