LilyPondに関する有益な情報源のまとめ

# (余談) LilyPond Advent Calendar 2017 つくりました

[LilyPond](http://lilypond.org/)は、テキストファイルから楽譜を生成するソフトウェアです。
TeXライクの独自の構文を用いており、更にSchemeを組み込んで拡張することができます。

[カレンダーの説明](https://qiita.com/advent-calendar/2017/lilypond)より:

> このカレンダーには、QiitaにおけるLilyPond情報の拡充、そしてQiitaをLilyPondの情報の共有拠点として確立したいという狙いがあります。

このカレンダーも有益な情報源になることを願って。

執筆当時、まだ枠が半分ぐらい余っています。これからの登録もぜひお待ちしています。


# (本題) 情報源のまとめ

LilyPondについて調べものをする際に、役立つウェブサイトなどを以下に紹介します。
用途に応じて使い分けられるよう、3つの評価指標を設けました。

__高度性__: 内容がどれぐらい高度か。基本的な音符の入力方法ぐらいだったら★☆☆☆☆、かなりトリッキーな記譜や、大規模なScheme拡張などは★★★★★ぐらいです。
__検索性__: 必要な情報をどれだけ探しやすいか。
__こんな時にオススメ__: どんな時に参照するのが良いか。

## 学習マニュアル

__高度性__: ★☆☆☆☆～★★★☆☆
__検索性__: ★★☆☆☆
__こんな時にオススメ__: LilyPondを始めたばかりの時。基本システムをもう一度確認したい時。
__安定版 (v2.18)__: http://lilypond.org/doc/v2.18/Documentation/learning/
__開発版 (v2.19)__: http://lilypond.org/doc/v2.19/Documentation/learning/

わざわざここで紹介するまでもないような気がしますが、おそらく皆さんご存知の公式マニュアルです。これを順番に読んでいけば、LilyPondの基本を一通り学ぶことができます。
3章や4章はやや高度な内容に入っていきますが、今後必要になってくるであろう調整や拡張のために必要な知識が網羅されています。
__初めての方は、まず一度このマニュアルを通読すべきです。__慣れてきた方ももう一度、二度と読み返すと、新しい発見があったり、知識が整理されるかもしれません。

内容についてですが、体系的にまとまっていると言うよりは、様々なことを簡潔に、順番に学習できるような構成になっています。そのため、「～～がしたい！」というような時に必要な情報を探すのは、他に比べて少し大変かもしれません。なお、音符の入力方法など、非常に基本的な構文の説明は「[1.2.1 簡単な記譜法](http://lilypond.org/doc/v2.19/Documentation/learning/simple-notation)」(開発版 v2.19) にあります。
v2.19で日本語翻訳が更新されました。__v2.18のものは訳が古いまま残っている部分があるため注意が必要です。__

## 記譜法リファレンス

__高度性__: ★☆☆☆☆～★★★★☆
__検索性__: ★★★★☆
__こんな時にオススメ__: 目的を達成する方法がわからない時、最初に参照すると良い。
__安定版 (v2.18)__: http://lilypond.org/doc/v2.18/Documentation/notation/
__開発版 (v2.19)__: http://lilypond.org/doc/v2.19/Documentation/notation/

これもおそらく皆さんご存知の公式マニュアルです。LilyPondの標準機能のほとんどが、このマニュアルで体系的に解説されています。何か困ったことがあったら、とりあえずこのマニュアルに答えが無いか確認すると良いと思います。
通読するには量が多いかもしれませんが、適当に読んでいるだけでも、「こんな機能があるんだ～」というような感じで勉強になります。
付録の [A. Notation manual tables](http://lilypond.org/doc/v2.19/Documentation/notation/notation-manual-tables) (開発版 v2.19) には様々なリストが収録されており、非常に参照しやすい形でまとまっています。
[B. カンニング ペーパー](http://lilypond.org/doc/v2.19/Documentation/notation/cheat-sheet) (開発版 v2.19) では基本的な構文が素早く参照できて便利かもしれません。

__執筆当時、v2.19の第1章のみ日本語翻訳が更新されています。それ以外の部分は更新されていない情報の可能性があるため十分注意してください。__ページによっては、英語版を参照すると新しい説明が追加されていたり、「既知の問題と警告」が解決されていたり、まるまる書き換わっているものがあります。私の翻訳が遅いせいです。ごめんなさい。

## LilyPond Snippet Repository

__高度性__: ★★★☆☆～★★★★★
__検索性__: ★★★★★
__こんな時にオススメ__: 少し高度なことがしたい時。拡張のノウハウを学習したい時。
__Snippet Repository__: http://lsr.di.unimi.it/
__Snippets (開発版 v2.19)__: http://lilypond.org/doc/v2.19/Documentation/snippets/index.html

主に、LilyPondの記譜機能を拡張する実例が載っています。単純なオーバーライドから大規模なSchemeコードまで、執筆当時、840ぐらいのスニペットが登録されています。全スニペット一覧の画像を眺めて「こんなことまでできるのか～」となってみるもよし。気になったものについて、どうやって実現しているんだろうとコードを読んで勉強するも良し。

外部サイトにあるSnippet Repositoryでは、各事例について、見出しに続いて出力がその場で概観できるようになっています。学習マニュアルにも載っていない高度な記譜がしたい時に、検索ボックスにそれっぽいキーワードを入れて、マッチしたスニペットの画像から目的のものを見つけて、コードをパクってくるといった使い方が一般的でしょうか。

公式マニュアルの一部となっているSnippetsの方は、収録内容が絞られており、また整理されています。新機能のスニペットもまずこちらに収録されるようです。

## LilyPond Regression Tests

__高度性__: ★☆☆☆☆～★★★★★
__検索性__: ★★★★☆
__こんな時にオススメ__: 標準機能で出来ることを一覧で見たい時。
__安定版 (v2.18)__: http://lilypond.org/doc/v2.18/input/regression/collated-files.html
__開発版 (v2.19)__: http://lilypond.org/doc/v2.19/input/regression/collated-files.html

本来は自動テスト用に書かれたテストケースの一覧です。つまるところLilyPondの機能一覧と言っても良いでしょう。
常用マニュアルとは言えませんが、時々眺めてみると、マニアックなものも結構あったりして面白いです。勉強にもなります。
相当な量が登録されていますが、ページが分割されていないため、画像の読み込みに時間がかかります。

## 内部リファレンス

__高度性__: ★★★★☆～★★★★★
__検索性__: ★★★★☆
__こんな時にオススメ__: 調整で、具体的にどのプロパティを変更すればよいかを突き止める時。何が調整可能かが知りたい時。
__安定版 (v2.18)__: http://lilypond.org/doc/v2.18/Documentation/internals/index.html
__開発版 (v2.19)__: http://lilypond.org/doc/v2.19/Documentation/internals/index.html

LilyPond本体のソースコードから自動生成される、内部のデータ構造などをまとめたリファレンスです。コンテキスト プロパティやGrobプロパティの一覧、標準で定義されているコンテキストやエングラーバの一覧などが記載されています。

自力で何らかの調整を行う際には、必ずお世話になるマニュアルです。気になるコンテキストやGrobのプロパティ一覧を眺めて、何が調整できるのかを学んだりすることもできます。
具体的な使い方は、学習マニュアル「[4.2 内部リファレンス マニュアル](http://lilypond.org/doc/v2.19/Documentation/learning/the-internals-reference-manual)」(v2.19 開発版) を読むと良いでしょう。

## lilypond-user メーリングリスト

__高度性__: ★★☆☆☆～★★★★★
__検索性__: ★★☆☆☆
__こんな時にオススメ__: 上のマニュアルに情報が見つからない時。出来る人に質問したい時。色々なテクニックを学びたい時。
__アーカイブ__: https://lists.gnu.org/archive/html/lilypond-user/
__登録__: https://lists.gnu.org/mailman/listinfo/lilypond-user

アーカイブには、過去にユーザーから出された質問とその回答が蓄積されています。言語こそ英語ですが、量は膨大です。検索ボックスもありますが、扱っているのは記譜に関する質問に限らないため、必要な情報を見つけ出すのは少し大変かもしれません。
アーカイブの中から目的無く、適当に気になったものを読んでいるだけでも、勉強になることが多いため非常に有用です。

また、メーリングリストに登録すると、自分で質問を投稿することもできます。私自身は使ったことが無いですが、出来る人が割とすぐに回答してくれているようですごいです。それなりに高度なことでも、ホイホイと良策を提示していてやばいです。

## Stack Overflow / StackExchange

__高度性__: ★★☆☆☆～★★★★☆
__検索性__: ★★★☆☆
__こんな時にオススメ__: そこまでオススメじゃないです。
__Stack Overflow__: https://stackoverflow.com/questions/tagged/lilypond
__StackExchange__: https://music.stackexchange.com/questions/tagged/lilypond

Google検索でヒットすることが何だかんだ多いので一応載せましたが、あまり活発ではないようです。もしかしたら必要な情報がここから見つかるかも？ぐらいな感じです。


# (余談) 筆者について

* 公式ドキュメントの日本語翻訳はじめました（進捗が遅くてごめんなさい）
* [けものフレンズの曲をピアノアレンジするやつ](http://www.nicovideo.jp/mylist/58537545) をLilyPondで書いてます（最近更新してなくてごめんなさい）
* [LilyPond四週間](https://github.com/suitougreentea/lilypond-four-weeks) が進んでません（ごめんなさい）
* LilyPond以外にも色々やってます。[Twitter](https://twitter.com/suitougreentea) を見て大体察してください。