書き置き。

ほぼ勉強の記録みたいなもんです。

オープンソースのメッセンジャープロジェクト Spika

MITライセンス

公式サイト

http://spikaapp.com/ja/

ソースコード

作者のブログ

ニュース系

はてなブログ(比較表) http://d.hatena.ne.jp/guide/plus

Marionette.js

経緯

もともと、Backbone.js をやった時に記述量が多くてつらい思いをしていたのと、Backbone.js の上に被せるライブラリがいくつかあるという話を見かけたことがあって、導入を検討してみたいと思っていた。

このブログ記事を読んで、Marionette.js の存在を知り、調べてみた。

https://twitter.com/tek_koc/status/420346715640569858

ググって見つけたのがこのブログ

このスライドを読んで、わかったような気になったところ。
Backbone.js を使っててどうやったら良いのかモヤモヤしていたところが、Marionette.js で少し解決できそうな気がした。
簡単なもの作ってみよう。

Macのドキュメント検索アプリ、Dash.app が便利

Dash.app

Dash.app は Mac で動く Developer 向けドキュメントを素早く検索するためのアプリ。
Docset を Download しておけばオフラインでも開けるので、インターネット環境が無いときや公式マニュアルサイトが障害時にも使うことができます。
対応言語/ライブラリの数もかなり多くて、メジャーなものはわりと揃っているように見えます。
頻繁にアップデートされていて今後も増えていくでしょう。
Dockset のバージョンアップもかなり対応早く、起動すると自動で Download 済みの Dockset が Update されるので、そこでライブラリ等のバージョンアップを知ることも多いです。

独自 Docset を追加する方法も公開されていて、非公開ライブラリを自分で追加することもできるようです。

価格

なんとこの便利なアプリ、アプリ自体は無料です。
但しデフォルトでは検索結果が表示されるまでに数秒待たされます。

アプリ内課金をすると、検索結果が一瞬で表示されるようになって仕事が捗るようになります。

※ だいぶ前に買った時の情報なので最新情報ではない可能性があります。

プラグイン

IntelliJ シリーズのアプリ(WebStorm や PhpStorm 等)で関数を選択して、[command + shift + d] で Dash.app で該当のページを開いてくれるプラグイン。 入れてみたらすごい便利す。

他にも Sublime Text、EmacsVim、TextMata、eclipse、AndroidStudio、などなど多くのアプリで連携できるみたいです。

道民のソウルフード 鮭のちゃんちゃん焼き

この記事は 道民部 Advent Calendar 2013 15日目 の記事です。

昨日は @irasally さんの [道民部][Advent Calendar] スーパーマーケットで北海道を知る(札幌 冬編) という記事でした。
北海道(札幌)のスーパーではどれも当たり前の光景ですね。素材ばかりなのに、見るだけでお腹が空いてきちゃいます。

水産コーナーには秋になると生の筋子と鮭がたくさん並びます。
どの家庭でもいくらの醤油漬けをつけます、という記事を書こうと思ったらすでに時期が終わっていたので、生鮭を使ったちゃんちゃん焼き のレシピをご紹介します。

数ある道民食のなかでも、野菜をたっぷり食べられてご飯のおかずになるので、イチオシです。 我が家では休日の夕食のほか、お弁当のメインおかずとしても活躍している一品です。

Untitled

用意するもの

生鮭も店頭に並ぶのは一年のうち秋の数週間と限られた期間です。
よく行くスーパーでは、半身で780円〜、 更に半分だと 600円程度〜 といった価格帯で売られています。

Untitled

北海道でとれた鮭でご紹介したかったのですが、時期を逃してしまったので、ノルウェー産の生アトランティックサーモン の切り身を買ってきてみました。 生鮭が手に入らなければ塩分少なめな鮭を用意すれば良いと思います。

Untitled

野菜はキャベツが定番で、今回は、キャベツ・ピーマン・しめじ を用意しました。
玉ねぎ、人参、なす、アスパラ、長ネギ など野菜炒めの要領で冷蔵庫にあるものなんでも入れてOKです。
さらに我が家では豚肉リクエストが強く、すこし豪華版となっています。

作り方

  1. 材料はすべて一口大に切っておく(鮭が切り身ではなく大きい場合はそのまま投入する場合もあります)
  2. バターを溶かして、鮭を皮のほうから両面の表面を焼きます
  3. 鮭の上に野菜・肉を乗せ、蓋をして蒸し焼きにする
  4. 合間に味噌だれをつくる
    • 味噌+みりん+砂糖
    • 甘さはお好みで、みりんで味噌をのばしてとろっとするくらいの感じ
  5. 野菜に日が通ったら4の味噌だれを入れて全体になじませる

たった5ステップで、おいしいちゃんちゃん焼きの完成です。

ポイント

野菜・肉を投入したあと、弱火にしてじっくり火を通してください。
火が強すぎると鮭が真っ黒焦げになってしまいます。 小さいお子様がいるご家庭、お弁当に入れる場合は 具材を少し小さめにすると良いです。

野菜の量にもよりますが、フライパンで作るなら深さのあるものが良いです。
ホットプレートで作って、大勢でわいわい食べるのもオススメです。
野外でジンギスカンをするときに、横にもう一台、ちゃんちゃん焼き というのも北海道らしい光景で良いですね。

ちゃんちゃん包み焼き

ちゃんちゃん包み焼き

Amazonで 「ちゃんちゃん包み焼き」 というものが売られていました。
一人分を作るならこうして包み焼きにするのも良さそうです。

つぎは?

さて、明日は @AT さんです。お楽しみに!

道内物鮭のちゃんちゃん焼きセット

道内物鮭のちゃんちゃん焼きセット

2013年度 LOCAL感謝賞 をいただきました

20131208_151330_1.jpg

LOCAL感謝賞 とは、北海道でITコミュニティー活動を支援する団体、一般社団法人LOCAL が毎年行っているもので、
北海道内において活発にコミュニティー活動をしている人々に「ありがとう」を言いたい というコンセプトで、2011年度から実施されています。

受賞理由:
PHP Matsuri 青年団団長として、初の札幌開催となった「PHP Matsuri 2013 in Sapporo」を成功に導いた。
母親業と両立しながら積極的に新しい技術への取り組み、勉強会の開催・参加を行っている。

自分は特別頑張っているといった意識はなかったので、受賞の話を聞いた時は大変驚きました。このように評価して頂いている方がいるということで、大変嬉しく思います。推薦して頂いた方、いつも協力してくれている家族、会社の皆様、PHP Matsuri 青年団と参加頂いた皆様、ありがとうございます!

受賞者/関係者が多く参加するということで、2013年道民部大忘年会 の中で、表彰式をしていただきました。

PHPでちょっとしたものを作るときに便利な軽量フレームワークと軽量ORM

この記事は PHP Advent Calendar 2013 8日目の担当記事です。
昨日は brtriver さんの "PHP Fatal error: Allowed memory size of xxx" で落ちる前にできること という記事でした。

はじめに

今日は、Slim という軽量フレームワークと Idiorm & Paris という 軽量ORM という軽軽コンビの紹介です。

composerがインストールされていない場合はこちらを参考に、インストールしておいて下さい。

サンプルコードの想定環境は

  • PHP5.3.0 以上
  • MySQL 5.*

です。

※ データベースはPostgreSQLSQLite等、PDOが対応していれば利用可能です。
※ Slim 2.3.*では mcrypt extension がなければcomposer経由でインストール出来ませんでしたが、2.4系でその制限はなくなっています。

Slim Framework

Slim は "Sinatra風" と呼ばれるマイクロフレームワークで、 MIT License で公開されています。
作者の Josh Lockhart (codeguy) さんは、PHP The Right Way. (日本語訳) の著者でもあります。

サンプル

<?php
$app = new \Slim\Slim();

$app->get('/id/:id', function ($id) use ($app) {
    $data = ORM::for_table('person')->find_one($id);
    $app->setData('data', $data);
    $app->render('detail.php');
});

$app->run();

どのな機能があるのかを把握したいという方は本家ドキュメントサイトを見るのが手っ取り早いです。
1ページにすべて凝縮されているので、これを眺めるだけでOK という手軽さが良いです。
ただしドキュメントは最新のバージョンに追従できてないので差分はgithubでコミット内容を確認しています。

Idiorm & Paris

BSD license ライセンスで公開されています。 PHP5.2.0以上、PDOに対応しています。

Idiorm がいわゆるORM部分で、さらにActive Record 的な機能を使えるようにしたものが Paris という構成になっています。
リポジトリやドキュメントもそれぞれ独立していて、Active Record が不要であれば Idiorm だけでも利用可能です。

find_one()、find_many() や save()、delete()、くらい覚えると結構戦えます。
"軽量"といっても、トランザクションや複数接続も使えます。

PSR-1 (日本語訳) で提唱されている camelCase記法のメソッド名にも対応していて、どちらでも使えます。
いまのところ、IDEにはデフォルトのスネークケース記法のほうが優しいようです。

<?php
// documented and default style
$person = ORM::for_table('person')->where('name', 'Fred Bloggs')->find_one();

// PSR-1 compliant style
$person = ORM::forTable('person')->where('name', 'Fred Bloggs')->findOne();

作者の Jamie Matthews j4mie さんは、Slim の CONTRIBUTORS として Slim のサイトにも掲載されていました。

サンプルコード

Slim と Idiorm を使ったサンプルコードをBitbucketに置きました。
これらの使い方がわかるように、というところを重視して、シンプルなCRUD操作をするだけのものにしました。 かわりに画面の見た目などは犠牲になっています。

使いドコロ

  • 数ページ程度の構成 + 複雑ではないDBアクセス(CRUD程度) のサイト・ツール
  • OAuth等の認証 + 外部サイトのAPIにアクセスしてデータを表示

を作るのに適しているのではないか、と思って使っています。

簡単なものだとフレームワークを使わずに素のPHPで作っても大丈夫、と思いがちですが、作り始めると意外必要になる処理が多くてうんざり なんて経験はありませんか?
そんな時にはこんな軽いフレームワークがあることを思い出してみてください。

これらを使って私はこのようなものを作りました。長くなってしまったので詳しくはまた今度紹介しようと思います。

  • Trello API からカードの情報を取り出して チャットやRedmine等にログをコピペするためのツール (Slim x Trello API)
  • スマートフォンアプリをアップロードしてブラウザ経由で端末にインストールするツール (Slim x Idiorm)
  • Backbone.js を勉強しながら作成中のサイトの サーバー側機能 (Slim x Idiorm x Facebook API x Backbone.js)

PHP Advent Calendar 2013、明日は nntsugu@github さんの PhalconPHPのお気に入りポイント のお話のようです。お楽しみに!

第31回 北海道開発オフ に参加した。

今日の開発オフの成果

今年3月のHOKKAIDOアイディアソン・ハッカソンで作り始めたプロジェクトの続きをオム子と引き続き開発している。

昨日MBAのSSDが空き容量不足になって、いらなさそうなvmを破棄したりしてたんだけど、間違って開発オフで使ってるプロジェクト用のを消してしまったらしい。 vagrant status したら not created って言われてしまった。

幸い、ChefのRecipeが残ってたので、ある程度、必要なパッケージインストール部分までは自動でできた。

残りのもうちょっと、chefのRecipeに残ってない変更点がいくつかあって、Recipeに追記すればいいんだけど、久しぶりすぎて書き方がわからない・・・。 そっとAnsibleディレクトリを掘って.yml を幾つか書いた。 Recipe化はまたあとで。

昼前くらいから実際にスマホでアクセスできるところにデプロイしたいよね、ってことでオム子がPaaS探し。Pagodabox にデプロイしてみることになった。

自分はというと、前回の開発オフで書き残したソース(コミットされてなかった部分)を整理してコミットしたくらい。

前回の開発オフの翌日から今朝まで、全力で別なプロジェクトをやってたので、頭が切り替わるのに時間がかかってしまった。 前回の修正内容を思い出して git add && commit するのは辛い。書いたその日にローカルコミットだけでもしておけばよかったと反省。

このプロジェクト、ユニットテストをひとつも書いてない…。 どこまで動いてるのか動いてないのかがわからなくて安心感が無いのが良くないね。

それにしてもデプロイ準備をできるくらいのところまで、ようやく来たのはよかった。 3月に作り始めてからここまで、長かったなー

自分たちで実際に地下鉄に乗ってサイコロふって遊べるまで、もう少し。
もうちょっと、がんばろう。