vagrant+chef-soloで作るモダンなPHP開発環境構築(serverspecによる自動テスト付き)

今時のモダンなPHPの開発環境の構築方法について調べてみました。
使用するPHPフレームワークとして、2013年注目すべきPHPフレームワークである Laravel4 を採用しました (出展 – 2013年において注目すべき PHP フレームワークは Laravel)。

使用した技術

ざっくり使用した技術の解説

  • Vagrant
    • 仮想環境を動かすためのフロントエンドツール
  • VirtualBox
    • 仮想環境を動かすためのバックエンドツール
  • chef-solo
    • Provisioningツール(環境の設定・準備をする)
  • serverspec
    • 環境に対してテストを実行するツール

さっそく環境構築

以上の技術の設定ファイル等をひと通りまとめたものを以下のリポジトリに push しました。
https://github.com/gologo13/vagrant-laravel-starterkit

詳細は README の Setup の章 を読んでいただくとして、以下のとおりにコマンドを実行すると環境構築がおおむね完了するはず。

あとは Laravel の作業ディレクトリである sandbox で作業をして、素晴らしいウェブサイトを作るだけです!

sandbox 以下のファイルは仮想環境と同期されています。
ですから、ホスト環境でここのファイルを編集して、ブラウザで確認すると即座に変更が反映されます。
もちろん、ホスト環境では好きなエディタ、IDEを使用頂けます。


TODO

  • アプリケーションパッケージの自動デプロイ設定
    • capistrano, Fabric 等というツールが使えそう
  • 本番環境向けの chef 設定

shellで新しくコマンドをインストールしたときにCommand not foundとなる問題を解決する方法

例えば、hoge という実行プログラムを PATH が通っている /usr/local/bin/ に新しくインストールしたとします。

と実行すると Command not found: hoge と言われる。

こういう経験よくありませんか?

そんな致命的な問題ではないのですが、この問題に割りとよく悩まされていて、私はよく新しく端末を立ち上げるか、exec zsh とかしてました。 でも、

と実行することで解決出来ます。 shell の内部にあるコマンドのハッシューテーブルを再構築するコマンドのようです。 すっきり。

ワンクリックで楽天に簡単にログインするブックマークレット

概要

以前、Yahoo!JAPANにワンクリックでログインする方法を紹介しました。

今回はその楽天版について紹介します。 このライフハックにより、楽天にログインするための面倒なID入力、パスワード入力が不要になります。

登録方法

もしあなたの楽天IDとパスワードがそれぞれ

  • ID: hoge@yahoo.co.jp
  • Password: mypassword

の場合、以下のようなブックマークレットを作成すればOK。ブックマークに登録するとき、ID とパスワードの部分はあなたのものに書き換えて、登録してください。

ブックマークは本来「http://…」から始まる URL を登録しますが、「javascript:…」から始めることで JavaScript として実行されます。これをブックマークレットと呼びます。

補足: 使用しているプラグインが改行を自動挿入してくれません。 ブックマークレットを全選択したい場合は、お手数をお掛けしますが、 ブックマークレットの部分をマウスオーバーして、出現する一番右のボタンをクリックしてください。 クリックすると、別タブでブックマークレット全体を表示してくれて、全選択しやすいと思います。

使用方法

Screen Shot 2013-04-14 at 12.03.16

あとはこの画面にいって、登録したブックマークをクリックするだけでOKです。

もちろんこのブックマークレットはPCのブラウザだけでなく、スマホのブラウザでも動作します! ログインのめんどくささにお困りの方はぜひお試しください。

念の為、述べておきますが、このブックマークレットのURLを見れば、パスワードがわかってしまうので、共用の PC のブラウザにこのブックマークレットを登録することはおすすめしません。

要望募集

他にも「このサイトにワンクリックでログインしたい!」という要望があればぜひコメントください!

書評:『UMLモデリングのエッセンス』

UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)
マーチン・ファウラー
翔泳社
売り上げランキング: 80,601

  

感想

ソフトウェア設計に興味があって、読んでみました。198ページで薄い本でしたが、内容は濃くしっかり学べました。 では、感想を書いていきます。

UML

UML の中で何が重要かと聞かれれば、間違いなくクラス図シーケンス図ですね。その証拠にこの本でも、記述の大半はこの2つのダイアグラムに割かれています。この2つに関してはしっかり書かれているので、リファレンスとしても使えると思います。

この2つ以外に使うとすれば、ユースケース図、状態図、配置図、アクティビティ図ぐらいでしょうか。ユースケース図は、ユーザとシステムとのインタラクションについて記述し、状態図はシステムの内部的な状態の遷移を表現する図ですね。また、配置図とアクティビティ図はあまり聞きなれないかもしれませんが、それぞれシステム構成図、フローチャートのようなものです。普段UMLと意識せずに、使っている方もいるかもしれません。

UMLは Unified Modeling Language の略で、グラフィカルなモデリング言語という位置付けになります。言語ですから、当然構文や文法といった仕様がきちんと定義されています。

仕様に従うに越したことはないかもしれませんが、仕様に拘って専門的になりすぎると、逆にUMLの意図が伝わらないかもしれません。結局、クライアントやチームの人たちにその設計の意味が伝わればいいわけです。ですから、自分が描いているイメージを無理やりUMLのいずれかに落としこむよりは、そのチーム内で通じる「名も無きダイアグラム」の方が伝わりやすいかもしれません。それなら後者のダイアグラムを設計図として採用した方が良いということですね。まあ当たり前かもしれません。

他にも、こんなUMLあるよという紹介だけします。

  • アクティビティ図:手続き的なまたは平行な振る舞い
  • シーケンス図:オブジェクト間の相互作用(シーケンスを重視)
  • タイミング図:オブジェクト間の相互作用(タイミングを重視)
  • コミュニケーション図:オブジェクト間の相互作用(リンクを重視)
  • 相互作用図:シーケンス図とアクティビティ図を合わせたもの
  • オブジェクト図:インスタンスの接続の基本例
  • パッケージ図:コンパイル次の階層構造
  • 配置図:ノードへの成果物の配置
  • ユースケース図:ユーザがシステムとどう対話(相互作用)するか
  • 状態図:オブジェクトの存在期間にイベントがオブジェクトに加える変更の内容
  • コンポジット図:クラスのランタイム分割

オブジェクト指向

また、この本の面白いところは、オブジェクト指向の重要な哲学についても言及されている点です。

オブジェクト指向における重要な考え方である

  • リスコフの置換原則
  • コマンド・クエリ分離原則
  • 契約による設計

などについて学ぶことができます。また、他にも「なぜインタフェースクラスが必要なのか」、「(C++でいうところの)テンプレートクラスと派生クラスの違い」、「依存関係が少ない設計方法」など、ただただUMLの仕様についてだらだらと記述する本とは異なる楽しさがあります。

開発プロセス

ソフトウェア開発プロセスについても言及されているのが面白かったです。

ウォータフォール型開発プロセス、反復型開発プロセス、段階的リリースそしてアジャイル開発プロセス。それぞれの長所短所について述べ、最終的には変更に強い反復型開発プロセスまたはアジャイル開発プロセスで開発を行うのがよいと結論付けていました。

ツール

これは本に書いてなかったことですが、「じゃあ実際にどうやってUMLを書けばいいの?」と思われる方もいると思うので、ここでは UML を作成するツールについて紹介します。もちろん、手書き派の方もそちらでOKだと思います。

デスクトップ

astah_community_rectangle

デスクトップで使える、おすすめの UML 作成ツールは astah* community 一択という感じでしょうか。無料で、使いやすくて、非の打ち所がないです。 Windows版、Mac版、Linux版とマルチプラットフォームにバイナリが用意されているのも魅力的ですね。

私自身、今デザインパターンの勉強をしているのですが、コードだけでなく、astah* を使って UML も合わせて書くようにしています。 → https://github.com/gologo13/design-pattern-practice

この勉強法だと、デザインパターンだけでなく、UMLも一緒に学べて一石二鳥ですね。

iOS アプリ

なんと astah にiOS版もあります。iPad さえあれば、いつでもどこでも UML が書けますね。

ダウンロードリンクはこちら

astah* UML pad - Change Vision, Inc.

Web

Web版だと、最近見つけた js-sequence-diagrams by bramp になります。 テキストから手書き風のUMLを生成してくれます。

参考書籍

最後に、この本で参考文献として挙げられていた書籍に関して紹介します。

実践UML―パターンによる統一プロセスガイド
クレーグ ラーマン
ピアソンエデュケーション
売り上げランキング: 108,548

オブジェクト指向についてわかりやすく解説されています

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
ロバート・C・マーチン
ソフトバンククリエイティブ
売り上げランキング: 140,808

オブジェクト指向設計やデザインパターンに関して、深く解説している書籍です。私も是非読みたいです。

UMLリファレンスマニュアル (Object Technology Series)
ジェームズ ランボー グラディ ブーチ イヴァー ヤコブソン
ピアソンエデュケーション
売り上げランキング: 302,753

clangでc++コードをコンパイルする方法(解説付き)

小ネタです。

以下のようなC++プログラムがあるとします。一見全く問題なさそうです。

しかし、このプログラムを以下のように clang コマンドでコンパイルすると、コンパイルエラーになります。(Mac 環境)

結論として、clang++コマンドを使ってコンパイルするのが正解です。
clang++ を使うと、無事コンパイルができました。

 
 
 

このまま終わるのは腑に落ちないので、もう少し背景を説明します。

clang と clang++ の違いは、ライブラリのリンク時に C++ のライブラリを呼び出すかどうかという点です。この違いは clang, clang++ コマンドに -v オプションをつけて呼び出すとわかります。

-v オプションをつけて、リンク部分の出力を取り出すと次のようになるはずです。
注目すべき点は、/usr/bin/ld というリンクが実行される部分です。

clang の出力

clang++ の出力

/usr/bin/ld の行を比較すると、clang++ の出力には -lstdc++ という C++ のライブラリがリンクされているのがわかります。一方で、clang の方はこのリンクがありません。

だから、C++ 固有の std::cout, std::ostream::operator<< などが undefined symbol (意味:宣言はあるけど、実装がない)となり、コンパイルエラーになることがわかります。

Posted in: c++ |

GitHub as a Platform

200px-GitHub

vim のパッケージ管理を pathogen から NeoBundle へと移行している時にふと思ったこと。

私は vim のパッケージ管理として pathogen を2年間使ってきた。指定したフォルダの中にパッケージを放り込むと、それを autoload してくれる優れもの。

しかし、最近の主流は VundleNeoBundle。これらは .vimrc に使いたいパッケージを明示的に書く必要があるけど、:NeoBundleInstall とか :NeoBundleInstall! とかすれば、パッケージがない場合はインストール、パッケージがある場合は更新を検出して、アップデートしてくれる。

つまり、.vimrc ファイルと Vundle or NeoBundle だけあれば、新しい vim 環境を簡単に構築できるという利点がある。

あるパッケージを使いたい場合、.vimrc には次のように書けばいい。

NeoBundle 'thinca/vim-quickrun'

これは http://github.com/thinca/vim-quickrun パッケージを利用しますという宣言である。GitHub からソースコードを取ってくるということなのだが、URLではなく、ユーザ名とリポジトリを指定するのである(もちろん、URLも指定可)。

これを見てふと思った。GitHub はプラットフォームなのだと。

考えてみると、他のプログラミング言語のパッケージ管理システムもこの書き方と同じだ。

  • node.js: npm
  • Ruby: rubygems
  • etc…

他にもあるかもしれないけど、GitHub からパッケージのソースコードを取得するのが、当たり前のようになっている。GitHub はただのホスティングサービスの枠を超えて、developer の拠り所なのだ。

将来、新しいプログラミング言語が生まれると、その言語のパッケージ管理システムも開発されるだろう。そして、パッケージの取得先として当たり前のように GitHub が選ばれるのだと思う。

私はこういうサービスを作りたい。

コマンドラインでMIMEヘッダーをエンコード&デコードする方法

背景

MIME(マイム)とはインターネットの電子メールで様々なフォーマットを扱えるようにする規格のことです。MIMEによって電子メールにPDF、画像、動画など様々なドキュメントを添付することができます。

しかし、本来電子メールはUS-ASCIIしか使用できないため、メールのヘッダー部分にマルチバイト文字をそのまま入れることはできません。そのため、現在の電子メールでは以下のような形式でエンコードして、ヘッダーに格納しています。

=?charset?encoding?encoded-text=?=

そこで、このようなフォーマットの文字列をコマンドラインでエンコード、デコードする方法について書いていきます。

こういうときに、nkf コマンドが大活躍します。

なお、MIME の説明については端折るのであしからず。

インストール

mac の場合

文字エンコーディングの変換

MIMEの前に文字エンコーディングの変換について

  • nkf -w: UTF-8 に変換
  • nkf -e: EUC-JP に変換
  • nkf -s: Shift-JIS に変換
  • nkf -j: JIS(ISO-2022-JP) に変換

MIMEエンコード


MIME エンコードは「普通の文字列」を「=?charset?encoding?encoded-text=?=」のような形式の文字列に変換する操作のことです。

UTF8文字列 → MIME エンコード

「ほげほげ」は UTF8 文字列として、UTF8のままMIMEエンコードするとします。

解説

  • nkf -M: Base64 で MIMEエンコードする
  • nkf -MB: Base64 で MIMEエンコードする
    • encoded text だけ取り出す
  • nkf -MQ: quoted-printable で MIMEエンコードする
    • encoded text だけ取り出す

UTF8文字列 → MIME エンコード(JIS)

次に、出力のエンコーディングをJISでMIMEエンコードします。 JIS(ISO-2022-JP) は 7bit で表現される文字セットを使用しており、メールのエンコーディング形式として今でもよく使われています。

JIS への変換は、上で説明した通り、nkf -j オプションを加えるだけで簡単に実現出来ます。

MIMEデコード

MIME デコードは「=?charset?encoding?encoded-text=?=」のような形式の文字列を「普通の文字列」に変換する操作のことです。

解説

nkf -m: MIME デコードする

入力が「=?charset?encoding?encoded-text=?=」の形式の場合、-m オプションなしでも自動でMIMEデコードしてくれます。便利ですね!

入力が encoded-text だけの場合、明示的に -m オプションと content-transfer-encoding の形式を指定します。

まとめ

nkf コマンドを使って、MIMEエンコード&デコードしました。 簡単ですね!

参考図書

Open Hack Day でnode.jsのPassportを使ってYahoo!JAPANと楽天のOAuth認証モジュールを作った

概要

今週の土日に開催された Open Hack Day Japan という Hackathon イベントに参加して来ました。主催は Yahoo! JAPAN です。会社の同期と二人で参加しました。

紹介(Passport)

私たちがつくったものは node.js で OAuth 認証を超簡単に実装できるモジュールです。このモジュールは Passport という OAuth 認証モジュールのラッパーのような形で提供しています。

現在、Facebook, Twitter 等の数多くのウェブサービスのラッパーが提供されており、今回新たに Yahoo!JAPAN と楽天のラッパーを作成したという位置付けです。

成果物

使い方

yconnect を例に使い方を説明したいと思います。 リポジトリの examples/login/app.js で簡単に試せます。

1.アプリケーション登録

Yahoo!デベロッパーネットワーク からアプリケーション登録します。

  • アプリケーションID
  • シークレット

を取得します。ちゃんとコールバックURIも登録します。

2. インストール

リポジトリを git clone して、config.js というファイルを編集します。 先ほど取得したアプリケーションID、シークレット、コールバックURIを書いてください。 そして、npm install で依存モジュールをインストールします。

3. 起動

あとは express を起動するだけです。

これで http://localhost:3000 にアクセスすれば試すことができます。

今後

ただひとつ問題があります。yconnect でアクセストークンを取得するときに、client ID と client secret を Authorization ヘッダに付与して Basic 認証を行なうという仕様になっています。しかしながら、この認証方法は他の OAuth2.0 の実装と比較して特殊で、node の oauth モジュールがこの認証方式に対応していません。

そのため、passport-yj では npm の postinstall の時に oauth モジュールの oauth2.js にパッチを当てるという処置を暫定的に行なっています。

もちろん、このような処置はあまりイケていないので、oauth モジュールの作者に Pull Request を送って、エレガントにこの問題を解決したいと思います(続く…かも)。

2013/02/21 1:17
Pull Request 送りました!
Client Authentication via Basic Authorization, not body by gologo13 · Pull Request #126 · ciaranj/node-oauth


まとめ

  • Yahoo!JAPANと楽天向けの Passport を使った OAuth 認証モジュールの開発
  • GitHub で OSS として公開!
  • npm モジュールとして公開!

Langrichとhanasoのオンライン英会話の無料体験を終えて比較してみる

はじめに

最近、私の中で英語話したい欲求が膨らんできました。残念ながら、私の職場では全くといっていいほど英語を話す機会がありません。このままでは英語の能力が落ちる一方ですね。。

そこで、今話題(もう熟成気味?)のオンライン英会話の無料体験を試してみました。 試したサービスは

  1. Langrich
  2. hanaso

の2つです。

先に結論を書くと、 私のおすすめはhanasoです! それでは、感想を書いて行きたいと思います。

前提

同じ授業を受けたとしても、英語能力の違いにより、感想や印象も異なるはず。 ですので、参考までに私の現時点での英語レベルについて書いておきます。

まず、私のTOEICスコアは 2012 年時点で 845 点です。 スコアの傾向として、Reading Section が Listening Section よりも50〜100点上回っていることが多いです。 また、2011年に1ヶ月間フィリピンへの語学留学を経験しています。ですので、スピーキングに関してはある程度は自信があります。ただ、ネイティブ並の会話スピードには付いていけません。

先生の選び方

1対1のオンライン英会話サービスに共通していることですが、先生は基本的にこちらから指名します。 しかし、その時、誰を選ぶべきかという問題に直面すると思います。 どの先生が自分に合っているだろうか、どうしても迷ってしまいますよね。

あまり考えすぎても拉致があかないので、私は次の基準で先生を選びました。

  1. プロフィールページがしっかりしている
  2. 先生としての経験が少なくとも1年以上(2年以上あれば望ましい)

プロフィールがない先生は比較的新しい先生で、講師としての経験も十分ではなさそうなので、避けるのが無難ですね。 あとは、自分がレッスンを受けたい日に受講可能な先生を探すだけです。 基準を満たす講師が見つかれば、あとは「エイヤッ!」と思い切って、授業予約をしましょう。

Langrich

まず Langrich を試しました。

Langrich では25分のレッスンが2回まで無料で受講できます。 レッスンは以下の項目から好きなコースを選べます。

  1. 教科書によるレッスン
  2. 発音レッスン
  3. ウェブニュースを用いたレッスン(VOA,CNN,Business news)
  4. TED
  5. 面接形式のレッスン
  6. フリートーク

1st lesson: Johnmark 先生(♂)

最初のレッスンでは、ウェブニュースのコースを選択しました。 実際に使ったニュース→リンク

レッスンの流れは

  1. 自己紹介
  2. ニュースをパラグラフごとに読み上げる
  3. わからない単語や難しい表現について確認
  4. ニュースに書いてある事柄にについてどう思うか議論

のような感じでした。最初のレッスンだったせいか、緊張してすごくあっさり終わってしまいました。 授業は淡々と進んでいつの間にか、終わってしまった感じです 笑。あまり話せなかったのが残念です。

2nd leson: Jack 先生(♂)

次のレッスンでは、フリートークのコースを選びました。 前回の反省を生かして、いっぱい喋ろうと思いました。

感想としては、本当にひたすら喋りました(喋らされた)。 「英語をいっぱい喋った!」というやりきった感はあり、終わったあとは爽快でした。 話した内容は、私がフィリピン留学時に行った場所、食事などでした。 フィリピンという共通の話題があると、やはり会話が弾みますね。

ネット上では、あまりフリートークに走るなという意見もありますが、私は目的がしっかりしていればいいと思います。 私の場合、「英語をスラスラ話せるようになる」というのが目的です。 結局は場数しかないので、割りきってフリートークを選択する分には問題ないと思います。

hanaso

次は hanaso の無料体験を利用してみました。

hanaso も langrich と同様に2回まで無料でレッスンを受講できます。

コース内容は次の通りです。

  1. 英文法
  2. 英会話フレーズ
  3. 教科書(Side-by-side)を用いたレッスン
  4. ウェブニュースを用いたレッスン
  5. フリートーク

難易度は下に行くほど高くなります。

また、今回から iPhone をボイスレコーダーとして利用し、レッスンを記録していました。

1st lesson: Caroline 先生(♀)

ウェブニュースを用いたレッスンを選びました。 実際に使ったニュースは これ です。

レッスンの流れは

  1. ニュースをパラグラフごとに読み上げる
  2. わからない単語や難しい表現について確認
  3. ニュースに書いてある事柄にについてどう思うか議論

のような感じでした。

この教材は知らない単語もいくつか出てきて、やや難しい印象でした。 ただ、しっかり復習すればいい勉強になりそうです。 また、パラグラフを読み上げ終わったときに、「この発音はこう直したほうがいい」とか適宜アドバイスをくれました。

レッスン後には、Side-by-side のレベル4 が今のあなたにぴったりだとアドバイスもくれました。

2nd lesson: Meiji 先生(♀)

前回のアドバイス通り、Side-by-side4 を用いたレッスンを申し込んで見ました。 このコースは教科書を自分で用意する必要があります。 私はネット上で Side By Side 4 を見つけてしまったので、iPad でそれを開きながら受講することにしました 笑。

リンク

上のリンクを開いてもらえればわかるんですが、この教科書はある文法や表現(例えば、第1章は現在完了)を主語、目的語、時制などをいろいろ変えて、ひたすら音読していくという学習スタイルのものです。色んなバリエーションを学んで、音読しまくることで、その文法が血肉となって、見についていくということですね。音読は大切です。

ということで、このレッスンでは4ページぐらいを音読していました。レッスン内容は簡単でしたが、いっぱい音読できる点は良かったです。もちろん、発音が悪かった部分はちゃんと指摘してくれました。

最後に質問がないか聞かれたので、「このレッスンは私に合っていると思う?」と尋ねたところ、 この教科書をやりながら適度にフリートークをすればあなたの英語はもっとよくなるわと答えてくれました。

比較

1レッスン25分というのはあっという間でした。 それだけ、集中して楽しめたということでしょうか。

私なりの比較は次のとおりです。

  • langrich のいい点
    • 月額料金が 1,000 円ほど安い
    • TED で勉強ができる
  • hanaso のいい点
    • 先生の雰囲気が良くて、優しい
    • 発音が良いとかちゃんと褒めてくれる(モチベーションUP)
    • ウェブサイトの作りが良い
      • 好みの先生の予定が見やすい
      • レッスン前に、先生へのリクエストを伝えられる(ゆっくり話してほしい、とか)

さて、「langrich と hanaso どっちが良かった?」と聞かれたら、私は間違いなく hanaso と答えます。 決定的な理由はなんといっても先生が親身になって接してくれたことです。 hanaso の先生は、授業終わりには「今のあなたには〜が良いかもね」とかちゃんとアドバイスをしてくれます。 一方で、langrich の先生は淡々としていて、ただ私が英語を喋るのに付き合ってるだけという雰囲気がしてあまり居心地がいいものではありませんでした(私が先生の運が悪かっただけで、たまたまかもしれませんが…)。値段は langrich のほうが安いですが、1,000 円で安心が買えるなら、安いものですね。

みなさん、何かしらオンライン英会話に対して不安を抱いているからこそ、検索エンジンを使って検索して私のサイトまでたどり着いたのだと思います。 hanaso なら先生の雰囲気がいいので、私は自信を持って初心者の方にもおすすめ出来ます。

まとめ

ということで、hanaso をおすすめします!

参考

おすすめ書籍

どんどん話すための瞬間英作文トレーニング (CD BOOK)
森沢 洋介
ベレ出版
売り上げランキング: 202

コマンドラインからEvernoteを簡単に操作できる!Geeknoteでギークになろう。

はじめに

みなさん、Evernote 使ってますか?すごく便利ですよね。私は読み終わったウェブページ、メモ、写真など何でもEvernoteに放り込んでいます。デバイスを選ばないのも魅力的ですね。

でも、ブラウザで Evernote を開くとめちゃくちゃ重いですよね。ノートの数に比例して重くなるのでしょうか。また、WYSIWYG ライクなエディタも使い心地がイマイチです。 重いと使う気が失せますね。

そこでコマンドライン上で Evernote を操作できないかなーと思っちゃうのがギークってやつです。コマンドライン上なら好きなエディタで編集も出来ますね。それが探したら、ありました。

そう、

Geeknote

ならね。 オッサンなアイコンで一見ダサいですが、なかなかできるやつです。

Geeknote

Geeknote のインストール方法と使い方を紹介していきたいと思います。

インストール

Geeknote – how to install に書いてあるとおりですが、git clone して、geeknote.py を PATH が通っているディレクトリに置くだけです。

Ubuntu/Debian ユーザ用に deb パッケージも用意されていますが、若干古いのでこちらのほうがいいです。

使い方

ログイン

まずログインします。IDとパスワードを入力します。

設定

settings サブコマンドで色々設定ができるそうです。 まだ、editorしか設定項目が無いですが。

投稿

create サブコマンドでメモを投稿できます。 もちろんオプションで投稿するノートブック、タグも指定できます。

標準入力からの投稿もサポートしているようです。cool ですね!(でも時々失敗します)

   

応用として、makrdown 形式でファイルを書いたメモを HTML として投稿出来たりもします。

markdown 形式のファイルを HTML に変換するには、 ここ から Markdown.pl をダウンロードしてください。

閲覧、検索

ノートの閲覧は show サブコマンドを使うことで可能です。

使い方としては、show サブコマンドの引数に検索クエリを与え、検索結果の中から目的のノートを選びます。検索結果から目的のノートを選ぶには、先頭についている数字を入力します。

この検索はノートの本文ではなく、タイトルに対して行われます。

show サブコマンド自体では、全文検索はできませんが、find サブコマンドと組み合わせることで全文検索が可能となります。

編集

なんと編集もできます。edit サブコマンドを使えば。

note オプションで引数を指定すると、その引数を含んだタイトルのノートを検索してくれます。 UI としては geeknote show と同じですね。 ノートを選ぶと、geeknote settings –editor で指定したエディタが開きます(デフォルト:nano)。

その他

全ては紹介できませんが、他の機能として

  • 同期
  • ノートブックの一覧表示
  • ノートブックの作成
  • タグ一覧表示
  • タグの作成
  • タグのリネーム

があるそうです。 詳細は Geeknote – documentation をご覧ください。

まとめ

Geeknote について紹介しました。 ノートの検索、閲覧、投稿、編集、削除、さらに同期などひと通り必要な機能は備えているようです。

ただ、難点を一つ述べると、実行が遅いです。

それでも、CUI 派のあなたならコマンドラインから Evernote を操作できるという魅力を十分感じたはず。