つうさにメモブログ

つうさにがメモをブログとして書いていくところ

Skim 1.5.7

Skim 1.5.7の紹介。

Skim 1.5.7

Skim 1.5.7がリリースされました。Skimは高機能なmacOS向けPDFビューアで、私はLaTeXファイルのプレビューによく使っています。

さて、SkimはPDFを閲覧するばかりでなく、PDFにノートを取る機能がとても充実しており、また、非常に多機能なアプリケーションです。しかし、開発者がほぼ1人なことから、ユーザマニュアルであるSkim ヘルプはほぼ更新されず、新機能はRelease Noteにしか書かれていません。また、Release Noteにも詳細は書かれていないため、どこから新機能を使えるかがわからないときコミット履歴をたどる必要があります。

ということで、他の人がコミット履歴を辿らなくて済むように、Skim 1.5.7のRelease Noteとその詳細をブログに書いておきます(ただし全部ではない)。

新機能

概要 (Overview) 機能

PDFの全てのページを一覧で見られる概要機能が追加されました。メニューバーの [ 表示 > 概要を表示 ] から概要を表示することができます。ショートカットキーは⇧⌘O (shift-command-o)です。

ダブルクリックで概要を終わることができます。

Control-=、Option-Control-= でテキストノートを自動リサイズ

テキストノートの大きさを中身にfitするようにリサイズするショートカットが追加されました。Control-= と Option-Control-= の違いは、line break1が発生しているテキストノートに対しての動作が異なることです。line breakが発生しているテキストノートに対して、Control-=は横幅が維持されますが、Option-Control-=はline breakがちょうど解消される横幅になります。

しかしどうやらこの機能は、1.5.7では日本語キーボードで使えないようです。バグ報告したら即直してくれました。次のバージョンからは日本語キーボードでもしっかり使えそうです。

テキストノートで改行可能に

1.5.6以前では、テキストノート入力中にreturnを押すことは中身を確定するための動作であり、改行を含めることができませんでした。1.5.7ではreturnはそのまま改行を入力するようになりました。今までのreturnの役割はtabキーが担うことになり、tab文字を入力するにはoption-tabで入力します。

syncable noteがデフォルトに

まずsyncable noteが何かを説明する前に、Skimのノートがどこに保存されているのかについて説明しておきます。SkimのノートはPreview.appなどで使われるようなPDFのアノテーション機能を用いたものではなく、PDFの中に保存されるわけではありません2。Skimのノートはファイルシステムの extended attributes (EAs) の中に保存されています。EAsとは簡単に言えばファイルごとに保存できるメタデータ用のkey value storeです3

さて、EAs はあくまで拡張領域なので、クラウドストレージ上で同期されるかは自明ではありません。EAs が同期されないとなると、クラウドストレージ上のPDFをSkimでノートをつけたとき、PDFファイルだけ同期されSkimノートは同期されないため不便です。実はiCloudドライブには EAs のkeyによって EAs が同期されることを保証するという隠し機能があります4。syncable noteとは、その隠し機能を使ってiCloudドライブでもSkimノートが同期されるよう保証されたSkimノートのことです。

ということで、そんなsyncable Skimノートがデフォルトになりました。これからはiCloudドライブに置いてもSkimノートがちゃんと同期されて嬉しい!Appleはお願いだからドキュメントしてね!5

Skimノートを前に持ってくる機能

Skimノートは置き方次第で被ることがあります。ノート領域でSkimノートに対して右クリックすると「前に持ってくる」が選べるようになりました。

バグ修正

日本語ローカライズの修正

これは私のパッチなのですが、Skimのメニューバーの日本語訳をApple純正アプリケーションのものと合わせました。"他を隠す"→"ほかを隠す"、"クリップボードから新しく開く"→"クリップボードから新規作成"などとても細かいところですが、統一感があり洗練されたApple純正アプリケーションのローカライズに合わせることは、macOSネイティブアプリケーションをより良いものするために必要不可欠だと思います6。いいパッチを作れたかなと思います。

おしまい

いつの間に私はObjective-Cを読めるようになっていた...?


  1. 行分割。一行の文字列が収めるべき横幅に対して長すぎるとき行われる折り返しのこと。

  2. よってSkimでノートをつけたPDFを他のPDFビューアで開いても、Skimのノートは見られません。また、PDFのアノテーションにはSkimノートのアンカーノートのような機能はありません。

  3. 詳しくはman setxattrなどを参照してください。

  4. 参考: How to save file metadata in iCloud, and new info on extended attributes – The Eclectic Light Company

  5. メーリングリストで、Skimメンテナが「ドキュメントされてないため実装が遅くなった」と話しています。 Skim / Re: [Skim-app-users] syncable Skim notes

  6. アプリケーションのローカライズは言語コミュニティ内で統一が図られないとパッチの送り合いになってしまうことがありますが、今回の私のパッチはAppleローカライズに合わせるためだけのものなので、そういったことは起こらないと思っています(私自身macOSアプリケーションの日本語ローカライズの慣習をそれほどわかっていないため、今後他の部分のローカライズに手をつける気はありません)。