Macで快適にプログラミング 
増井研M1 桜井雄介 
流
自己紹介 
• 桜井雄介/ @keroxp 
• 政策・メディア研究科修士1年 
• 研究テーマ 
– 日本語ソフトウェアキーボード 
– インタラクティブアニメーション 
• 得意なこと 
– iOSアプリ 
– フロントエンドjs 
• 好きな言語 
– Objective-C, CoffeeScript 
• 最近の興味 
– Haxe/OpenFL
研究成果 
• 2012-2013年「Blossom」 
• タブレット向け日本語入力キーボード 
• 情報処理学会HCI研究会学生奨励賞受賞
みなさんOSは何使ってますか
開発者がMacを選ぶ理由 
• UNIX系なのでLinuxなどと環境が似ている 
– サーバーサイドにデプロイするときに困らない 
• Homebrewのおかげでパッケージが充実して 
いる 
• プログラミング環境のセットアップが簡単 
• iOSアプリが開発できる
Macでソフトウェアを 
開発するための便利 
な道具を紹介します
Xcode 
• Macでの開発には必須 
• 正確にはXcodeと一緒に入れるCommand 
Line Toolsが必要 
– gcc, clangのCコンパイラが入っている 
– これがないと後述のHomebrewが使えない 
• iOS/Macのアプリを開発するのにも必要 
– MacでC, C++, Objective-Cを書くにはこれが一番 
• IDEとしても非常に優秀
Homebrew 
• Macのコマンドラインパッケージの管理ソフト 
• 様々なソフトがこれでインストール/アンイン 
ストールできる 
• make installとか邪悪なことをしなくて済む
./configure && make &&make install 
をみつけたら
殺せ
make installはなぜ悪か 
• 何処にインストールされるのかよく分からない 
• どうやってアンインストールするのか分からな 
い 
• 何がインストールされてるのか分からない 
• バージョンアップできない 
• 大体ビルドできない 
• システムが汚染されていく 
• まずはbrew searchで検索
Brewの良いところ 
• 『管理』が出来る 
– 追加・更新・削除ができる 
– make && make installとかするとこれができない 
– バージョンを上げたり下げたり 
– 把握ができる 
• 面倒なことをしなくてよい 
– brew install XXX するだけでインストール完了 
– brew update && brew upgradeでアップデート完 
了
Brewで入れよう 
• Git/svn 
– Macには最初から入っているがバージョンが古い 
• Android SDK 
– 普通は自分でダウンロードしてドコかに置く 
– バージョンアップとかが面倒 
• Node.js 
– brewで入れるのが一番楽 
– npmも入ってるよ 
• ruby-build, rbenv 
– rubyのバージョン管理のタメのツール 
– brewで入れるのが(ry
Sublime Text 
• 軽量のコードエディタ 
• 何かと便利 
• 内部プラグインがとても充実している 
• ほぼすべての言語のシンタックスハイライト 
• 各種言語のビルドもできる 
• カスタマイズが楽
O-My-Zsh 
• OSSの.zshrc/.zshenv設定ファイル 
• これ大体使うよねっていうシェルの機能がま 
とめられている 
– Tabで選択移動 
– gitのbranch表示 
– lsに色つけ 
– コマンドライン引数の補完
zshとは何か 
• ターミナル上からコマンドを実行するための 
環境 
• いわゆるシェル 
– bash, tcshの仲間 
• 中でも一番zshが便利なので使いましょう
なぜO-My-Zshが必要か 
• 異なるコンピュータで同じ動作が期待できる 
• チーム開発の場合メンバーの環境を統一で 
きる 
– でも大体みんな自分で弄りたがるからあんまり推 
奨できない 
• 増井研ではgesh, nish, shoshなど各人秘伝の 
タレが存在している
Dash 
• ドキュメントツール 
• 言語のAPIを検索するのに非常に便利 
• 主要な言語なら大体ある 
• 主要なライブラリも大体ある 
– Rails, Underscore.js, Backbone.js … 
• 『あれどうなってたっけ?』というときに爆速で 
検索できる
なぜDashが必要か 
• ツールは何でもいい 
• 公式ドキュメントを読むことが重要 
• 主要な言語やライブラリは必ず公式ドキュメ 
ントが充実している 
– 引数や返り値、動作の挙動や注意点など 
• Dashは勝手にドキュメントをアップデートしてく 
れるので常に最新の情報を確認できる 
• 安易にWebを検索するよりもAPIを読もう
Geny Motion 
• Androidエミュレータ 
• 速い 
• 速い 
• 速い 
• とにかく速い 
• Android謹製のエミュレータは遅すぎて話にな 
らない 
• Android開発するなら必須
Refrector 
• iPhone/iPadのキャプチャツール 
• 実機でデバッグしているときの映像をMacで 
録画できる
iTerm2 
• ターミナルのすごいやつ 
• 何がすごいのかよく分からない 
• でもみんな使ってる 
• tmuxを使わなくても画面分割できる
Slack 
• 最近流行っているチャットツール 
• Skypeにはない色々な機能がある 
• 特に外部Webサービスとの連携が便利 
– Githubのコミット, Pull-Reqなどがチャットに流れて 
くる 
– Travis CIの失敗が流れてくる 
– Crashlyticsのログが流れてくる 
• 他にも楽しい機能がたくさん
Github 
• コードホスティング用Webサービス 
• 絶対に使うべき 
• 絶対に使うべき 
• 絶対に使うべき 
• 増井研は全員アカウントを持っている 
– 課題の提出とかにも使われ始めている 
• Githubアカウントを持っていない・・・?
Githubアカウントを 
持っていない子はどん 
どんしまっちゃおうねえ
なぜGithubを使うべきか 
• 単純にコードの管理が楽 
– ディレクトリに入れっぱなしイクナイ 
• 簡単に人に公開できる 
– 間違ってる点を指摘してもらえる 
– Pull-Requestで修正してもらえる 
• 他の人と一緒に作業ができる 
– 逆にGithubを使わずにどうやるのか
なぜGithubを使うべきか 
• 色々な便利な機能がある 
– Issue, Wiki, Pull-Requestなど 
• 大小様々なOSSのコードがある 
– 有名なOSSのコードはほとんどGithubにある 
• 世界中のトップレベルのコードが読める 
– 中途半端なレベルのコードではなく、大勢の人間 
が議論して作り上げたコードなのでグッドノウハ 
ウが詰まっている 
• 知らなければ「Github 入門」で今すぐggr
Q&A

Macで快適にプログラミング