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

カイワレの大冒険 Third

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

2016年振り返り

まとめ 振り返り

今年もあと2日となりました。みなさまいかがお過ごしでしょうか。

最近全然ブログ書いてませんが、振り返りはさすがにしたほうがいいと思うので書いてみる。

過去分はこちら。

仕事

今年1番の変化は転職でした。優秀な人たちと世界に向けて戦ってみたいと思い、メルカリに転職しました。

入社当初はサーバサイドのエンジニアとして、ユーザのエンゲージメントを高めるチームにいました。

周りが恐ろしく優秀な人ばかりな上に、不慣れなサーバサイドエンジニアというコンボで、社会人人生で1番落ち込み、やめようかなとまで思ったのは、人生初かもしれません。

凹んでいたところ、SET(Software Engineer in Test)のチームが立ち上がるので、そこに行かないかという話でした。 (SETについては、こちらを是非。 https://speakerdeck.com/shomas/merukariniokeru-software-engineer-in-test )

ということで、秋からはSETのチームに配属に。

元々サービスのバックエンドを担当するのは好きでしたし、必要に応じてAPI含めコードも修正できるというインフラとサーバサイドの中間の立場がすごく面白く、毎日やりたいようにやらさせて頂いています。

所属後、

  • 開発環境の整備し直し
  • QA環境の作り直し
  • リグレッションテストのコード化

などとりあえず今までなかなか手が回らず、今後の成長を考えるとボトルネックになりそうな箇所をどんどん潰していくことをしています。

SESが止まったためにメールサーバ運用したり、docker駆使して環境のコンポーネント化進めたり、環境変わったことでソースコード側も修正しないといけない場合は修正したり、Appium使ってE2Eのテストコード書いたり、UKの立ち上げサポートしたり。

まだ2ヶ月ぐらいしか経ってないのですが、アドレナリン満載で、刺激ある生活ができています。

来年は今作ってる環境が運用フェーズになると思うので、よりよい形に整備できたらよいなと思います。あとはまだまだ自動化できておらず、スピード出てないところも色々あると思うので、どれだけ首を突っ込めるかどうかかなと。

人ほんと足りないので、是非こちら見て気になる人いたら、ランチしましょう。 https://www.wantedly.com/projects/58876

あとは、8月にアメリカ出張を一ヶ月させて頂いて、現地で生活できたことはすごくライフチェンジになりました。

当時ストアのランキングも全米3位になるなか、スタートアップの本当に勢いある環境に身を置けて、本当に良かったなと。

そこまで刺激のあるタイミングなんて人生でも早々ないでしょうし、自分は今後どういう環境で生き抜きたいのか考えることになり、本当に感謝しています。

プライベート

結婚もしてませんし、家族に大きな変化があるわけではないので、マイペースな日々であるのですが、しいてあげるなら健康かなと。

春ぐらいから、睡眠が浅く、朝4時ぐらいに毎日目が覚めてしまい、その後なかなか寝られないという状況で、わりと辛かったので、サプリを飲んだり、寝具を変えたり、色々対策をしました。

ただ、どれも根本的には解決できず、HP削られ続けちゃんと対策をしようと思い、睡眠専用のクリニックに行きました。

センサーを身体中につけられ、22時ぐらいに寝なきゃいけないというのはなかなか大変でしたが、背に腹はかえられない。

結果としては、足が微動しており、それが睡眠の質を下げているのではないかという診断でした。逆流性食道炎の薬の一つにその副作用があり、それをやめたほうがよいかもしれないということでした。

現在その薬をやめてますが、確かに睡眠の深さは変わってきています。ただ、胃の辛さも戻ってきてしまったので、その辺対策を考えなければという状態です。

来年は睡眠も深くしつつ、胃の負担も減らしたいですね。

あとは、kindle paperwhiteを導入して家にある本をすべて電子化しました。本棚のスペース開けられたのは本当に良かったですが、ちょっとお金かかりすぎたかなと。

他にはiPhone SEにしたタイミングでSIMフリー+格安SIMにしました。初期コストはなかなかしましたが、長い目で見ると良さそうです。渋谷とかはちょっと繋がりにくいですが、月2000円にしては満足かなーと。

英語

色々meetup行ったり、出張行ったり、TOEIC受けたり、受験を除くと1番英語には触れていたかもしれません。

TOEICも780までは持って行ったのですが、そこからモチベーションを続けるのがなかなか大変で、800超えられていないのが課題でした。

PRが英語になったりして日々の生活でも英語を使うタイミングが増えてるので、日常的に英語を使う機会を増やさないとこっからがしんどいなという状況です。

来年はモチベーションをどう保つか考えないと、ここからの成長は厳しいだろうなという状況です。頑張れ自分。

終わりに

本当にあっという間な2016年でしたし、おそらく2017年もあっという間に過ぎるでしょう。

本当に優秀な人に囲まれ、恵まれた環境にいると思うので、健康で身体を大事にし、ちゃんと仕事で成果を出せるようにまずはそこを頑張る一年にしようと思います。

頑張ろう2017年。

そして、今年一年お世話になった方々本当にありがとうございました!

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

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

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

入り口はこんな感じ。中野駅からはサンモールの商店街を通り抜け、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

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