GitHub Octokit を使ってみた

GitHub が公開している Octokit を使ってみたので、その際のメモをまとめたいと思います。

Octokitとは

GitHub API を使用する際の client ライブラリのようです。Introducing Octokitにてイントロダクションが公開されています。5/31 時点では RubyObjective-Cバインディングが公開されています。ここではRubyのものを触ってみたいと思います。

準備

まずは octokit の gem をインストールします。ちなみに、私の環境は以下のようなものです。

$ gem install octkit

なお、実際に動かしてみた際に下記のようなエラーが出たので、Mountain Lion+rubyでopensslエラーを参考に証明書のダウンロードを行いました。ありがとうございます!

Faraday::Error::ConnectionFailed: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

絵文字を取得してみる

試しに GitHub で使用出来る絵文字を 10 個取得してみます

#!/usr/bin/env ruby
# octokit.rb

require 'open-uri'
require 'octokit'

emojis = Octokit.emojis.to_a[0...10]

emojis.each do |name, url|
  fname = File.basename(url).sub(/\?.*$/, '')
  File.open(fname, 'wb') do |file|
    open(url) do |content|
      file.write(content.read)
    end
  end
end

下記を実行するとカレントディレクトリにファイルが 10 個ダウンロードされました

$ ./octokit.rb

まとめ

Octokit を使うと GitHub API を簡単に叩けるようになるので、色々なことが簡単にできそうです。ただ「これがやりたい!」という明確なものがなければ、あまり使い道が無いかもしれません(^_^;)

"コーディングを支える技術" を読んで

"コーディングを支える技術" を読みを終えたので、感想を記してみたいと思います。

きっかけ

本書を読むきっかけとなったのは小飼弾さんのブログ記事、言語を支えるコンセプト - 書評 - コーディングを支える技術を読んだことでした。

今までいろいろなプログラミング言語をつまみ食いして、プログラミングの世界によく出てくるキーワード 「継承、型、Mix-in」などなどをわかった気 (?) になっていましたが、「一度振り返りの意味も込めて読んでみよう」と思い、本屋さんで手に取りました。

感想

本書は色々なプログラミングに取り入れられている仕様、仕組み、概念が『なぜこうなっているのか』を学ぶための本だと思います。if 文や for 文などの基本的な制御構文から始まり、コンテナやクラスなどのよく使う機能を「他の言語との比較」や「歴史からの経緯」の二つの観点から解説されています。私としてはこの二つの観点から言語の仕組みを解説されているのが、「とても論理的でかつ面白い!」と思いました。

本書の中では色々なキーワードについて、比較と歴史から解説されていますが私が特に勉強になったことを以下に上げてみます。

当たり前の仕組みの「なぜ」を学ぶ

プログラミングをしていると当たり前のように if 文や for 文、クラスや型を使い、それがあるのが当たり前のように思っていましたが、本書ではそれがどういった経緯で作られたのかが解説されており、とても新鮮で面白かったです。ほとんどのものは何かを楽にするために作られた、というのが主な目的でしたが、それがなかった時との比較がきちんとされていて理解し易かったです。

言語によっての解決方法の違い

プログラミング言語によっての解決方法の違いが、きちんとコードを使って解説されていてとてもわかり易かったです。例えばある機能を再利用したい場合、Java では継承や委譲を使い、Ruby では Mix-in を使う、などそれがコード付きで解説されていたのが良かったです。(すいません、例が微妙かもしれません...)

クラスが持つ複数の役割

3 つ目はクラスがもつ役割の複数の役割についてです。ある言語では主に「振る舞いの仕様」としてクラスを使っていたり、また、ある言語では「コードの再利用の単位」としてクラスを使っていたりと、一言にクラスと言っても複数の役割があるということを意識させられました。また、クラスという概念が複数の役割をもつ事によって、どのような問題があるのか、またそれを解決するためのアプローチが書かれており、面白かったです。

まとめ

あまり長々と書いても疲れるだけなので、上ではなるべく短く書きましたが、言語の色々な仕組みについて書かれていてとても面白く、かつ抽象的な説明と具体的な説明のバランスが良く分かりやすい本だと思います。本書でプログラミングに関することを再勉強、再確認ができたと思います。

何より良かったのはプログラミング言語の概念の「なぜ」を考える意識が、少なからずですが自身のなかにできたことだと思います。是非ご一読されることをおすすめします!

Play framework の設定ファイルで環境変数を読み込む

最近 Play framework で Web アプリケーションを作成していますが、その中で設定ファイル (conf/application.conf など) の中で環境変数を読み込みたい場面がありました。例えば、OAuth 認証を使って twitter などのアプリケーションとの連携をする場合に、設定ファイルに直接 consumer key を記述するのははばかれるので、『環境変数に設定しておきそれを読み込む』といった感じです。

やり方

play framework のドキュメント にやり方が書いてありました :-)

具体的には application.conf の中で以下のように環境変数${? } で囲ってあげると良いようです。 (ENV_VARIABLE環境変数です。)

hoge=${?ENV_VARIABLE}

あとは、下記のように環境変数を設定しておくと読み込むことが出来ました。

$ export ENV_VARIABLE=jojo

ちなみに application.conf 内で include したファイル内でも正しく環境変数を読み込むことができました。

こうすることによって、git などでバージョン管理下にあるファイルでもコミットしたくない情報を隠すことが出来ます。

Heroku にデプロイする場合

以下のように Heroku での環境変数を設定してあげると、ちゃんと動きました。

$ heroku config:add ENV_VARIABLE=jojo

ちなみに application.conf 内で ${ENV_VARIABLE} のように ? を抜かしてもローカル環境では動きましたが、Heroku では上手く動きませんでした。 (詳しい方、教えていただけると幸いです)

gcc コンパイルで規格を指定するとき

久々に C を書いていて、以下のような for 文を書くとコンパイルの際に怒られたので、調べてみました。 忘れないようにメモ。(ファイル名は適当です)

  // hoge.c
  for (int i = 0; i < N; ++i) {
    // do something
  }

以下のようなエラーが。。。

$ gcc hoge.c -o hoge 
hoge.c:8: error: ‘for’ loop initial declaration used outside C99 mode
解法

gcc の -std オプションを指定するといいみたいです。

$ gcc hoge.c -o hoge -std=c99
// エラー無し

"Emacs 実践入門" を読んで Emacs の良さを再認識する

普段プログラミングをする際に Emacs を使っているのですが,最近は『あまり使いこなせてないなぁ』と思うことが多々ありました.
そんなとき,下記の『Emacs 実践入門』という本と出会いました.ここではこの本の感想と,本を読んで改めて思った Emacs の良さを書きたいと思います.

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs

前もって私の Emacs 歴を記しておくと,初めて Emacs に触れたのは大学1年生の Unix に関する講義の中で,今は社会人 1 年目なので Emacs 歴は 7 年という事になります.ですが,(途中 3 年くらい触れていなかった時期があるとはいえ)とてもとても 7 年目と言えるレベルではなく,キーバインドはある程度覚えている程度で Emacs Lisp は全くと言っていいくらい読めないレベルです...(ちなみに作者の id:tomoya さんは Emacs 歴は 4 年だそうです.4 年でこの本を書くとはすごい...)

感想

率直に感想を述べると『この本すげぇ!!』の一言に尽きます.何がすごいかというと,この本には Emacs をほとんど使いこなせていない私でもわかるわかりやすさ と『そんな機能あったんだ!』という驚きが詰まっています.そして何より,この本のいいところは本に書いてある設定を真似するだけで『便利な機能を簡単に導入できる』というところだと思います.そこで,以下ではこの本といいところを書こうと思いました.,Web を見るともう既に書評を書いている方が多く見受けられたので,ここでは私が思う Emacs で躓くところ,Emacs 良いところを書きたいと思います.

Emacs でよく躓くところ

私が日常で Emacs を使う中で躓いたところ & 躓いているところは以下の 2 点だと思います

  1. キーバインド
  2. 設定ファイル

キーバインドでつまずく

まず何より Emacs を初めて使うにあたり最初にぶつかった壁は Emacs 特有のキーバインドでした.

大学で初めて Emacs に触れたと書きましたが,その当時は何より『キーバインド』の意味すらわかりませんでした.私は情報系の学科に所属していましたが,入学した動機は『なんとなく』というお粗末なもので,Unix など触ったことなどあるわけもなく,Windows も『インターネットは使える』レベルでした.そして知っているキーバインドは「Ctrl-s」で「保存」,「Ctrl-c」で「コピー」,「Ctrl-v」で「ペースト」,「Ctrl-z」で「アンドゥ」ぐらいでした...(今考えるとなかなかだ^^;)

そんな「パソコンちょっと触ったことあるよ人間」にとって Emacsキーバインドはカオスそのもので「どうやってこれセーブするんだ!」「わけわかんない画面出てきた!」「Ctrl-z で元に戻せねぇー!!」というのは日常茶飯事で,最終的には泣く泣くマウスでメニューバーからコマンドを選んでいました.

そんな自分が Emacsキーバインドに慣れるきっかけになったのは,やはりプログラミングだと思います.プログラミングをよくやる方なら分かると思いますが,カーソルの移動の際にいちいちホームポジションを崩して,キーボードの右下にあるカーソルキー (もしくはマウス) を触るのはちょっと億劫だと思います.情報科に所属していたこともあり,ちょくちょくプログラミングをする機会があった私も,徐々にホームポジションを崩すのが煩わしく感じ,頑張って Emacsキーバインドを体に叩きこみました.今ではプログラミング以外で文書を書くときも Emacs キーバインドでないと困るぐらい慣れました.

設定ファイルでつまづく

Emacs に慣れてきた頃の方は次の段階では .emacs 或いは init.el などの設定ファイルを弄り始めると思います.私も『こんな機能ないかな』と Google にキーワードを打ち込みよく設定を探しています.しかしながらここでもよく躓くことがあります.

まず検索で引っかかった設定をコピペで .emacs に書きこんでも,記事が古い場合やバージョンの違い,環境の違いなどでうまく動作しないことがしょっちゅうです.また,自分が想像していた挙動と違うことも多々あり,結局,諦めることが多くあります.Emacs の設定は Emacs Lisp で書いてあることが多く,これが読めない自分にとってはデバッグのしようがないというか,そもそも読もうとすらしていないのが原因かもしれませんが..

ただ最近は Emacs 実践入門を読んだこともあり (?) ,また,Emacs Lisp も結局はプログラミング言語の一種 (?) だと気がついたこともあり,設定がうまく動作しないときにはなんとなくではありますが デバッグができるようになりました.よくよく考えれば当たり前のことで,設定に書いてあることがすべてでそれ以上でも以下でもないんですね ^^;

やっと本当の Emacs 生活が始まったような気がします.

Emacs のいいところ

今度は Emacs のいいところをつらつら書こうと思いましたが,正直,上に書いたことがそっくりそのまま Emacs のいいところだと思います.

つまり,Emacsキーバインド自在な設定が可能 というところに尽きると思います.

キーバインドは他のエディタでも普通に存在するものなので Emacs だけのメリットではないかもしれませんが,後者の自在な設定は Emacs が一番得意とするところだと思います.Emacs を使い始めたばかりの方はいきなり設定ファイルをいじり倒すというところまでは行かないかもしれませんが,やはり効率のよい作業を目指す場合には自分に合った設定を探すのが一番だと思います.

まとめ

とりとめない文書になってしまいましたが,Emacs はプログラミングをするにも,文書を書くにもとても適したエディタだと思います.Emacs に触れたばかりの頃は全くといっていいほど Emacs の良さがわかりませんでしたが,数年使ってみることでその良さが少しずつ分かってきたような気がします.

そして何より Emacs に触れたばかりの人や Emacs をもっと勉強しようという人には『Emacs 実践入門』はとてもお勧めです.

アーロンチェアを買いました

引越しをしたついでに前々から気になっていたアーロンチェアを購入したので,ここで簡単にレビューをしてみたいと思います.
Amazon.co.jp: ハーマンミラー アーロンチェア ポスチャーフィット フル装備 AE113AWB PJG1BBBK3D01: ホーム&キッチン

外観

宅急便のおじさんから荷物を受け取った時にまず最初に思ったのは,「デカッ!」ということでした.


下の写真を見ていただくとわかると思いますが,見事に廊下がふさがっています(・・;
うちの廊下が狭いということもありますが,横幅スレスレで運ぶのに苦労しました...
f:id:tatsuyafw:20120215201421j:image:h500:w300


MacBook Air の箱と比べると,その大きさがよく分かると思います.
「MacBook Air の箱持ってないからわからないよ」という方は...買ってください...
f:id:tatsuyafw:20120215201621j:image:h500:w300

開封

開封した画像が下になります.てっきり自分で組み立てるものだと思っていたので,最初から組上がっているのを見た時はびっくりしました.よくよく考えれば,バラバラになっていればもう少し箱が小さくなるはずですね^^;

f:id:tatsuyafw:20120215201904j:image:h500:w300


ダンボールからだそうと思った時に,またびっくりしたのは結構重いんですよね.アーロンチェア
椅子というものを生まれて初めて (?) 買ったので,椅子の重さの相場 を知りませんでした. (そんなものあるのか?)
そんな軽い気持ちで持ち上げようと思ったので,思わず「うぉ!」と一人,部屋で叫んでいました.

所感

一番気になるのは実際に座ってみてどうなのか,ということだと思いますが,やっぱり値段が値段なだけにいいですね(*^_^*)
細かいカスタマイズもできますし,なにより椅子初心者の僕でも『しっかり作られている』のがわかります.(たぶん)

と言っても,購入してまだ数日しか立っていないので本当のよさはこれから分かってくるのかなと思います*1.購入理由は「新居に住むことだし,部屋で最も長く使う椅子ぐらいはいいものを」と思ったことなので,これから末永く使って (座って) いきたいと思います.

RVM 環境での sudo

rvm 環境でなにか管理者権限の必要なことする場合は rvmsudo をつけるといいみたいです.
例えば,RSpec で sudo の必要なコマンドを打つようなテストを書いた際には,以下のように実行します.

rvmsudo rspec hoge_spec.rb