読者です 読者をやめる 読者になる 読者になる

カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

マグロをやまほど堪能できる中野「マグロマート」に行ってきた

前から気になっていた中野にある「マグロマート」に行ってきました。 その名の通り、マグロをひたすら食べられるお店です。

写真とともに紹介していきます。

入り口はこんな感じ。中野駅からはサンモールの商店街を通り抜け、10分ちょっとで着きます。 サンモールの雰囲気もいいので、是非そこを通り抜けてください。 f:id:masudaK:20160707200829j:plain

入ったら、こんな雰囲気。 f:id:masudaK:20160707200848j:plain

メニュー1 f:id:masudaK:20160707200931j:plain

メニュー2 f:id:masudaK:20160707201439j:plain

酒メニュー。もちろん、これ以外にもソフトドリンクやワイン、ビールなどがあります。 f:id:masudaK:20160707201246j:plain

お通し。もうここからうまい。 f:id:masudaK:20160707201845j:plain

ポテサラ。ちょっとだけ生臭いかな。 f:id:masudaK:20160707202810j:plain

マグロマート盛。筋が多めの部位は焼いたほうがいいと薦められる。 f:id:masudaK:20160710212644j:plain

ホホ焼いてみた。 f:id:masudaK:20160707203209j:plain

火を通す。 f:id:masudaK:20160707203213j:plain

あぶりという、こちらもオススメのメニュー。 f:id:masudaK:20160707204104j:plain

こちらも火を通す。 f:id:masudaK:20160707204413j:plain

酒も進む。 f:id:masudaK:20160707205552j:plain

本マグロ中落ちまるごと出てくる。これでも小さいサイズらしい。 f:id:masudaK:20160707205659j:plain

スプーンで掘る。 f:id:masudaK:20160707205800j:plain

掘る。 f:id:masudaK:20160707205801j:plain

という感じで、やまほどマグロを堪能した一日でした。飽きるレベルでマグロを食えます。

扉開けて帰ろうとすると、地面にマグロが。ほんとマグロ尽くしでした。 f:id:masudaK:20160707222828j:plain

他にもいくつかおつまみ頼みましたが、すぐお腹いっぱいになりますよ!

終わりに

マグロをあれだけ堪能することがないので、後半飽きもきてましたが、それでも面白いですね。

好きなだけ食えますし、スプーンで掘ったりとか色々楽しめますので、是非行ってみてください!ではでは!

twigで配列のデバッグをしたい

dump - Documentation - Twig - The flexible, fast, and secure PHP template engine

にあるように、twigでdebug使えれば話早いのだけれど、フレームワーク使っていて奥深いところいじらないといけないとか、バージョンが古すぎて、debug動かないとかいう場合。

そういう場合は、配列をデバッグしにくく、forで値を表示しようにもうまく表示されず、苦しみがちです。 (もちろんできるなら、悩まない)

そういうときにどうするかという話。

簡潔に言えば、そういうときはjson_encode使いましょう。

json_encode - Documentation - Twig - The flexible, fast, and secure PHP template engine

debugと同じように配列の中身を展開できるので、デバッグしやすくなります。

{{ data|json_encode() }}

ちょっとした工夫ではあるのですが、知ってるのと知らないのでは全然違うので、覚えましょう。

インフラエンジニアがアプリエンジニアに転身するにはこの3冊を勉強すれば十分だ

この記事全体的に、インフラエンジニアはコード書く頻度が少ないという立場に立って書いてますが、もちろんめちゃくちゃコード書いてる人はいるので、誰にでも当てはまる記事ではありません。

ただ、過去の経験から言って、コードを書く頻度が少ない人が多いイメージですので、そういった方を対象に書いてます。ご了承ください。


現在はサーバサイドのアプリエンジニアとして働いていますが、1年ぐらい前まではインフラエンジニアをやってました。

なので、インフラエンジニアをやっていた頃は、コード書く機会が少ないですし、書いてもそこまでしっかりとしたレビューを受けるわけでもなく、体系的に学ぶということがあまり多くありませんでした。

そのため、可能な範囲で独学しました。その際良かった本がいくつかありますので、是非読んでみてください。

基礎から言語仕様を把握するには

安定のパーフェクトシリーズです。言語ごとに多少の違いはあるものの、基本的な構文から分かりやすく説明してあります。

勉強したい言語に応じて1冊選ぶと良いでしょう。

言語仕様の深い部分まで理解する必要はありませんが、どういう書き方をするかは最低限理解しないと話は始まらないので、読んでおきましょう。

オブジェクト志向を学ぶには

基本的にちゃんとした会社であれば、オブジェクト志向に基づいてコードが書かれているかと思います。 そのため、オブジェクト志向を学ぶ必要があると思っていて、どうやって責務を分けるかを理解しなければ、全く何も書けないということになりかねません。

そういった点でこの本は分かりやすく、Javaと言えども、どの言語でも通用する優しさで描かれていると思います。

是非読んでみてください。

綺麗なコードを書くには

どのような点に工夫して書けばよいか、とても細かく描かれています。

レビューする人が読みやすいコードってどういうのか分かりますか?

実際書いてると忘れてしまうのですが、そういうときでも見直して、勉強し直すと新たな発見がある本です。オススメです。

終わりに

プログラミングは日々勉強ですので、ここで挙げた本を読んでも、完璧なコードを書くことは不可能でしょう。

しかしながら、まずアプリエンジニアとしても通用する最低限のコードを書く上では基礎は押さえられると思います。

逆に言えば、これらの本で描かれた基本的な構文や、オブジェクト志向を使えないとなると、レビューも通らないし、もしかしたら人のコードも読めないかもしれません。

そういった意味では楽な道ではありませんが、キャリアの幅を広げるためにも、コードを書くのは大事ですので、応援しております。お互い頑張りましょう!ではでは!

facebook-php-ads-sdkを使って、Instagramに対応したクリエイティブと広告セットを作る

プログラミング-PHP プログラミング

Bussiness Managerなどで、Instagramアカウントと、対象アプリの連携はしといてください。

まず、InstagramアカウントのIDが必要なので、それを把握する。

Graph API Explorerにアクセス developers.facebook.com

Get Tokenで、 Get User Access Token をえらび、

ads_management ads_read にチェックを入れる

以下のフォーマットに従い、値を埋めて、リクエストURLをつくる。

GET -> <API_VERSION>/<BUSINESS_ID>/instagram_accounts

そうすると、まずIDがわかる。

その上で、 developers.facebook.com に載ってるサンプルコードを参考にクリエイティブを作る。

use FacebookAds\Object\AdCreative;
use FacebookAds\Object\ObjectStory\LinkData;
use FacebookAds\Object\Fields\ObjectStory\LinkDataFields;
use FacebookAds\Object\ObjectStorySpec;
use FacebookAds\Object\Fields\ObjectStorySpecFields;
use FacebookAds\Object\Fields\AdCreativeFields;

$link_data = new LinkData();
$link_data->setData(array(
  LinkDataFields::IMAGE_CROPS => array(
    '100x100'=> array(array(200,90),array(900,790)), 
    '191x100'=> array(array(0,200),array(1146,800))
  );
  LinkDataFields::MESSAGE => 'Great looking SXT handbags in store. #prettybag',
  LinkDataFields::LINK => 'http://example.com',
  LinkDataFields::IMAGE_HASH => '<IMAGE_HASH>',
  LinkDataFields::CALL_TO_ACTION => array(
    'type' => 'LEARN_MORE',
    'value' =>array(
      'link' => 'http://example.com',
    )
  ),
));

$object_story_spec = new ObjectStorySpec();
$object_story_spec->setData(array(
  ObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
  ObjectStorySpecFields::INSTAGRAM_ACTOR_ID => <IG_ACCOUNT_FBID>,
  ObjectStorySpecFields::LINK_DATA => $link_data,
));

$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');

$creative->setData(array(
  AdCreativeFields::NAME => 'Instagram only creative',
  AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
));

$creative->create();

以下の箇所が調べたIDになる。

ObjectStorySpecFields::INSTAGRAM_ACTOR_ID => <IG_ACCOUNT_FBID>,

もしここでIDを指定しない場合は、広告のリンク先がInstagramアカウントではなく、Facebook Pageになる。 どちらにしたいかは運用方針次第なので、決める。Instagramアカウントにしたいなら、IDの指定が必要。

ちなみに、Adsetはこんなかんじ。 developers.facebook.com

use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Values\PageTypes;

$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
  AdSetFields::NAME => 'Instagram Adset',
  AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::LINK_CLICKS,
  AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
  AdSetFields::BID_AMOUNT => 2,
  AdSetFields::DAILY_BUDGET => 1000,
  AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
  AdSetFields::TARGETING => (new Targeting())->setData(array(
    TargetingFields::GEO_LOCATIONS => array(
      'countries' => array('US'),
    ),
    TargetingFields::USER_OS => array('iOS'),
    TargetingFields::PAGE_TYPES => array(PageTypes::INSTAGRAM_STREAM),
  )),
));

$adset->create();
TargetingFields::PAGE_TYPES => array(PageTypes::INSTAGRAM_STREAM),

が必要になる。

あとはいつもどおりAdを作れば完了。

こちらもどうぞ

blog.masudak.net blog.masudak.net

心震えた!涙ぐみながら語る植松努のTED講演を君は見ただろうか。

レビュー レビュー-映像

「どうせ無理」という言葉をなくしたいと訴えかけ、200万再生を超える素敵な講演があります。

あなたの子どものときの夢はなんですか?

あなたは今でも夢を持ち続けながら、生きてますか?

大人になるにつれて、人は「そんなの無理に決まってるんじゃないか」「何を言ってるんだ」「いいから、目の前のことをやりなさい」と言われ、夢をなくしていきます。

あなたは大人になった今でも、夢を持ち続け、日々頑張っているでしょうか。


Hope invites | Tsutomu Uematsu | TEDxSapporo

この映像に出演している植松努氏は、周りの言葉に振り回されずそのように夢を持ち続けることの大切さを訴えるのでした。

彼は、株式会社植松電機の社長で、10数名の従業員を抱える経営者です。

現在は成功し、順風な生活をしているように見えますが、その成功の影には幼い頃に言われた、「どうせ無理」というマイナスな言葉の影響があったのでした。

祖父の影響で本が好きになった植松少年は、宇宙に関する本を読み、宇宙に憧れるのでした。 しかしながら、学校の先生に、「夢なんて見てないで勉強しなさい」「もっと現実的な夢を見なさい」と言われ、夢を諦めかけてしまう。

そのような負の言葉に振り回された植松氏がどういう思いで、経営し、今に至るかを語ってくれます。

僕がこの映像を見たのは、偶然Facebookのフィードで流れてきたからなのですが、そんな偶然でもこの映像を見られて良かったと本当に思っています。

この映像終盤がいいのです。

講演の終盤、植松さんが一瞬涙ぐみながら、先生に言われたことを思い返す瞬間があります。

大の大人がそんな人前で潤みながら、訴えかける。そんな夢に向かって一生懸命な大人になれているだろうかと、今後もなれるのかと痛感したのでした。

ということで、本当にいい講演ですし、20分ぐらいですので、是非見て頂ければと!

ちなみに、文字おこしもされてるので、振り返る場合はこちらでも。 logmi.jp

また、講演の出た際の心境について書かれている植松氏のブログも面白いですよ。定期的に更新されているようなので、是非目を通してみてください! tsutomu-uematsu.hatenablog.com

是非是非見てみてください!ではでは!

植松氏は本も出版されてますので、考え方に惹かれた方は是非本も読んでみてください!

検索からのアクセスを重視したいなら、モバイル フレンドリー テストをやっておこう

試してみた-ブログ 試してみた

www.keikakuhiroba.net

こちらのサイトを読んでいたところ、Googleからの検索を重視しようとすると、モバイルフレンドリーになっていたほうがいいということでした。

そして、チェックする方法があるという。それが、このモバイルフレンドリーテスト。

Mobile-Friendly Test

ということでやってみました。

こういうフォームに、自サイトのアドレスを入れる。 f:id:masudaK:20160703203744j:plain

結果はこんな感じ。 f:id:masudaK:20160703203809j:plain

対応しているとのことで安心しました。この辺ははてなブログを使っている恩恵を預かってますね。 ブログをお持ちの方はやってみてください!ではでは!

このはてなブログをVALUE-DOMAINとRoute 53で独自ドメインで運用することにしました

試してみた-独自ドメイン 試してみた

masudak.hatenablog.jp というドメインで運用していたのですが、独自ドメインを使ったほうが、将来的にドメインパワーがあがるという話もあり(?)、試してみることにしました。

元々違うブログを独自ドメインで運用していて、Github pagesとOctopressで運用していたサイトが独自ドメインでした。 pages.github.com

ただ、はてなブログへと移行も終わり、前のブログのアクセスも多くなく、内容がだぶるとSEO的にも良くないかと思い、いっそ消してしまえと思い、消すことにしました。

はてなブログに移行したときのメモはこんな感じ。 blog.masudak.net

そんでドメイン余ったので、はてなブログで使おうということに。

Route 53で運用していたので、設定しました。 Route 53の設定はこんな感じ。 Create Hosted Zone でZoneを「masudak.net」で作成。

そんで、CNAMEで設定する。 f:id:masudaK:20160703165700j:plain

あと、このNSをメモっておきます。 f:id:masudaK:20160703165655j:plain

僕は、バリュードメインでドメインを取っていたので、NSをroute 53にまず向けます。

www.value-domain.com にアクセスして、登録済ドメイン一覧を開く。

こんな表示になります。 f:id:masudaK:20160703165945j:plain

その上で、「ネームサーバー」をクリック。 さっきRoute 53で表示したNSを一つ一つ登録。 f:id:masudaK:20160703170201j:plain

なぜか大文字になっちゃったけど、問題ない模様。

あとは、はてなブログの管理画面で登録。 はてブとかも引き継いでくれるので、良かったです。

その後、analyticsの設定を変える必要があったので、ここに従って変えました。 www.mayoinu.com

また、ASPなどで登録しているURLも変更。

という感じで、ちょっとだけ面倒でしたが、大きくハマることもなく、無事に独自ドメイン化できました。

まー、そこまで大きく変わることはないと思いますが、末長く見守っていければと思います。ではでは!

P.S. 変更後の印象としては、アクセスは増えている気がするけど、Adsenseのクリック数が減ってる気がする。でも、まぁ時間経てばならされるでしょう。