野菜不足な人へ! Meal MUJI(無印良品)でご飯を食べよう

今日も帰りに有楽町のMeal MUJIによって晩ご飯を食べて帰ってきました。
平日は、週に2〜3回はMeal MUJIによって晩ご飯を食べてるのですが、Meal MUJIの良さを伝えたいので定期的に記事にしようかと思います。
いただきます。「Café&Meal MUJI」の人気レシピ (ジョルニの本)
Meal MUJI

Meal MUJIの魅力、それは野菜もりもり

普段ちゃんと意識していないと、野菜を接種しなくなりがちです。しかも夕飯に脂っこいものを食べてしまうと、次の日胃もたれしたりしてしまって朝から胃腸薬飲むはめになったりするんですよね。
なので、私は「昼食は何でもオッケーだけど、夕飯は肉は控えめ!」って決めてます。
なので野菜を中心としたメニュー、特に季節の野菜がいただけるMeal MUJIに会社帰りに通っています。

メニューが豊富なので飽きない

定食屋に通っていると、意外と偏った料理ばかり食べてしまうんですよね。多分そういう人っているといると思うのですが、少なくとも私はその部類に当てはまります。
「あー、今日もまたこれで良いかなー」なんて考えるのめんどくさくなってしまうんですよね。
その点Meal MUJIだと、ショーケースから自分の食べたいものをチョイスしていくスタイルなので、「昨日はこれ食べたから今日はこっちにしよ」といった感じで、毎回違うものを組み合わせて食べられるのです。
Meal MUJIのメニュー

トータルで考えると値段もお手頃

Meal MUJIで食べる人は大抵デリプレートで頼むのですが、単品購入、またはテイクアウトも可能です。
デリプレートですが「選べるデリ3品」と「選べるデリ4品」があります。(最近「選べるデリ5品」っていうのも増えたんですが、食べきれないんじゃないか・・・って思ったら皆さんファミリーで頼んでるようですね。)
選べる4品だと930円で、普通に考えると割高にもとれるのですが、味の質や栄養バランスを考えると自分で作るより全然お得です。
何より、バランスのとれた食事をこの価格で提供する店は無いので、利用しない手は無いですよね。
それに、Meal MUJIはカフェとしても利用出来るので、有楽町に来たけどノマドできない!なんて人にもオススメですよ。是非利用してみてください。

暑い夏にオススメ!フレーバーコーヒーで作る アイスコーヒーキューブ

普段カフェでしかコーヒーを飲まないんですが、たまには家で〜なんて思ってフレーバーコーヒーを買ってみました。
もちろん作るのはアイスコーヒーなんですが、どうせならちょっと面白くしてみようと思って、アイスコーヒーキューブを作ってみました。

お手軽簡単!アイスコーヒーキューブの作り方

1. 市販のフレーバーコーヒーを用意します。私はアイスミルクと相性の良さそうな、キャラメルフレーバーの物を買いました。もちろんスターバックスのやつです。
Starbucks スターバックス VIA キャラメルコーヒー6パック 並行輸入品
2. フレーバーコーヒーに水を入れます。濃いめにするので、普段コーヒーを作る分量より少ない8割くらいが目安です。スターバックスのフレーバーコーヒーは粉なので水で作れますが、その他の場合は適宜作ってください。
3. 次にお好みの製氷器にコーヒーを入れて冷凍します。私は小さめのキューブのやつで作りましたが、多分大きめの方が見た目にも良いでしょう。
4. 製氷器で3〜4時間冷やすとアイスコーヒーキューブの完成です!

フレーバーだから甘くない、でも甘い!

caramel_milk
キャラメルの甘い香りで錯覚してしまうのですが、アイスキューブ自体は普通のコーヒーなので甘さ控えめです。でもキャラメルフレーバーのおかげでとても甘く感じます。
次は豆乳に入れて、アイスソイラテにしてみようかな。

スターバックスカードを登録してたら無料ドリンク券を貰った

スターバックスの先日のキャンペーンで、無料ドリンク券を沢山貰ったのですが、キャンペーン終了直後に無料ドリンク券が送られてきました!
free_drink_ticket
おそらくスターバックスカードを登録しているユーザーのみかと思いますが、こんなメールが来ました。

[Starbucks] 日ごろの感謝をこめて – 特別なお客様へ
いつもスターバックスをご利用いただき、ありがとうございます。
こちらのご案内は、スターバックス カードをご利用いただき、日ごろ特にご愛顧いただいているお客様へお送りしております。
スターバックスから感謝の気持ちをこめて、ドリンクチケットをお届けいたします。
暑い日々が続いておりますが、お気に入りの1杯で、爽やかなひと時をお楽しみいただけますように。
▼チケット名
Surprise & Delight Ticket 0717
▼ご利用期間
2013年7月17日(水)~8月31日(土)

キャンペーン中に結構スタバカードにチャージしてたので、それでもらえたんでしょうかね?どちらにしても嬉しいサプライズです!ありがとうスターバックス!
これで無料ドリンク券が7枚になりました!後1ヶ月ちょいで全部使い切れるかな・・・。

スターバックスのカスタマイズメニュー トリプルオレンジなどの夏オススメカスタマイズを考えてみた

今年の夏は例年より暑く感じるので、ついスタバへ行ってしまいがち。
最近はほぼ毎日通っているので、いろいろカスタマイズして楽しんでいます。
そこで、この夏におすすめなカスタマイズメニューを書いてみます。

 

アイス バニラ アメリカーノ

カフェ アメリカーノ
アイスアメリカーノにバニラシロップを追加した簡単なカスタマイズ。
暑くて汗をかいたときは、とにかくアイスアメリカーノが飲みたくなりますね。
バニラシロップを追加する事によって苦みが消えて、程よい甘さが足されます。
このカスタマイズはスタバの店員さんに教えてもらいました。

マンゴーパッションティー フラペチーノ ノンティー with ホイップクリーム

マンゴーパッションティー フラペチーノ
マンゴーパッションティー フラペチーノのカスタマイズです。
普通に飲んでも爽やかで美味しいのですが、ノンティー(パッションティー無し)にする事によってマンゴーの甘酸っぱさが際立ちます。
さらに、ホイップクリームを追加することによってとても濃厚になるのです!

フルリーフ ソイ チャイティーラテ オールミルク ノンシロップ

チャイティーラテ
チャイティーラテのカスタマイズ。
スタバのミルクは結構甘く感じて、自分は甘さ控えめにしたいのでよく豆乳のカスタマイズをします。
チャイティーラテも豆乳にする事で甘さが控えめになりますね。
そしてオールミルクにすることでとっても濃厚になります。
フルリーフは普通のチャイよりスパイシーになります。
このメニューはホットなのですが、普段オフィスが冷房で寒いので、体が冷えたときはこのカスタマイズがオススメです。
猛暑な日にこれを頼むと、店員さんに「今日はアイスじゃないんですねー」なんて心配をされてしまいます。

トリプルオレンジ ホワイトモカシロップ

トリプルオレンジ
今夏出てきたトリプルオレンジのカスタマイズ。
トリプルオレンジはカスタマイズしなくてもすっぱくてさわやかで、暑い日には良いのですが、ちょっとチャレンジをしてホワイトモカシロップを追加。
こうすると、味はマンゴーみたいな、でも後味が乳酸飲料みたいな面白い味になります。
どれもかなり自分の好みが入ってますが、これに限らずいろんなカスタマイズをチャレンジしてみてください。
スターバックス VIA リフレッシャーズ

個人事業主の交通費計算はGTimeReportとGoogleカレンダーを使うとあとあと便利

交通費の計算って以外と面倒

フリーランスで仕事をしていると、仕事で使った毎月の交通費を計算するのって面倒ですよね。
普段使っているGoogleカレンダーなどにあるスケジュールとは別に、別のExcelなどに記入しておいたりします。
あとで見てみると、スケジュール表と交通費表を行ったり来たりしてしまいます。

じゃあGoogleカレンダーにまとめておこう

できれば、どこからどこへ移動したとか、どういう経路だったとかをスケジュールにまとめておきたいですよね。
というわけで、移動などのログもGoogleカレンダーにスケジュールとしてまとめておきましょう。
まとめるのは簡単だけど、結局またあとで集計しなくちゃならないじゃないか!
と思いますが、それはGTimeReportで解決できます。

GTimeReportでExcelデータで出力する

・GTimeReport
http://www.gtimereport.com/
このGTimeReportというサービスは、Googleカレンダーと連携することにより、
自分が使っているカレンダーから時系列でExcel形式でアウトプットしてくれます。
gtimereport
こうすることによって、フィルターなどで移動のみを抽出しやすくなります。
もちろんどういう経路を使ったか詳細を書いておかなければいけませんが、Googleカレンダーで管理できるのはかなり便利です。
GTimeReportを是非使いこなしてみてください。
理想を言うとSuicaなどと連動できればいいんですけどね。まぁ無理ですね。

フリーランス・ノマドワーカーなら、これだけは持ち歩きたい必須アイテム

フリーランス・ノマドワーカーの必須アイテム

今年は千年猛暑なんて言われていますが、毎年この時期は
「自宅でこもって作業するより、カフェでアイスコーヒーでも飲みながらゆったり仕事したい」
なんて事を思い、外で作業することが多いです。
そこで普段私が仕事で持ち歩いている、必要最低限必須アイテムをピックアップしてみました。
普段私は大きなものを持ち歩きたくないので、そのへんも考慮しつつ挙げてみます。
a0002_010996

ノートPC

もう当たり前過ぎますが、コーディング作業をするならノートPCが必須です。
私はMacBook Airの11インチを普段持ち歩いています。
13インチじゃなくて11インチな理由は、小型のバックでも入る点と軽さです。
重量の差は300g程度ですが、やはり体感で違いが出ると思います。
他の選択肢としてはSony VAIOシリーズなどスマートな端末であると、持ち運びしやすいですね。

タブレット

今日はコーディング作業したくない!って日にMacBookの代わりにiPad mini 16GB Wi-Fiモデルを持ち歩いてます。
MacBookよりも断然軽いし、なによりバッテリー持ちが良いです。
メールやSkypeチャットメインの作業日はこれだけあれば、どこでも作業できますね。
また、最近はビジネス書や参考書も電子書籍化しているので、メールのやり取りの合間によく読んでいます。
他のタブレットだと、Google Nexus 7も持っていてどちらでも良いなとは思いますが、
文章を読むときの持ちやすさの点でiPad miniの方が優れています。

スマホ

スマートフォンは、作業自体には必要無いですが、ゲームやLINEなどで暇つぶししています。
あとは移動中のメールチェックをするくらいでしょうか。
Mailboxなどは片手で処理できるので、その点ではスマホの方が便利かも。

モバイルルーター

外で作業する時は最も重要なのが、インターネット接続ですね。
ネットできないと仕事できませんので・・・。
でも公衆無線LANサービスなどもあるので、そちらを利用する方法もあります。
ですが、公衆無線LANは利用できる場所が限定的なので、やはりモバイルルーターは必須です。
私はWi-MAXを使っていますが、イーモバイルでも全然良いと思います。
Wi-MAXを使ってる理由は、Wi2 300が無料で使えるので副回線として利用できる点です。
WiMAXルーター1円、送料0円。月額3853.5円

モバイルバッテリー

そして意外と重要なのがモバイルバッテリーです。
タブレットやモバイルルーターを持ち歩いていると、バッテリーを気にしながら使わなきゃいけないので、
モバイルバッテリーはやはり持っていた方が安全ですね。
ちなみに私は、cheero Power Plus 2を愛用しています。
マルチデバイス対応 cheero Power Plus 2 10400mAh (シルバー) 大容量モバイルバッテリー
395gと若干重いのですが、10400mAhと大容量なので、タブレット・スマホ・モバイルルータすべてが
バッテリー切れても、充電できてしまうくらいパワフルです。
理想は、何も持たずにすべての事がまかなえてしまえば良いのですが、そういう日は来るのでしょうか。

スターバックスの無料ドリンク券を貰ったら何を注文する?

無料ドリンク券で何頼もう?

6月5日から始まったスターバックスの無料ドリンク券ですが、始まって1ヶ月ですが、5枚分溜まりました。
starbuckticket3
店舗で¥15,000分チャージ、 ¥10,000分はオートチャージで計5枚分です。
そろそろ1枚使おうかなと考えたのだけど、何を注文したらお得なのかちょっと考えてみた。
1,000分までなら無料でカスタマイズ可能なので出来る限り色々カスタマイズしたいよね、うん。

どうせ注文するなら今夏限定のストロベリー チーズケーキ フラペチーノでしょう。

というわけで今夏限定の「ストロベリー チーズケーキ フラペチーノ」をベースにカスタマイズを考えてみた。
「ストロベリー チーズケーキ フラペチーノ」
Venti ¥670
豆乳 +¥50
チョコレートチップ +¥50
ショット追加 +¥50
エキストラホイップ 無料
チョコレートソース 無料
シロップ +¥50
合計 ¥870

うーん、これだけ盛っても¥870分なんですねぇ。
シロップはいくつか種類あるので「1種類を3回分」とかできればギリギリ¥970に収まるかなぁ。
とりあえずチケット使うときは、このカスタマイズで注文してみたいと思います。

PHPでXML-RPCを使ってWordPressに画像を含めた記事を投稿する方法 〜 その2

前回BlogIDを取るところまでやったので、その続きです。

画像をWordPressへアップロードする

XML-RPC APIで、ローカルにある画像をサーバへ送信します。
とりあえず送信してURL取るところまでのコードです。

$imageFile = 'hoge.png';
$imagePath = '/images/' . $imageFile;
$image = file_get_contents($imagePath);
$extension = pathinfo($imagePath, PATHINFO_EXTENSION);
$file = array(
    'bits' => new XML_RPC_Value($image, 'base64'),
    'name' => new XML_RPC_Value($imageFile, 'string'),
    'type' => new XML_RPC_Value('image/' .$extension, 'string'),
);
$wpFile = new XML_RPC_Value($file, 'struct');
// ファイルのアップロード
$message = new XML_RPC_Message(
    'metaWeblog.newMediaObject',
    array($blogId, $wpUserName, $wpPassword, $wpFile)
);
$wpResult = $cli->send($message);
if (!$wpResult) exit('Could not connect to the server.');
if( $wpResult->faultCode() ) exit($wpResult->faultString());
$resp = XML_RPC_decode($wpResult->value());
$uploadImageUrl = $resp['url']; //アップロードしたファイルのPath

ではコードを見ていきます。

【構造体データを作る】


XML_RPC_Message
でサーバへデータを渡すために、XML_RPC_Valueで構造体データを作ります。
blogger.getUsersBlogsでは配列でデータを渡しましたが、今回は連想配列になっていますね。
これは、XML_RPCの構造体データを作る場合は、連想配列にしなくてはいけないようです。
作成した連想配列を更に「new XML_RPC_Value($file, ‘struct’)」として構造体データにしています。
また、bitsデータの第2引数にbase64を取っていますが、これを指定するとBase64エンコードが透過的におこなわれます。

$file = array(
    'name' => new XML_RPC_Value($imageFile, 'string'),
    'bits' => new XML_RPC_Value($image, 'base64'),
    'type' => new XML_RPC_Value('image/' .$extension, 'string'),
);
$wpFile = new XML_RPC_Value($file, 'struct');

それと上記補足ですが、サーバへアップロードするだけなら、typeは必要無いですが、これが無い場合メディアの一覧にサムネイルが表示され無かったので追加しています。

【画像をアップロード(転送)】

BlogIDを取得した時と同様、XML_RPC_Messageでリクエストを作り、XML_RPC_clientsendメソッドで送信します。
また、画像の転送にはmetaWeblogAPInewMediaObjectメソッドを使います。

$message = new XML_RPC_Message(
    'metaWeblog.newMediaObject',
    array($blogId, $wpUserName, $wpPassword, $wpFile)
);
$wpResult = $cli->send($message);

【アップロードした画像のURLを取得】

画像を転送したら、これもBlogID取得時と同様に、レスポンスをXML_RPC_decodeで変換し、URLを取得します。

$resp = XML_RPC_decode($wpResult->value());
$uploadImageUrl = $resp['url']; //アップロードしたファイルのPath

WordPressへ記事を投稿する

最後に先ほどアップロードした画像を新しい記事に載せて投稿します。
以下コードとなります。

$title = 'XML-RPC テスト'; //タイトルを設定
$categories = array( //複数カテゴリを設定
    new XML_RPC_Value('カテゴリ1', 'string'),
    new XML_RPC_Value('カテゴリ2', 'string')
);
$description = <<< EOF
<p>Test Post</p>
<img src="{$uploadImageUrl}">
EOF;
$wpContent = new XML_RPC_Value(
    array(
        'title' => new XML_RPC_Value($title, 'string'),
        'categories' => new XML_RPC_Value($categories, 'array'),
        'description' => new XML_RPC_Value($description, 'string'),
        'dateCreated' => new XML_RPC_Value(time(), 'dateTime.iso8601')
    ),
    'struct'
);
$publish = new XML_RPC_Value(0, 'boolean'); // 0だと下書き状態でPOST
// 新しい記事の投稿
$wpMessage = new XML_RPC_Message('metaWeblog.newPost',
    array($blogId, $wpUserName, $wpPassword, $wpContent, $publish)
);
$wpResult = $cli->send($wpMessage);
if (!$wpResult) exit('Could not connect to the server.');
if ($wpResult->faultCode()) exit($wpResult->faultString());
$postId = XML_RPC_decode($wpResult->value()); // 必要であれば戻り値のPostIDを保存

コードを見ていきます。

【投稿データを作る】

記事に必要なデータを、XML_RPC_Valueで作ります。
今回作成する記事はタイトル、本文、カテゴリ、投稿日時のみですが他にも、descriptionmt_keywords(タグ)、custom_fields(カスタムフィールド)、wp_slug(スラッグ)などを設定できるようです。

$wpContent = new XML_RPC_Value(
    array(
        'title' =&gt; new XML_RPC_Value($title, 'string'),
        'categories' =&gt; new XML_RPC_Value($categories, 'array'),
        'description' =&gt; new XML_RPC_Value($description, 'string'),
        'dateCreated' =&gt; new XML_RPC_Value(time(), 'dateTime.iso8601')
    ),
    'struct'
);

【記事を下書き状態で投稿】

記事データを作ったので、次は投稿を行うのですが、このまま投稿すると公開状態で投稿されます。
なので、投稿を一度確認したいので、下書き状態で保存することにします。
XML_RPC_Messageで投稿データを配列で渡していますが、配列データの5番目の配列($publish)がステータスとなっています。
これは「$publish = new XML_RPC_Value(0, ‘boolean’);」でfaluse(0)をXML_RPCデータでセットしています。

$publish = new XML_RPC_Value(0, 'boolean'); // 0だと下書き状態でPOST
// 新しい記事の投稿
$wpMessage = new XML_RPC_Message('metaWeblog.newPost',
    array($blogId, $wpUserName, $wpPassword, $wpContent, $publish)
);
$wpResult = $cli->send($wpMessage);

【投稿したPostIDを取得】

sendメソッドで投稿完了なのですが、ローカルデータと投稿したデータを紐付けたい場合があるので、一応PostIDを取っておきます。

$postId = XML_RPC_decode($wpResult->value()); // 必要であれば戻り値のPostIDを保存

簡単にWordPressへ投稿できましたが、そもそものXML-RPCへの理解が乏しかったので、PEARライブラリのドキュメントを良く読まないとなーといった感じでした。

PHPでXML-RPCを使ってWordPressに画像を含めた記事を投稿する方法 〜 その1

WordPressに外部サーバなどから投稿できないかな?と思い、「そういえばXML-RPC APIがあったなぁ」なんと事を思い出したので、少し調べて見ました。
XML-RPCの仕様については下記参照
XML-RPC 仕様書
今回はPHPのPEARライブラリを使ってみます。
まずはPEARのXML_RPCパッケージをインストールします。

pear install XML_RPC

詳しい使い方はXML_RPCのドキュメントを見てください。

BlogIDを取得する

では実際にコードを書いていきたいと思います。
まず記事を投稿する前に、投稿したいWordpressのBlogIDを取得します。

<?php
require_once('XML/RPC.php');
$hostName = 'wp.example.com';
$xmlrpcPath = '/xmlrpc.php';
$appKey = '任意文字列(空で良い)';
$user = 'ユーザー名';
$passwd ='パスワード';
$wpAppKey = new XML_RPC_Value($appKey, 'string');
$wpUserName = new XML_RPC_Value( $user, 'string');
$wpPassword = new XML_RPC_Value( $passwd, 'string');
$message = new XML_RPC_Message(
    'blogger.getUsersBlogs',
    array($wpAppKey, $wpUserName, $wpPassword)
);
$cli = new XML_RPC_client($xmlrpcPath, $hostName, 80);
$wpResult = $cli->send($message);
// 戻り値0はI/Oエラー
if (!$wpResult) exit('I/O Error. '.$cli->errstring);
// faultCode(),戻り値0以外は失敗
if ($wpResult->faultCode()) exit($wpResult->faultString());
$blogs = XML_RPC_decode($wpResult->value());
$blogId = new XML_RPC_Value($blogs[0]['blogid'], 'string');

コード内容を説明しておきますね、若干コードが前後します。

【サーバに送信するリクエストの作成】

まずWordPressに接続するため、XML_RPC_Messageインスタンスを作ります。

$message = new XML_RPC_Message(
    'blogger.getUsersBlogs',
    array($wpAppKey, $wpUserName, $wpPassword)
);

XML_RPC_Messageはサーバに起動したいメソッドとパラメータを送信し、戻り値としてXML_RPC_Responseを受け取ります。
今はBlogIDが欲しいのでBlogger APIgetUsersBlogsメソッドを設定します。
第2引数には、接続に必要なユーザー情報を配列で渡していますが、これは予めXML_RPC_Valueメソッドで作成します。

$wpAppKey = new XML_RPC_Value($appKey, 'string');
$wpUserName = new XML_RPC_Value( $user, 'string');
$wpPassword = new XML_RPC_Value( $passwd, 'string');

先頭のappkeyBlogger APIで利用するもののようですが、WordPressでは必要無いので任意の文字列または空で良いみたいです。
XML_RPC_Valueの第2引数にはXML_RPCの型を入れます。

【サーバへリクエストを送信する】

先ほど作成したXML_RPC_Messageインスタンスを、XML_RPC_clientsendメソッドに渡して、サーバへ送信します。

$wpResult = $cli->send($message);

【エラー確認】

sendメソッドは戻り値としてXML_RPC_Responseを返しますが、戻り値0の場合はI/Oエラーです。

// 戻り値0はI/Oエラー
if (!$wpResult) exit('I/O Error. '.$cli->errstring);

次に、faultCodeメソッドで判定します。0以外の戻り値は失敗となります。

// faultCode(),戻り値0以外は失敗
if ($wpResult->faultCode()) exit($wpResult->faultString());

【取得したデータをPHPデータ型に変換】

valueメソッドでサーバから返されたXML_RPCオブジェクトを受け取り、さらにXML_RPC_decodeでPHPのネイティブデータ型に変換します。
逆に、PHPのネイティブデータ型をXML_RPCオブジェクト型に変換する場合は、XML_RPC_encodeを使用します。

$blogs = XML_RPC_decode($wpResult->value());
$blogId = new XML_RPC_Value($blogs[0]['blogid'], 'string');

これで変換されたデータからBlogIDを取得できますが、このあとの投稿時に利用するので、XML_RPC_Valueでカプセル化しておきます。
ちょっと前置きが長くなったので、続きはその2に書きます。