« アプリ一覧に戻る

Tiger QuickLook

PowerPC Mac (Tiger) 向け ソース公開中

Mac OS X 10.4 Tiger 実機の上でネイティブに動く、軽量な Quick Look 代替アプリです。Quick Look 自体は Leopard (10.5) からの機能なので、Tiger には存在しません。「Finder でファイルを選んで Space キーを押すとプレビューが出る」という Leopard 以降の操作感を、Tiger 機で再現します。目的は「タイトルだけでは思い出せないファイルの中身確認」で、画像・PDF・テキスト・Office 文書(下の表を参照)まで、Tiger に最初から入っているものだけで対応しています。現在は v0.4、まだ機能を追加中です。

TigerQuickLook.dmg をダウンロード
これまでのダウンロード数: 11
最終更新日: 2026-09-09(v0.4)
※ 公開初日(2026-09-09)は、リリース直後に見つかった不具合をその日のうちに直して何度か差し替えています。初日に旧ビルドをダウンロードされた方は、お手数ですが最新版に入れ替えてください。申し訳ありません。
※ Tiger標準のSafari/curlは現代のHTTPS証明書を検証できないため、ここから直接ダウンロードできない場合があります。当サイトでは Aquafox(当サイトが日本語化パックを配布しているPowerPC向けブラウザ)をおすすめします。現代のHTTPSも普通に扱えます。難しい場合は、現代のMacで取得してからコピーするか、Tigerbrew/MacPorts経由の新しいcurlをご利用ください。
⚠️ 導入時に必須の設定:「補助装置にアクセスできるようにする」を有効化 Space キー方式は、修飾キーなしの Space を横取りするために「イベントタップ」という仕組みを使います。Tiger ではこれにシステム側の許可が必須です。システム環境設定 →「ユニバーサルアクセス」→ 画面いちばん下の「補助装置にアクセスできるようにする」にチェックを入れてください。チェックを入れずに起動すると、その旨のダイアログが出て終了します。
ファイルを指定して単発で開くだけ(open -a TigerQuickLook.app /パス/ファイル)なら、この設定は不要です。

変更履歴

  • 2026-09-09 — v0.4: プレビュー中の矢印キー移動が、表示できないファイル(壊れた xlsx や本文を取り出せない Office ファイルなど)で止まらず、次の表示できるファイルまで飛ぶように変更(止まると前のプレビューが残って別ファイルに見えるため)。行き止まりでは音で知らせます。あわせて、アプリ内の文言(メニュー・警告・ツールチップ)を日本語と英語の併記にしました
  • 2026-09-09 — v0.3: プレビュー中の矢印キー移動で、ウィンドウを作り直さず中身だけ差し替えるように変更(ちらつきが減り、ウィンドウの位置とサイズを保持)
  • 2026-09-09 — v0.2: 対応形式を拡張(追加ライブラリなし、Tiger標準の textutil / unzip のみ)。画像に TIFF / GIF / BMP、テキストは .md ほか .csv / .json / .xml / 各種ソースと拡張子なしのテキスト、旧Office(DOC / RTF / HTML は textutil 経由)、新Office(DOCX / PPTX / XLSX / ODT / ODS / ODP は ZIP 内の本文XMLを抽出)。目的は「整形」ではなく「名前だけでは思い出せないファイルの中身確認」。あわせて、プレビュー中に ← / → / ↑ / ↓ で同じフォルダ内の前後のファイルへ移動できるように(Leopard の Quick Look と同じ操作感)

対応形式

目的は「整形して表示する」ことではなく「名前だけでは思い出せないファイルの中身確認」です。中身の文字列さえ出れば十分、という割り切りです。

画像JPG / PNG / PDF / TIFF / GIF / BMP — ImageIO・Quartz で直接描画。PDF は1ページ目のみ。
テキストTXT / MD / CSV / JSON / XML と各種ソース等、拡張子を広く — 先頭64KBを等幅でそのまま表示。拡張子なしでも中身がテキストっぽければプレビューします。
旧 OfficeDOC(Word 2004 等)/ RTF / HTML — Tiger 標準の textutil -convert txt を経由。
新 OfficeDOCX / PPTX / XLSX / ODT / ODS / ODP — ZIP から本文XMLを unzip -p で取り出してタグ除去。

対応しないもの: RAW、レイアウトの再現、複数ページ・複数シートの網羅。追加ライブラリは使いません(外部依存は Tiger 同梱の textutil / unzip のみ)。

使い方

Finder を最前面にしてファイルを1つ選び、Space を押します。もう一度 Space(またはウィンドウで Esc)で閉じます。プレビュー表示中に ← / → / ↑ / ↓ を押すと、同じフォルダ内のファイルを名前順で前後に移動します(表示できないファイルは飛ばし、行き止まりでは音で知らせます)。Leopard の Quick Look と同じ操作感で、Space を押し直さずに隣の画像を続けて見比べられます。常駐させると メニューバー右側に「QL」 が表示され、終了はそこから行います(またはターミナルで killall TigerQuickLook)。Finder 以外が最前面のときは、Space は横取りされず通常どおり動きます。

インストール手順

  1. 上のボタンから TigerQuickLook.dmg を開き、TigerQuickLook.appアプリケーション フォルダに入れます。
  2. 「補助装置にアクセスできるようにする」を有効化します(上の黄色い枠を参照)。これを入れないと Space キー方式が起動できません。
  3. TigerQuickLook.appFinder でダブルクリックopen TigerQuickLook.app、またはログイン項目から起動します。実行ファイルをパスで直接叩かないでください.../MacOS/TigerQuickLook)。LaunchServices を通らないため、メニューバー項目・Finder への問い合わせ・プレビュー表示がすべて無反応になります(イベントタップだけは動くので気づきにくいです)。
  4. 常用するなら、システム環境設定 →「アカウント」→「ログイン項目」TigerQuickLook.app を追加します。

制限

  • Finder でファイル名をインラインでリネーム中に Space を押すと、スペースが入力されずプレビューが出てしまいます。編集中かどうかを外部プロセスから判定できないためです。Esc で戻せます。
  • Finder に切り替えた直後の約0.3秒間は、Space が効かないことがあります(前面アプリの監視がポーリングのため。Tiger には最前面アプリの変化を知らせる通知がありません)。ファイルを選ぶ動作で十分間が空きます。

対応環境

動作確認iBook G4 (PowerBook6,5) / Mac OS X 10.4.11 (Tiger)
要件PowerPC Mac / Mac OS X 10.4 (Tiger)

個人の趣味プロジェクトにつき無保証です。MITライセンス。ソースコード・ライセンス・開発ノートは上記のGitHubリポジトリにあります。

アプリは src/main.m 1ファイルで完結し、build.shgcc 直接呼び出しでビルドします。xcodebuild はこの実機では DevToolsSupport.framework が見つからず壊れているため使わず、.app バンドルはシェルスクリプトで手組みします。

「重くしない」を最優先に設計した

実機は2005年の iBook G4(1.2GHz・1.25GB RAM)。画像はフル解像度でデコードしてから縮小するのではなく、CGImageSourceCreateThumbnailAtIndexkCGImageSourceThumbnailMaxPixelSize を渡して最初から縮小デコードします。PDF は CGPDFDocumentCreateWithURL で開き、1ページ目だけを CGContextDrawPDFPage でその場描画します(PDFKit は Tiger に存在しません)。ページは遅延パースされるので、200ページの PDF でも開くのは一瞬で、効いてくるのは「1ページ目の中身の複雑さ」だけです。TXT は NSFileHandle で先頭64KBだけ読み、編集不可の NSTextView に流します。先読みなし・キャッシュなし・ウィンドウは使い捨て。1ページに2550×3300のスキャン画像を貼った5.4MBの PDF で、開くのにひと呼吸、ドラッグリサイズの追従が少しもたつく程度で、オフスクリーンのビットマップキャッシュなどの作り込みはやらないと判断しました。

「Space キー一発」をどう実現するか

いちばん悩んだところです。Services メニュー案は不成立でした。Tiger の Finder は選択中のファイルを Services のペーストボードに載せないため、項目が常にグレーアウトします(10.5 で改善された挙動)。⌘Y などの修飾キー付きなら Carbon の RegisterEventHotKey で実装でき、システム設定も不要ですが「キーが遠い」ため不採用。結局、修飾なし単キーを条件付きで横取りする手段は CGEventTap しかなく、そして Tiger の CGEventTap は「補助装置にアクセスできるようにする」を有効化しないと生成できません。ここは避けられないので、一度きりの設定として配布ドキュメントで強く周知する方針にしました。

ライブラリを1つも足さずに対応形式を広げる

v0.2 で対応形式を4つから20種類ほどに増やしましたが、ルールは「新しい依存を足さない」。小さな判定関数が拡張子で振り分け(中身のスニフも併用するので、拡張子のないテキストファイルもプレビューされます)。画像は ImageIO が元々読める範囲を足しただけ(TIFF/GIF/BMP)。旧 .doc.rtf.html は Tiger 同梱の /usr/bin/textutil に通します(日本語も往復で保持されます)。新しい Office 形式は ZIP なので、/usr/bin/unzip -p で本文パート(word/document.xmlppt/slides/slide*.xmlxl/sharedStrings.xmlcontent.xml)を取り出し、タグはコード側で除去します。レイアウトの再現ではなく識別のためのもので、それがまさに狙いです。

ハマった点

Terminal で Space が全角になる。 エージェントを動かした状態だと、Terminal で Space を打つと半角スペースではなく全角スペース(U+3000)が入りました。TextEdit では正常。原因は、アクティブなイベントタップをキーイベントが通過すると、WindowServer がそのイベントを「現在の入力ソース」で確定してしまうことです。日本語入力が有効だと Space が全角に変換され、[event characters] を直接読むタイプのアプリ(Terminal など)がその全角を受け取ります。対策はタップを常時有効にしないこと。0.3秒ごとの NSTimer ポーリングで「Finder が最前面、またはプレビュー表示中」のときだけ CGEventTapEnable します(Tiger には NSWorkspaceDidActivateApplicationNotification がなく、10.6以降の機能です)。副作用として、Finder に切り替えた直後の最大0.3秒は Space が効きません。
実行ファイルをパスで直接 exec すると GUI セッションに登録されない。 SSH 越しはもちろん、実機の Terminal から .../MacOS/TigerQuickLook と叩いても、LaunchServices を通らないため LSUIElement が適用されず、メニューバー項目・Finder への NSAppleScript・プレビューウィンドウがすべて無反応になります。CGEventTap だけは低レベルなので動いてしまい、切り分けを誤りやすいです。必ず open・ダブルクリック・ログイン項目から起動します。
Tiger SDK / GCC 4.0 の地雷。 CGFloat が存在しません(64ビット移行=Leopard 以降で入った型なので、Tiger では素直に float を使う)。CGPDFPageRef は親の CGPDFDocumentRef を延命してくれません。ページだけ retain して document を release すると、後からページにアクセスした瞬間に解放済みメモリを踏んで EXC_BAD_ACCESS でクラッシュします。document ごと保持し、描画のたびに CGPDFDocumentGetPage で取り直します。@"日本語" リテラルは GCC 4.0 が実行時エンコーディングで解釈して化けるため、ユーザーに見える文字列は [NSString stringWithUTF8String:] を通します。
現行の .icns は Tiger だとアイコンが真っ白になる。 現行の iconutil が作る .icns は PNG ベースの新しいアイコンタイプ(ic07/ic08/…、256〜1024px)で、Tiger の Finder はこれを解釈できません。Tiger が読めるのは「クラシック」タイプ(is32/il32/ih32/it32 + 8bit マスク、16〜128px、非圧縮または PackBits)だけです。libicns の png2icnspng2icns out.icns 16.png 32.png 48.png 128.png と作れば正しく出ます。
実機のスクリーンショットをこちらから撮れない。 開発は、手元でコードを直して scp で iBook に転送し、ssh 越しに build.sh を回す形で進めています。ただし screencapture を SSH セッションから実行しても何も生成されません(プロセスが WindowServer に繋がっていないため)。UI の確認は結局いつも iBook の画面を直接見る必要があります。

ソースコードはGitHubにあります。