2018年振り返り
毎年振り返りを行っていますが、2018年分も残しておきます。
過去分はこちら。
仕事
夏までSET(Software Engineer in Test)をやっていたのですが、その後組織的な問題解決を横断的に行う部署に異動し、Microservices推進やいくつかの案件のプロジェクトマネージメントやファシリテーションを行っていました。
課題が見えにくい、または見えたとしても解決方法が見えないなかアクションをすることが増え、なかなかしんどかった一年でした。自分の考えを変えないといけないことも多く、失敗し軌道修正したり、うまく行けばそこをさらに伸ばしたりするなど、非常にエネルギーを使った一年でした。
とは言え、今のスピード感のなかで、成果が求められる職場はそうそうなく、非常に充実した生活を送っています。しんどいからこそ、得られたものも多く、年末に感じた充実感は非常に良いものでした。
これまで得た経験や知識をもとに、2019年は大きな成果を出す。成果と向き合い、より大きなことを結果として残していこうと思います。
プライベート
仕事の影響もありますが、自分の考えやリズムを変えようと、非常に多くのことを試しました。以下は一部ではありますが、
- ドラム式洗濯機や食洗機を導入し、自分の時間確保
- 年間100冊以上消化できるよう、読書の考え方を変更
- 見出しを使い、全体像の理解し、必要な知識に着目
- 1回目はサラッと読むことで、本当に必要な知識に着目
- ハイライトやメモを使い、重点的に記憶
- 脳科学や勉強法の知識を増やし、効果的なインプットをするよう変更
- 記憶の定着する回数、タイミングの学習
- 記憶しやすいテクニックの学習
- そのようなことを組み合わせ、無意識にできるようにする
仕事の仕方に通じるものがありますが、いかに自分がコントロールできるものに着目し、小さいところから改善していくのが非常に重要な一年でした。
これらの変化により、いかにアウトプットに繋げられるかが重要だと思いますので、2019年はそれを意識し、行動していければと思います。
抱負
より成果出すためにも、以下を目指そうと思っています。
- 読書300冊
- テクニカルライティングにより、よりシンプルでパワフルなメッセージの伝え方を訓練
- 仕事で疲れた脳を休める、バランスのよい休息方法
今年買ってよかったもの
今年も買ってよかったもの色々ありますが、ドラム式洗濯機と食洗機はかなり満足度高いものとなりました。
ドラム式洗濯機に関しては、圧倒的に時間短縮が図れるので素晴らしいですね。
縦型の洗濯機で必ず行う 洗濯物を取り出す->干す->乾かす
の手順がないことで相当気楽になりました。
また、干すタイミングや場所を考えなくてよいので、出勤前にでも気軽に洗濯に回せるのよいですね。
食洗機に関しても、気軽に洗い物できることや、時短を図れる点が素晴らしいです。食後2,3分で洗い物が終わるというのは、非常に素晴らしいです。
2019年もいい買い物ができたらと思います。
終わりに
2018年に得た経験や知識をもとに、どれだけ大きな成果を出せるかが重要なので、貪欲にやっていければと思います。 では、今年もよろしくお願いします!
2017年振り返り
今年もあと2日となりました。みなさまいかがお過ごしでしょうか。
毎年続けている、年末の振り返り残しておきます。
過去分はこちら。
仕事
2016年4月に転職し、その後サーバサイドエンジニアからSETに移るなど色々ありましたが、2017年は基盤整備が少しずつ落ち着いてきたこともあり、セキュリティやマイクロサービス周りの整備に時間を割くことが増えました。
セキュリティチームの立ち上げに関わったり、マイクロサービスの今後について首を突っ込んだり、会社の重要かつ面白い領域にコミットできるというのはすごく刺激に溢れていました。
その一方で、どれもフルでコミットできてないという歯がゆい思いもあったので、来年はエネルギーすべて一つの領域に注ぐぐらい、もうちょっと工夫できたらなと思います。
また春にUS出張できて、あちらで1ヶ月生活できたのはすごく良かったですね。咳が止まらず初めてアメリカの病院に行きましたが、保険にも詳しくなり、生きる力は付いたように思います。
それにしても、みな優秀で、話もできて、明るい人ばかりで、すごく環境に恵まれているので、もっと良い成果を出せたらなと思います。
英語
うちのチームはもう半分ぐらいがEnglish Speakerになりましたが、少しずつ周りに海外の方が増えています。自分がメンターを担当した方もEnglish Speakerだったので、基本英語でコミュニケーションするようにしていて、自分の置かれてる環境で英語を使う機会が増えてきました。
なので自然とモチベーションもあがり、帰宅したら英語のニュースを流し、映画も英語字幕で見て、通勤中も英語を聞くみたいな生活ができたので、この生活を続けられたらすごくいいなと思っています。来年はもっとEnglish Speakerが入社されるようなので、すごく楽しみですね。
それにしても、Netflixは英語字幕簡単に見られて素晴らしいですね。スカパーで謎の機材買って、字幕つけていたころに比べると圧倒的に楽になりました。いい時代です。
プライベート
靭帯痛めたり色々ありましたが、ジムに通い始めて、生活を見直しました。仕事終わりになんか疲労感がやたら残るようになり、あまり自分の身体ではない感があったのと、Fitbit Alta HRを買ったこともあり、カロリーの計算もして、改善をしました。
元々痩せすぎだったこともあったのですが、7kgほど増量しまして、身体は軽くなってきたので、よかったかなと。
あと、去年の振り返り記事にも書いたのですが、逆流性食道炎の薬のせいか睡眠が浅く、夜中に目が醒めることが多く辛かったのですが、徐々に薬を半分に減らすようにしたのと、上記の運動も相まって、睡眠はほぼ戻りました。気力的にも戻ってきたのですごく良かったですね。
あと、Spofityの3ヶ月100円戦略にハマってしまい、音楽も色々聞いてるのですが、この歳になると自然と自分を好むもののみ受け入れるようになりそうで、敢えて色々聞くようにしています。
前に見かけた話で、公園で年配のおじいちゃん・おばあちゃんが手を繋いでいたら、ずっと愛し合った夫婦を思い浮かべるかもしれないけど、実は熟年離婚をそれぞれして、最近付き合い始めた二人かもしれないという話があって、自分が心地よいと思う先入観に日々支配されている可能性はあり、少しでも工夫して、自分の考えを変えていかないとこの先なかなか大変だろうなという気がしてきたので、来年はそのあたりの認識を改める工夫も頑張れればと思います。
あとは、テーマ型+ロボットアドバイザーというのでしょうかFOLIO始めたり、仮想通貨始めたり、401Kのポートフォリオをアジアに移したり、お金周りも動きが多かったように思います。ブロックチェーン含めて新しい世界観は面白そうなので、フィンテック周りは引き続き注目していきたいと思っています。
今年買ってよかったもの
Fitbit Alta HR
まずは上記に上げたFitbitですかね。日々の摂取カロリーが見られるので、それによって食事を見直すことができました。肉体改造したい人にはおすすめです。
Fire TV
リモコンはちゃっちいのですが、海外のニュース番組をひたすら流せるのでいいですね。
Fire HD
またAmazon製品ですが、お風呂でNetflix見られるのですごく重宝しています。10インチ大きくていいですね。
Xperia XZ Premium
4Kもいいのですが、久々にAndoridをちゃんと使ってみようという気になった端末ですね。5年以上前に持っていたAndroidとは雲泥の差で、普通に使えることが驚きました。また、画面も5.5インチなので電車内で動画見るときにすごく重宝しています。
終わりに
来年はマイクロサービスの知識と英語の経験を圧倒的に増やしたいですね。やればやるほど、やらないといけないことがやまほど出て来るので、来年はそこをなんとかできればと思います。
ということで、今年一年お世話になった方々ありがとうございました!来年も引き続き宜しくお願い致します。
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分ちょっとで着きます。 サンモールの雰囲気もいいので、是非そこを通り抜けてください。
入ったら、こんな雰囲気。
メニュー1
メニュー2
酒メニュー。もちろん、これ以外にもソフトドリンクやワイン、ビールなどがあります。
お通し。もうここからうまい。
ポテサラ。ちょっとだけ生臭いかな。
マグロマート盛。筋が多めの部位は焼いたほうがいいと薦められる。
ホホ焼いてみた。
火を通す。
あぶりという、こちらもオススメのメニュー。
こちらも火を通す。
酒も進む。
本マグロ中落ちまるごと出てくる。これでも小さいサイズらしい。
スプーンで掘る。
掘る。
という感じで、やまほどマグロを堪能した一日でした。飽きるレベルでマグロを食えます。
扉開けて帰ろうとすると、地面にマグロが。ほんとマグロ尽くしでした。
他にもいくつかおつまみ頼みましたが、すぐお腹いっぱいになりますよ!
終わりに
マグロをあれだけ堪能することがないので、後半飽きもきてましたが、それでも面白いですね。
好きなだけ食えますし、スプーンで掘ったりとか色々楽しめますので、是非行ってみてください!ではでは!
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に対応したクリエイティブと広告セットを作る
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を作れば完了。