A Way of Code

興味の赴くままに書き綴っていきます。

Gitのセットアップ - homebrewをフォークするためのGit&GitHub入門 前編

homebrewのFormulaを直したくてフォークしようと思いっ立ったものの、GitとGitHubの使い方が分からなかったのでメモしました。

フォーク

homebrewを使っていると、欲しいパッケージ(Formula)が無かったり、オプションパラメータを直したくなることがあります。
そんなときはGitHubでフォークしましょう。
フォークをすると、homebrewのオリジナルを自分のGitHubにコピーして編集することが出来ます。さらに、追加あるいは編集したFormulaは、pull requestをすることで、本家にマージしてもらうように依頼できます。configureの調整で苦戦したあなたの労力は無駄じゃないんです!(鼻息荒く

目次

1. GitHubアカウントの作成
2. Gitのインストール
3. SSHキーの設定
4. Gitの設定

1. GitHubアカウントの作成

⇒アカウント作成済みの場合は「2.Gitのインストール」

まずGitHubのアカウントを持っていない場合は、先にGitHubのアカウントを作成してください。
https://github.com/

homebrewのフォークをするなら無料のフリープランで良いでしょう。
※アカウントを作成した後で有料のプランに切り替えることが出来ます。
アカウントを作成すると、https://github.com/ユーザ名 というURLであなたのGitHubポータルページが作成されます。

2. Gitのインストール

Macにはgitが最初から入っていますが、homebrewな人はhomeberwからgitをインストールしましょう。

$ brew install git

3. SSHキーの設定

GitHubを使うためにはSSHキーの設定が必要です。
既にSSHキーを持っていてGitHub以外のことに使っている方は、既存のSSHキーを使うか別名で新たにSSHキーを作成する等、適宜対処してください。
ここでは既存のSSHキーをバックアップしておいて、新たにGitHub用にSSHキーを作成してきます。

3.1 SSHキーがあるかどうかを調べる

cd ~/.ssh

⇒.sshディレクトリが無ければ以下をスキップして「3.2 SSHキーを生成する」へ。

既にSSHキーがあるかどうかを調べる:

$ ls
id_rsa      id_rsa.pub  known_hosts

id_rsaとid_rsa.pubという鍵が既に作成されていたので、バックアップしておきます。

$ mkdir key_backup
$ mv *rsa* ./key_backup

3.2 SSHキーを生成する

ssh-keygenでSSHキー(公開鍵/暗号鍵)を生成します。
パラメータにはあなたのメールアドレスを指定してください。

$ ssh-keygen -t rsa -C "your_email@yourmail.com"

すると、以下の入力を求められます。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/toggtc/.ssh/id_rsa): [入力が求められている]

⇒キーのファイル名をフルパスで指定してください。
 そのままEnterを押しても構いませんが、セキュリティのために他のファイル名にすることをお勧めします。
 (例:/Users/username/.ssh/hoge_rsa)

次にパスフレーズを求められるので、5文字以上の任意のフレーズを入力してEnterを押してください。
ここで入力したフレーズは忘れないようにしてください。

Enter passphrase (empty for no passphrase):  // => 任意のパスワードを入力して[Enter]
Enter same passphrase again:  // => 再度パスワードを入力して[Enter]

以下のようなメッセージが表示されれば、SSHキーが作成されました。

Your identification has been saved in /Users/toggtc/.ssh/id_rsa. // <-秘密鍵
Your public key has been saved in /Users/toggtc/.ssh/id_rsa.pub. // <-公開鍵
The key fingerprint is:
02:d1:cb:08:cb:66:ce:76:da:26:cd:9a:a0:78:ba:50 your_email@yourmail.com
The key's randomart image is:
+--[ RSA 2048]----+
|    ..           |
|  .  ..          |
| . o.o .         |
|  = ..o          |
| =E   . S        |
| .+ .  .         |
|o. *             |
|+.+.=            |
|=+o+             |
+-----------------+

なお、秘密鍵のパーミッションが600(もしくは400)になっていることを確認しておきます。

$ ls -alF
-rw-------   id_rsa        // <= 秘密鍵
-rw-r--r--   id_rsa.pub

3.3 SSHキーをGitHubに登録する

githubのページを開きます。
https://github.com/

(1) 右上にある"Account Settings"を開く:
f:id:toggtc:20120225092811j:plain

(2) 左側にある"SSH Keys"を開く:
f:id:toggtc:20120225092826j:plain

(3) "Add New SSH Key"を押す:
f:id:toggtc:20120225092855j:plain

(4) SSHキーをクリップボードにコピーしておく:
ここで、さきほど作成したSSHキーをクリップボードにコピーするために、以下のコマンドを入力します。
SSHキーのファイル名は適宜読み替えてください。また、公開鍵側のファイルを指定してください。

pbcopy < ~/.ssh/id_rsa.pub

#pbcopyはクリップボードの操作を行うMac固有のコマンドです。

(5) 入力
Titleに任意のタイトルを入力し、Keyの欄でクリップボードにコピーした公開鍵をペーストします。入力が終わったら"Add Key"ボタンを押します。
f:id:toggtc:20120225093335j:plain

(6) キーの追加完了
f:id:toggtc:20120225093411j:plain

3.4 SSHの接続テスト

$ ssh -T git@github.com
Hi toggtc! You've successfully authenticated, but GitHub does not provide shell access.

接続できました!

4. Gitの設定

Gitの設定はリポジトリごとにできますが、リポジトリごとに設定するのは面倒なので予めglobalな設定をしておきます。

4.1 user.name, user.email

gitにあなたの名前とEmailアドレスを教えてあげましょう。
ちなみに、user.name, user.emailに設定した情報はコミットしたときに表示されます。
# 以下の例は自分の名前とEmailに置き換えてくださいね。

git config --global user.name "Foo Bar"
git config --global user.email "Foo@example.com"

もし、ある特定のリポジトリでは設定を変えたい場合、そのリポジトリのある位置で--globalオプションを除いた状態でgit configコマンドを実行すると、そのリポジトリにだけ設定が反映されます。
例:

cd ~/git/other_project #←.gitのある位置
git config user.name "hogepiyo"
git config user.email "hogepiyo@example.co.jp"

4.2 github.user, github.token

GitHubのユーザ名とAPIトークンを設定します。
まず、APIトークンの確認ですが、GitHubのページから"Account Settings"→"Account Settings"と辿っていきます。

f:id:toggtc:20120225092811j:plain

f:id:toggtc:20120225102118j:plain

次に表示されているAPI TokenをGitに設定します。

$ git config --global github.user "hoge"
$ git config --global github.token "aabbcc11223344556677889900abc123"

github.userにはGitHubのユーザ名を、
github.tokenにはAPI Tokenをそれぞれ設定します。

このAPIトークンは秘密にしてください、だそうです。
もし漏らしてしまったら、パスワードを変えると自動的に再発行されます。
ということはGitHubのパスワードを再設定したら、上記の設定をもう一度行う必要があります。

4.3 color.ui, core.editor, alias

どうせなら色が付いていたほうがいいですよね。コンソールが真っ黒じゃ味気ないってもんです。
また、git commitをしたときに-mオプションを指定しないとエディタが立ち上がってコミット時のコメントを求められます。そのときに使うエディタを設定しておきましょう。

git config --global color.ui "auto"
git config --global core.editor "vi"

他にもgitコマンドをエイリアスできたり等、Gitにはいろいろな設定項目がありますので、お好みのGit環境を作ってください。


以上で準備は整いました。
後編ではフォークからpull requestまでをしていく予定です。
(2012/3/5追記:後編の前に中編を追加しました)

次回:http://toggtc.hatenablog.com/entry/2012/03/05/023137

参考

githup:help
Set Up Git
http://help.github.com/mac-set-up-git/

関連記事

homebrewをフォークするためのGit&GitHub入門
前編:Gitのセットアップ
中編 : Gitの仕組み
後編1:実践Git&GitHub (1/2)
後編2:実践Git&GitHub (2/2)

homebrewで編集してしまったFormulaを元に戻す方法

brew editで何らかのFormulaを変更した後、brew updateをするとエラーになります。

エラーの具合

こんな感じです。

$ brew update
remote: Counting objects: 328, done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 285 (delta 204), reused 181 (delta 109)
Receiving objects: 100% (285/285), 34.50 KiB, done.
Resolving deltas: 100% (204/204), completed with 36 local objects.
From https://github.com/mxcl/homebrew
   ec21973..ab7067c  master     -> origin/master
error: Your local changes to the following files would be overwritten by merge:
	Library/Formula/ghostscript.rb
Please, commit your changes or stash them before you can merge.
Aborting
Updating ec21973..ab7067c
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master

対処方法その1

編集した内容をすべて無かったことにして、homebrew 本家の内容にするには:

cd /usr/local
git checkout .

必ずhomebrewの.gitがある位置(=/usr/local)で、かつ、checkout のあとのドット . を忘れないで下さい。

この状態でbrew updateすると:

$ brew update     
Updated Homebrew from ec219733 to ab7067c9.
==> New formulae
apollo	      gnu-arch	    oath-toolkit  pulledpork
cbmbasic      libkate	    primesieve	  xplanet
==> Removed formulae
pngwriter
==> Updated formulae
armadillo	 ghostscript*	  libmagic	   pari		    xaw3d*
binwalk		 gradle		  libplist	   qemu		    zile
bwm-ng		 gtk+		  libvirt	   qimageblitz	    zsh
cc65		 help2man	  nmap		   redis
d-bus*		 icarus-verilog	  notmuch	   sonar
ffmpeg2theora	 kes		  open-mpi	   tidyp

Update出来ましたね。

対処方法その2

特定のファイルだけ戻す場合:

cd /usr/local
git checkout ファイル名
# e.g.
git checkout Library/Formula/ghostscript.rb

対処方法その3

homebrew本家の最新を取り込んだ後で、編集したFormulaをマージしたい場合:

cd /usr/local
git pull --rebase origin master

この場合はbrew updateしなくていいですね。

2012年、Mac(Lion)とTeXと日本語と、あとhomebrew

MacでTeXをやろうと思ったときに、いろいろと手間取ってしまったのでメモを残しておきます。
TeXまわりはごちゃごちゃしていて分かりづらいのですが、homebrewerのための2012年2月時点のお勧めの構成は以下です。

  • MacTex 2011 (の中のTeX Live 2011)
    • MacTexはTeX LiveというTeXまわりのアレコレをまとめたものに、MacのGUIアプリ等をバンドルしたもの。
    • 日本語まわりが充実してきているので、あえて国内で有名なあのパッケージやあのパッケージを使わなくても大抵は事足りる
    • 世界的にはこちらが定番
  • GUIアプリを個別にインストール(MacTeXにバンドルされるGUIアプリは使わない)
    • GUIアプリの中には使わないものがあったりする
      • 例:文献管理は付属のBibDeskじゃなくてMendeleyを使いたい、とか
    • MacTeXに付属するTeXShopのバージョンが2.xで古い。アップデートしても3.xにならないので、個別にインストールする。
  • Ghostscript 9.05 (via homeberw)
    • Ghostscript 9.04だと日本語がうまく通らない
  • ImageMagick 6.7.1-1 (via homebrew)

TeXはGhostscriptとImageMagickというライブラリを使用します。
homebrewのメリットでもありデメリットでもあるのですが、homebrewはパッケージ(のリンク)を/usr/local配下に設定してしまうので、MacTeX経由でImagMagickとGhostscriptをインストールすると、パッケージが重複する可能性があります。
ここではhomebrew経由でこれらのパッケージをインストールしておきます。
パッケージ重複が起こるかもしれないのなら、homebrewを優先するのがbrewerってもんです。

既にMacTeXをインストールしていて、再度インストールし直したいときは

なお、MacTeXまわりを再度インストールし直したい場合は、アンインストーラーが便利です。
MacTeXをpkgからインストールするとhomebrewのように気軽にアンインストールできない、と躊躇しているあなたにも便利です。
http://toggtc.hatenablog.com/entry/2012/02/12/225937

そもそもTeXとかLaTeXとかpTeXとか・・・って何?

以下が参考になります。日本人はplatex使えってことで。
http://www.nsknet.or.jp/~tony/TeX/texindex.html

また、TeXまわりの処理の流れは以下が参考になります。
http://nenya.cis.ibaraki.ac.jp/TIPS/LaTeX.html#nagare

インストールの方針

  • MacTeX 2011のパッケージ内容(※)をベースとしつつ、各パッケージの最新版を使う
  • homebrewで管理できるものはhomebrewで管理する

(※:MacTeXパッケージの内容) [ 参考 ]

パッケージ名 サブパッケージ 主なインストール先 内容
Ghostscript 9.02 /usr/local PostScriptやEPSに変換してPDFを作成するのに使われる。今回はhomebrew経由でver 9.05を使う。
GUI Applications /Applications/TeX 今回は個別にGUIアプリをインストールする。
BibDesk 文献管理ツール
Excalibur スペルチェッカー
LaTeXiT 数式エディタ。パワポとかに数式が貼れる。
TeXShop TeXエディタ。プレビュー機能付き
TeXWorks TeXの統合環境
TeX Live Utility TeX Liveの自動更新を行うユーティリティ
ImageMagick-convert 画像を操作したり表示したりする。TeX4htというTeX Liveに入っているTeXトランスレーターで必要になる。今回はhomebrewからインストールする。
Modern Fonts system font directory TeX Liveに入っているModern Fontsを、OSXのその他のアプリでも使えるようにするパッケージ。
TeX Gyre Fonts system font directory TeX Liveに入っているTeX Gyre Fontsを、OSXのその他のアプリでも使えるようにするパッケージ。
TeX Live 2011 /usr/local/texlive/2011 TeXの本体が入ったパッケージ。

環境

  • Mac OS X Lion
  • Xcode 4.2.1
  • homebrew

インストールするもの

参考までに、今回インストールする各パッケージのバージョンを記載しておきます。
青字は、homebrewから自動でインストールされる依存パッケージです。

  • ghostscript 9.05 [via homebrew]
    • pkg-config 0.25
    • jpeg 8d
    • libtiff 3.9.5
  • imagemagick 6.7.1-1 [via homebrew]
    • jpeg 8d
    • libtiff 3.9.5
    • little-cms 1.19
    • jasper 1.900.1
  • MacTeX-2011 (TeX Live 2011)
  • BibDesk 1.5.7
  • LaTeXiT 2.4.1
  • Excalibur 4.0.7
  • TeXShop 3.0.4
  • TeXworks 0.4.3
  • TeX Live Utility 0.96

1. Ghostsciptのインストール

f:id:toggtc:20120222124451j:plain:leftGhostscriptはディストリビューションやバージョンによって日本語が通ったり通らなかったりします。自分の環境ではhomebrewからghostscript 9.04やMacTeXにバンドルされたghostscript 9.02を使っても日本語がうまく通りませんでした。
最新のghostscript 9.05を使ったところ、日本語が通ったのでそちらを使います。
なお、homebrew本家のghostscriptは2012年2月時点で9.05にアップデートされていないので、ここでは暫定的にGitHubにアップしたFormulaを使います。 ⇒本家にマージされました。

$ brew update
$ brew install ghostscript

※もし9.05でもダメなら、バージョンは古くなりますが小川氏のghostscriptパッケージがお勧めです。
GPL Ghostscript 9.02
http://www2.kumagaku.ac.jp/teacher/herogw/

2. ImageMagickのインストール

f:id:toggtc:20120222190817j:plain:lefthomebrewでさくっと。

$ brew install imagemagick

3. MacTex 2011のインストール

f:id:toggtc:20120222192352j:plain:left以下のサイトから、MacTeX.mpkg.zipをダウンロードします。
http://www.tug.org/mactex/2011/

ダウンロードしたzipを解凍して、インストーラーを起動します。
f:id:toggtc:20120220033417j:plain

(途中省略!)

カスタマイズを選択して、
f:id:toggtc:20120220034011j:plain

インストールするパッケージを選択する。
ここではTeX Live 2011のみをインストールします。
f:id:toggtc:20120222123345j:plain
インストールボタンを押して、そのまま進んでいけば完了です。

4. GUIアプリのインストール

以降では、必要となるGUIアプリを取捨選択してください。

まず、/Applications/TeXディレクトリを作成しておきます。
この中にTeX関連のアプリを入れていくことにします。

$ mkdir -p /Applications/TeX

4.1 BibDesk

f:id:toggtc:20120222124525j:plain:left文献管理ソフトです。大量の論文を管理するのに便利です。
http://bibdesk.sourceforge.net/
文献管理は他にも、MendeleyやJabRef, Papers(有料)といったものがありますので、好きなものを入れると良いでしょう。

インストール:
.appを/Applications/TeXにコピーしてください。

4.2 Excalibur

f:id:toggtc:20120222192851j:plain:leftTeX(と英文)のスペルチェッカーです。標準では英語の辞書が付属していますが、辞書を追加することで他言語のスペルチェックが可能です。
http://excalibur.sourceforge.net/downloads.html

インストール:
ダウンロードしたdmgファイルをダブルクリックしてマウントした後、以下のコマンドでアプリをコピーしてください。

cd /Volumes
cp -rf ./Excalibur-4.0.7 /Applications/TeX

4.3 LaTeXiT

f:id:toggtc:20120222192916j:plain:left数式エディタ。ブログやパワポに数式を貼り付けるのにとても便利です。
http://www.chachatelier.fr/latexit/

今はオンラインの数式エディタがありますが、それらは大抵日本語が扱えません。
 ※例えばこれとか→ http://ja.numberempire.com/texequationeditor/equationeditor.php
LaTeXiTはTeXプロセッサとしてptexを選べるので日本語が扱えます。入れておいて損は無いでしょう。

インストール:
.appを/Applications/TeXにコピーしてください。

4.4 TeXShop

f:id:toggtc:20120222192934j:plain:leftTeXエディタの定番です。
http://pages.uoregon.edu/koch/texshop/
http://pages.uoregon.edu/koch/texshop/lion.html
パッと見分かりづらいですが、To download: のところの、"TeXShop Latest Version" のリンクからダンロードできます。
f:id:toggtc:20120222042317j:plain

TeXのエディタ環境としては他にも、emacsな方はYaTeX、viな方はvim-LaTeX等があります。

インストール:
.appを/Applications/TeXにコピーしてください。

4.5 TeXworks

f:id:toggtc:20120222192951j:plain:leftTeXの統合環境
http://www.tug.org/texworks/
http://www.tug.org/texworks/#Getting_TeXworks
"Getting TeXworks"のところにあるリンクを開きます。
f:id:toggtc:20120222043117j:plain
リンク先から、以下のファイルをダウンロードします。
TeXworks-Mac-0.4.3-r858-SnowLeopard.dmg

インストール:
.appを/Applications/TeXにコピーしてください。

4.6 TeX Live Utility

f:id:toggtc:20120222193402p:plain:leftTeX Liveのパッケージを管理するtlmgr (TeX Live Manager)のGUIフロントエンドです。
#tlmgr (TeX Live Manager)本体はMacTeX-2011 (TeX Live)に同梱されていますので、個別にインストールする必要はありません。

http://code.google.com/p/mactlmgr/
以降では、TeX Live Utilityを使ってTeX Liveを最新化しますので、入れておいてください。

インストール:
.appを/Applications/TeXにコピーしてください。

5. TeX Live のアップデート

TeXのアップデートを行うには、/ApplicationsにインストールされたTeX Live Utilityを起動してください。
 #コマンドでもアップデート可能ですが、GUIの方が分かりやすいでしょう。


注意:
もし前述のインストール手順どおりではなく、MacTeXのGUIアプリケーションパッケージからTeX Live Utilityをインストールした場合は、Utility本体のバージョンが古いので、まず先に本体を更新してください。

[TeX Live Utility]⇒[Check For Updates]を選択してください。
f:id:toggtc:20120220043318j:plain

Software Updateが起動するので、"Install Update"を押してアップデートします。
f:id:toggtc:20120220043359p:plain

アップデート完了後、TeX Live Utilityを再起動します。
f:id:toggtc:20120220043703p:plain

再起動すると、日本語化されます。
f:id:toggtc:20120220043712j:plain


まず、TeX基幹部の更新を行います。TeX Live Utility起動時に以下のメッセージが表示される(※)と思いますので、"更新"を押してください。
※:表示されない場合、接続先のリポジトリを変えてリトライしてみてください。
 [設定]⇒[リポジトリの管理]から変更できます。

f:id:toggtc:20120220045119j:plain

完了すると、以下のような表示になります。
f:id:toggtc:20120222044959p:plain


まだまだ終わりではありません。
次に、全体の更新を行います。
[作業]⇒[すべてのパッケージを更新]を選択してください。
f:id:toggtc:20120220045707j:plain

しばらく、いやいや、相当待ちます。待っている間、コーヒー一杯と言わず、食事でもしてきてはいかがでしょうか。
f:id:toggtc:20120222210208j:plain
ごちそうさまでした

7. 日本語環境の整備

この章の作業をしなくても日本語自体は扱えるようになっています。

  • 日本語フォントを綺麗に表示したい、とかヒラギノフォントLOVEな方は作業してください。
  • 面倒だと思う方はこの章をスキップしてください。

なお、この章の作業は後からでも行えます。

では、以下のページを参考に進めていきます。
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Mac#l0407136

7.1 tlptexliveリポジトリを使ったアップデート

一部パッケージの最新化と、pmetapost、pxdvi、uptexの導入を行います。日本語の入ったグラフを作るときとかに便利らしいので。

まず、TeX Live Utilityを起動し、URLバーに以下のtlptexliveリポジトリのURLを設定します。

http://www.tug.org/~preining/tlptexlive/

次に、「作業」⇒「パッケージの一覧を更新」します。

パッケージが表示されたら、「サーバ側に更新があります」と表示されたもののみを選択して、「作業」⇒「選択したパッケージの更新」で、パッケージを更新します。
f:id:toggtc:20120222213958p:plain
f:id:toggtc:20120222214017p:plain
更新が完了したら、次に、パッケージを導入します。
「パッケージ」タブを選択してパッケージを表示して、「状態」カラムをクリックしてソートし、"導入されていません" のカテゴリが上に来るようにします。
f:id:toggtc:20120222214731j:plain
上図のように、以下の項目を選択してください。commandキーを押しながらクリックすると複数選択できます。

選択したら、メニューバーの「作業」⇒「選択したパッケージを導入」で、パッケージをインストールします。
f:id:toggtc:20120222214901p:plain

7.2 フォントの設定

前述のアップデート作業で、ある程度日本語化ができているのですが、せっかくのMacなのでヒラギノフォントを使わない手はありません。
ただし、ヒラギノフォントはフリーフォントではありません。れっきとした 字游工房社の商品です。
Macを使ってプレゼンをしたり、自分の文書をPDF化してうっとりしたい場合はいいかもしれませんが、フォントを埋め込んだPDFの配布はグレーのようです。フォントを埋め込んだPDFファイルというのは、その気になればフォントを取り出すことが出来るはずですから。
参考: http://www.fugenji.org/~thomas/texlive-guide/font_setup.html

なお、前述のアップデートで、使って安心のIPAフォントがインストール&設定されていますので、そちらをメインに使うのも手です。

以降では、ヒラギノフォントを使う場合とIPAフォントを使う場合のそれぞれの設定を見ていきます。

A. ヒラギノフォントを使う場合

ヒラギノフォントを見てうっとりしたい方は、以下の設定を行います。
まずはフォントのリンク設定です。

sudo mkdir -p /usr/local/texlive/texmf-local/fonts/opentype/hiragino/
cd /usr/local/texlive/texmf-local/fonts/opentype/hiragino/
sudo ln -fs "/Library/Fonts/ヒラギノ明朝 Pro W3.otf" ./HiraMinPro-W3.otf 
sudo ln -fs "/Library/Fonts/ヒラギノ明朝 Pro W6.otf" ./HiraMinPro-W6.otf
sudo ln -fs "/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf" ./HiraMaruPro-W4.otf
sudo ln -fs "/Library/Fonts/ヒラギノ角ゴ Pro W3.otf" ./HiraKakuPro-W3.otf
sudo ln -fs "/Library/Fonts/ヒラギノ角ゴ Pro W6.otf" ./HiraKakuPro-W6.otf
sudo ln -fs "/Library/Fonts/ヒラギノ角ゴ Std W8.otf" ./HiraKakuStd-W8.otf
sudo ln -fs "/System/Library/Fonts/ヒラギノ明朝 ProN W3.otf" ./HiraMinProN-W3.otf
sudo ln -fs "/System/Library/Fonts/ヒラギノ明朝 ProN W6.otf" ./HiraMinProN-W6.otf
sudo ln -fs "/Library/Fonts/ヒラギノ丸ゴ ProN W4.otf" ./HiraMaruProN-W4.otf
sudo ln -fs "/System/Library/Fonts/ヒラギノ角ゴ ProN W3.otf" ./HiraKakuProN-W3.otf
sudo ln -fs "/System/Library/Fonts/ヒラギノ角ゴ ProN W6.otf" ./HiraKakuProN-W6.otf
sudo ln -fs "/Library/Fonts/ヒラギノ角ゴ StdN W8.otf" ./HiraKakuStdN-W8.otf
sudo texconfig-sys rehash

フォントを埋め込むには、以下の設定を行います。
まず、フォントの設定状態を確認します。

$ updmap-setup-kanji status
NOT EXIST otf-status .map

初期状態では、何も設定されていませんね。

次にヒラギノフォントを設定します。

$ sudo updmap-sys --setoption kanjiEmbed hiragino
Config file: "/usr/local/texlive/2011/texmf-config/web2c/updmap.cfg"
dvips output dir: "/usr/local/texlive/2011/texmf-var/fonts/map/dvips/updmap"
pdftex output dir: "/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap"
dvipdfm output dir: "/usr/local/texlive/2011/texmf-var/fonts/map/dvipdfm/updmap"
pxdvi output dir: "/usr/local/texlive/2011/texmf-var/fonts/map/pxdvi/updmap"

/usr/texbin/updmap is creating new map files
using the following configuration:
  LW35 font names                  : URWkb
  prefer outlines                  : true
  texhash enabled                  : true
  download standard fonts (dvips)  : false
  download standard fonts (pdftex) : true
  kanjiEmbed/variant replacement   : hiragino/
  create a mapfile for pxdvi       : false

Scanning for LW35 support files  [  3 files]
Scanning for MixedMap entries    [ 44 files]
Scanning for KanjiMap entries    [  5 files]
Scanning for Map entries         [167 files]

Generating output for dvipdfm...
Generating output for ps2pk...
Generating output for dvips...
Generating output for pdftex...

Files generated:
  /usr/local/texlive/2011/texmf-var/fonts/map/dvips/updmap:
       11499 2012-02-22 10:22:03 builtin35.map
       15962 2012-02-22 10:22:03 download35.map
      573766 2012-02-22 10:22:04 psfonts_pk.map
      834771 2012-02-22 10:22:04 psfonts_t1.map
      834800 2012-02-22 10:22:03 ps2pk.map
          14 2012-02-22 10:22:06 psfonts.map -> psfonts_t1.map
  /usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap:
      834807 2012-02-22 10:22:06 pdftex_dl14.map
      833233 2012-02-22 10:22:05 pdftex_ndl14.map
          15 2012-02-22 10:22:06 pdftex.map -> pdftex_dl14.map
  /usr/local/texlive/2011/texmf-var/fonts/map/dvipdfm/updmap:
        4789 2012-02-22 10:22:03 kanjix.map

Transcript written on "/usr/local/texlive/2011/texmf-var/web2c/updmap.log".
/usr/texbin/updmap: Updating ls-R files.

そしてステータスを確認します。

$ updmap-setup-kanji status
CURRENT family : hiragino
Standby family : ipa
Standby family : ipaex

hiraginoに設定されていますね。
なお、元に戻したい場合は、

$ sudo updmap-sys --setoption kanjiEmbed noEmbed
$ updmap-setup-kanji status
CURRENT family : noEmbed
Standby family : hiragino
Standby family : ipa
Standby family : ipaex

noEmbed(初期)になりました。

B. IPAフォントを使う場合

IPAフォントは、TeX Liveのアップデート時にほぼセットアップされているので、以下のコマンドを実行するだけです。
また、ipaの部分をipaexとすることで、IPAexフォントが使えます。

$ sudo updmap-sys --setoption kanjiEmbed ipa 
$ updmap-setup-kanji status
CURRENT family : ipa
Standby family : hiragino
Standby family : ipaex
フォントが埋め込まれたPDF

実際にそれぞれフォントを埋め込んでPDFを生成してみます。

noEmbedを設定した場合:
f:id:toggtc:20120223060812p:plain

hiraginoを設定した場合:
f:id:toggtc:20120223060900p:plain

ipaを設定した場合:
f:id:toggtc:20120223060924p:plain

6. LaTeXiTの設定

LaTeXiTを起動して、メニューバーから「LaTeXiT」⇒「環境設定」を開きます。

一般:

書き出しフォーマット PDF with outlined fonts
プレビューパネルの背景色を自動的にコントラスト チェックを入れる

テキスト編集: キーマップ

日本語キーボードを使用している場合は、下図のように設定します。
※英語キーボードでも、下図の設定をしておきたい場合は、option+Yで円マークが入力できます。
f:id:toggtc:20120222221441p:plain

テンプレート: プリアンブル

このあたりは、用途に応じて設定してください。
「+」ボタンを押して設定を追加し、適当な名前(ここではplatex)を付けます。
プリアンブルの最後の行に、以下を追加します。

\usepackage{plext}

「開いている書類に適用」「ライブラリに適用」を押して設定を反映します。
f:id:toggtc:20120223044256p:plain

プログラム

f:id:toggtc:20120223044746p:plain

  • 構成:任意の名前(ここではplatex)で構成を追加
  • latex+dvipdf」を選ぶ
  • LaTeXのパス: /usr/texbin/platex
  • LaTeXのパラメータ:-kanji=utf8
  • dvipdfのパス:/usr/local/texlive/2011/bin/x86_64-darwin/dvipdfmx

サービス

f:id:toggtc:20120223045423p:plain

  • プリアンブル:platex (上で設定したプリアンブルの構成を選択)

試してみる

f:id:toggtc:20120223052545p:plain
入れて損は無いとか言っておきながら、よくよく考えたら数式に日本語を埋めることってあまり無いなぁ。

7. TeX Shopの設定

メニューから、「TeXShop」⇒「環境設定」を開いて、以降のスクリーンショットを参考に設定してください。

書類

f:id:toggtc:20120223055708p:plain

タイプセット

f:id:toggtc:20120223055831p:plain

内部設定

f:id:toggtc:20120223055841p:plain

詳細

f:id:toggtc:20120223055908p:plain

コマンドの作成

上で設定したplatex2pdf-utf8コマンドはデフォルトで存在しないので、以下のコマンドで作成します。

cd ~/Library/TeXShop/bin
cp ptex2pdf-euc ptex2pdf-utf8
cp platex2pdf-euc platex2pdf-utf8

platex2pdf-utf8コマンドの中身はスクリプトで、ptexとdvipdfmxのラッパーになっています。
diffをかければ分かりますが、platex2pdf-eucもplatex2pdf-sjisも中身は同じです。
参考: http://www.math.s.chiba-u.ac.jp/~matsu/mac/mac03.html

次に、さきほどコピーしたコマンドを以下のように編集します。

ptex2pdf-utf8:


ptex -kanji=$ENCODE -fmt=$PTEX-$ENCODE -progname=$PTEX $1 && \$

ptex -kanji=$ENCODE -progname=$PTEX $1 && \$

platex2pdf-utf8:


ptex -kanji=$ENCODE -fmt=$PTEX-$ENCODE -progname=$PTEX $1 && \$

platex -kanji=$ENCODE -progname=$PTEX $1 && \$

試してみる

TeXShopを開き、以下のtexファイルをコピペしてsample.texファイルとして保存します。

¥documentclass[a4j, twocolumn, 10pt]{jarticle}
¥usepackage{amsmath}
¥usepackage{graphicx}
¥title{これはタイトルです}
¥author{名無しの権兵衛}
¥begin{document}
¥date{2012年2月1日}
¥twocolumn[
¥maketitle
¥vspace{-12mm}
¥begin{center}
¥begin{abstract}
¥begin{small}
これはAbstractです。

2段組(twocolumn)で宣言されたドキュメントに、1段組の文章を入れるには``\twocolumn[]''が使えます。
¥end{small}
¥end{abstract}
¥end{center}
¥vspace{2mm}
]

¥section{こんにちは¥LaTeX}
これは本文です。

空行を入れることで改行が出来ます。

太字は¥textbf{``textbf''}、イタリックは¥textit{``textit''}を使い、¥fbox{``fbox''}で文字を囲みます。

参考文献¥cite{okumura}は``cite''で引用できます。他にもBibTeXを使った方法があります。

ダブルクォーテーションマークで囲むにはグラーブアクセント`2つとシングルクォート’2つで文字を``囲み''ます。また、箇条書きは``itemize''、番号付きの箇条書きは``enumerate''を使います。

¥section{数式}
文章内で数式を書くには、ドル記号で囲みます。例えば波動関数は$¥psi(x)$と表せます。
番号付きの数式は``equation''で次のように表せます。
¥begin{equation}
 i¥hbar¥frac{¥partial¥psi}{¥partial t}
   = -¥frac{¥hbar^2}{2m}¥frac{¥partial^2¥psi}{¥partial x^2}+V(x,t)¥psi
 ¥label{schrodinger}
¥end{equation}
数式¥ref{schrodinger}を参照するには、数式に付与した``label''を``ref''を使って参照します。
数式を並べるには``eqnarray''、さらに番号を振らない場合は``*''を付けます。
¥begin{eqnarray*}
A&=&B(C+D)¥¥
 &=&BC+BD  
¥end{eqnarray*}

¥section{図表}
表は``tabular''で書くことができます。

¥begin{tabular}{|c|c|c} ¥hline
1 & あああ ¥¥ ¥hline
2 & いいい ¥¥ ¥hline
¥end{tabular}

図は``figure''で挿入することができます。
¥begin{figure}[h]
¥includegraphics{figure.eps}
¥end{figure}
¥part{Hello, TeX}
``jarticle''ドキュメントなので、``chapter''(章)は使えません。
¥section{節}
¥subsection{小節}
¥subsubsection{小々節}
¥paragraph{これは段落です}
¥subparagraph{これは小段落です}

¥begin{thebibliography}{99}
¥bibitem{okumura}
  奥村晴彦『[改訂第4版]¥LaTeXe 美文書作成入門』
  (技術評論社,2007年)
¥end{thebibliography}
¥end{document}

上記のtexファイルでは、数式を使うためにamsmath、画像を扱うためにgraphcxをそれぞれusepackageしています。
また、eps形式の適当な画像を「figure.eps」というファイル名で、sample.texファイルと同じ位置に格納しておきます。
なお、jpegやpngからepsフォーマットに変換するにはImageMagickのconvertコマンドが使えます。(texでpngファイルを使う方法もありますがここでは割愛)

$ convert figure.jpg figure.eps

texファイルをpdfに変換するには「タイプセット」を押します。
f:id:toggtc:20120224010523p:plain

出来上がりイメージ:
f:id:toggtc:20120225092033p:plain

一部拡大:
f:id:toggtc:20120225092045p:plain

ひらがなが綺麗に表示されていますね!

参考

以下のサイトを参考にさせていただきました。

TeX Wiki
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/

文化調査船「ガラクタ号」 プログ版 - 久し振りの単独記事は、MacOSX LionにTeX環境を入れる話。
http://blog.goo.ne.jp/superspeed1963/e/09803682db0044e5bb3e5f6d5674c95c

ただのらくがき帳。 - MacBook Air(Lion)にTex環境を導入した。
http://d.hatena.ne.jp/takc923/20111103/1320284492

pLaTeX2e
http://nenya.cis.ibaraki.ac.jp/TIPS/LaTeX.html#nagare

TeX「超」入門
http://www.nsknet.or.jp/~tony/TeX/texindex.html

diffをカラーで表示する

diffを使うとき、色付けされているととても見やすくなります。

インストール

Macでhomebrewの場合:

$ brew install colordiff

設定

デフォルトの設定でも十分ですが、お好みで設定を加えます。

alias diff='colordiff'
vi ~/.colordiffrc
# 好みに応じて編集
banner=no
color_patches=no
plain=white
newtext=yellow
oldtext=darkblue
diffstuff=green
cvsstuff=darkwhite

使い方

diffと同じです。パッチ形式の出力ももちろん可能です。

colordiff a.txt b.txt
あるいは
diff a.txt b.txt

スクリーンショット

ただのdiff

f:id:toggtc:20120223031840p:plain

colordiff (デフォルト)

f:id:toggtc:20120223031856p:plain

colordiff (お好み)

f:id:toggtc:20120223031926p:plain
f:id:toggtc:20120223031933p:plain

diff -u a.txt b.txtした場合:
f:id:toggtc:20120223032004p:plain

MacTeX 2011のアンインストーラーを作ってみた

MacTexのアンインストーラーを作ってみました。
別にMacTeXが嫌いになったわけじゃなくて、homebrewとパッケージ重複させてしまったのでMacTeXを入れ直そうと思ったらアンインストーラーを作っていたんです。
※ご利用は自己責任で。

使い方

まずコマンドをダウンロードします。
https://raw.github.com/toggtc/mactex-uninstaller/master/UninstallMacTex.command
ブラウザでファイルの中身が表示されてしまう場合は、別名保存してください。
このとき、ファイルの拡張子を.txtではなく.commandで保存してください
f:id:toggtc:20120220012003j:plain

次に、ダブルクリックで実行して、
f:id:toggtc:20120220012026j:plain

Terminalが起動するので、root権限のパスワードを入力してください。
通常は、自分のアカウントのパスワードでいいはずです。
# sudoでファイルを削除しているので、パスワードが必要なのです。

$ /Users/toggtc/github/mactex-uninstaller/UninstallMacTex.command ; exit;
Password: (パスワードを入力)[Enter]
Remove GUI Applications...
Remove TeXLive 2011...
Remove Ghostscript...
Remove ImageMagick-convert...
Remove MacTeX Latin-Modern Fonts...
Remove MacTeX TeX-Gyre Fonts...
Done

"Done"と表示されたら完了なので、Terminalを閉じてください。

Terminalから実行する場合

curl -kLO https://raw.github.com/toggtc/mactex-uninstaller/master/UninstallMacTex.command
sudo ./UninstallMacTex.command
Password: (パスワードを入力)[Enter]

注意

  • texmfや~/Library以下にあるTeXアプリ関連のファイルを全て削除するので、設定ファイルや各種データ等は予めバックアップをしておいてください。
  • 重複パッケージに対応していません
    • homebrew等でImageMagick、Ghostscriptを管理している場合は、先にhomebrew等を使ってImageMagick, Ghostscriptを削除してください。
  • リトライに対応していないので、アンインストールを中断しないでください。

何かあればGitHubの方へ
https://github.com/toggtc/mactex-uninstaller

英国政府がポータルサイトをアジャイルで開発 jQuery, Ruby, Amazon, Jenkins 等を使用

すばらしい、の一言です

英国政府、新ポータルGov.ukをクラウド、アジャイルRubyで開発。ソースはGithubで公開
http://www.publickey1.jp/blog/12/govukrubygithub.html

With GOV.UK, British government redefines the online government platform
http://radar.oreilly.com/2012/01/with-govuk-british-government.html

Mac OS X 10.7.3 Lionでpythonbrew, virtualenv, pip, buildoutなPython環境を構築する 第4回 hello, buildout

前回:http://toggtc.hatenablog.com/entry/2012/02/06/023807

今回は、前回構築した仮想環境を元に、buildoutを使ってみます。
buildoutはPythonのビルドシステムで、JavaでいうところのMavenに近いものです。必要なライブラリを指定しておけば、自動でダウンロードして環境を作ってくれる優れものです。
pythonbrew にはbuildoutコマンドが用意されているのですが、うまく動かなかったので、今回はzc.buildoutを直接使います。

1. buildoutのミニマムな手順

  1. プロジェクトディレクトリを作成する
    • 任意の名前でディレクトリを作ります。この中に、必要なライブラリや、開発するソースコード等々一式が格納されることになります。
  2. buildoutの初期セットアップ
    • プロジェクトディレクトリに対して、buildoutから初期セットアップをすると、buildout用のディレクトリやファイルが自動生成されます。
  3. buildout.cfgを作成する
    • 設定ファイルに依存するライブラリやらインストール手順やらを記述します。
  4. buildoutを実行する
    • buildout.cfgに従って、必要なライブラリをダウンロード・配置等々します。

2. Hello, buildout

とにかく動かしてみましょう。

2.1 仮想環境をオンにする

$ pythonbrew venv use py27

2.2 プロジェクト用のディレクトリを作成する

任意の名前でディレクトリを作ります。

$ mkdir ~/sample_project
$ cd ~/sample_project

以下、sample_projectディレクトリ直下の位置で作業を行います。

2.3 buildoutの初期セットアップ

buildoutのインストール方法によって手順が異なります。

(A) buildoutをpy27環境にインストールする方法

(A-1)
pipを使ってbuildoutを仮想環境py27にインストールします。

$ pip install zc.buildout

(A-2)
buildoutコマンドが使えるようになるので、初期セットアップを実行します。

$ buildout init
(B) buildoutをsample_projectにのみインストールする

(B-1)
buildoutをグローバルなPython環境(ここでは仮想環境のpy27)にインストールしたくない場合は、対象のプロジェクトディレクトリにのみインストールすることが出来ます。(といっても、スクリプトをダウンロードするだけです)

wget "http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py"

(B-2)
ダウンロードしたbootstrap.pyを実行すれば、初期セットアップが実施できます。

python bootstrap.py

2.4 buildout.cfgを作成する

buildoutの初期セットアップをすると、ミニマムなbuildout.cfgが作成されています。これを編集します。

$ vi buildout.cfg
# 以下の内容に編集する
[buildout]
parts = xmlenv

[xmlenv]
recipe = zc.recipe.egg
eggs =
    lxml
interpreter = python

※コピペする場合、正しくコピペされているか確認してください。

2.5 buildoutを実行する

./bin/buildoutと打つだけです。sample_projectに配備されたbuildoutコマンドを実行する点に注意してください。

$ ./bin/buildout
Not upgrading because not running a local buildout command.
Getting distribution for 'zc.recipe.egg'.
Got zc.recipe.egg 1.3.2.
Installing xmlenv.
Getting distribution for 'lxml'.
Building lxml version 2.3.3.
Building without Cython.
Using build configuration of libxslt 1.1.24
Got lxml 2.3.3.
Generated interpreter '/Users/toggtc/sample_project/bin/pythonparts'.

依存するライブラリが自動でダウンロードされます。

2.6 hello, buildout

環境ができたので、サンプルソースを動かしてみます。

$ mkdir src
$ vi src/hello_buildout.py
# 以下の内容で編集する
from lxml import etree

root = etree.XML('<root><foo><bar>hello, buildout</bar></foo></root>')
print(root.tag)
print(etree.tostring(root))

ソースコードを編集したら、動かします。
ここで、pythonコマンドではなく、sample_projectに配備された./bin/pythonを実行する点に注意してください。

$ ./bin/python ./src/hello_buildout.py
root
<root><foo><bar>hello, buildout</bar></foo></root>

なお、sample_project/bin/pythonではなく、PATHが通っている方のpythonで実行すると、、、

$ python ./src/hello_buildout.py 
Traceback (most recent call last):
  File "hello_lxml.py", line 1, in <module>
    from lxml import etree
ImportError: No module named lxml

このように、lxmlライブラリが無くてエラーになります。buildoutがsample_projectにのみ、lxmlライブラリをインストールしていることが分かります。

3. buildout.cfgの中身

今回使用したbuildout.cfgを再掲します。

[buildout]
parts = xmlenv

[xmlenv]
recipe = zc.recipe.egg
eggs =
    lxml
interpreter = python

[buildout]

[buildout] は、buildout.cfgで必ず記述する宣言です。

parts

parts には、構築するパート(part)を列挙します。複数のパートを列挙するときは、スペースで気切ります。(例:part = xmlenv foo bar)

[xmlenv]

partsで指定したxmlenvの参照先が、[xmlenv]です。xmlenvという名前は任意です。
今回のxmlenvではrecipe, eggs, interpreterの3つの設定を行なっています。

recipe

recipeの正体は、egg(ソースやら何やらのファイルをアーカイブ化したもの)のようです。このeggがPyPIリポジトリに集約されていて、recipe = zc.recipe.eggとすることで、'zc.recipe.egg'を取得しているようです。
この'zc.recipe.egg'は、buildout initで作ったsample_project/eggsディレクトリに各種eggをインストールするためのプラグインのようです。
この'zc.recipe.egg'は、後述するlxmlライブラリのインストールに必要なのです。

参考:http://pypi.python.org/pypi/zc.recipe.egg/

eggs

eggsには、必要なライブラリを列挙しておきます。ここではlxmlを指定しています。

interpreter

sample_project環境で使うPythonインタプリタを設定します。ここでは'python'という名前で設定しました。

4. まとめ

buildoutを使って、独立した環境を作ることが出来ました。
今回は、かなりシンプルなbuildoutプロジェクトでした。lxmlライブラリを使うだけなら、pipやeasy_installを使ったほうが楽かもしれませんが、buildoutでは、その他、サーバの起動や複雑なインストールスクリプトの実行等、多種多様なことが出来ます。
特に、チームで開発を行う場合、個人個人で開発環境をセットアップするよりもbuildoutを使って同じ環境を作ったほうが、トラブルも少なく効率的であると思います。また、個人で開発する場合でも、依存するライブラリや複雑な設定を必要とする場合に、Python本体の環境を汚さずに環境構築できるという利点があります。
buildoutの欠点としては、日本語のドキュメントが少ないことでしょうか。今回の例をみて、「で、結局私が作りたい環境は、buildoutではどうやって作ったらいいの?」と思ったことでしょう。
日本語のリソースとしては、清水川さんが、buildoutのサンプルを作成されています。また、本家のサイトではチュートリアルやrecipeの書き方、代表的なrecipeの紹介がありますので、参考にしてみてください。

(参考)
清水川WEB
zc.buildout メモ
http://www.freia.jp/taka/docs/buildout/index.html

buildout.org
Buildout v1.2.1 documentation
http://www.buildout.org/docs/index.html

今回までで、ひと通りPythonの環境が出来ました。あとは実環境なり仮想環境、あるいはbuildoutから必要なライブラリを引っ張ってきてPythonライフをLet's Enjoy!