maco's life

主にエンジニアリングと読書について書いていきます。

2019年振り返り

目標と決めたことだけ一応振り返っておく。

仕事

  • 今担当しているものを着実に進める ( 目標に対して60%の進捗 )
  • 早く出勤して早く帰る ( 8月ぐらいまで無理だったけど9月以降は二時間ぐらい早く出社できた )

私生活

  • CSの知識強化 ( 10% )
  • 去年に引き続き筋トレ ( 筋トレして体重増えた。56kg目指すのに調整必要 )
  • 健康診断オール A にする ( オールAならずもE判定なくなった。食事と健康に気をつけたからか )
  • Yuri on Ice 弾ける ようにする ( 弾けるようになったけど、今年に継続して続けるのはやめる )
  • ハイボールまとめ雑誌的なの作ってみる ( 作ってない )
  • youtubeの動画はクオリティを上げたもののみ投稿する ( できた。収益もあがった )
  • コミケ出典 ( 落選 )
  • 家事とか強化したり、省エネする ( 劇的な改善はなし )
  • 本を読む習慣をつける ( できず )
  • iPadPro活用する ( 使わず売った )
  • インプットしたことはアウトプットする ( できず )

2019年初にやろうとおもったことはとりあえずこんなかんじ。 年初に立てた目標を達成しようと思いながら生活していたわけじゃなかったわりにはそこそこの結果だった。

今年からはこのブログは技術よりの内容だけかいて、プライベートな日常系は別のところにあげていこうかな

2019年でやりたいこと

2019 年 もスタートして数日が 過ぎましたね。例年おなじみの今年やりたいことを書いていきます。今­年のテーマは「習慣と挑戦」かなと思っています。

昨年から特に感じているのですが...

一年が過ぎるのが早い... 早すぎる!これは、毎日を意識して生きていかないとあっという間に人生終­わりそうだなって思うのですよ。また何かを成し遂げようと考えた時に、一日だけでできる事なんてほぼほぼなく、継続してやっていく必要があるので今年のテーマは「習慣と挑戦」というわけです。

前置きはこのぐらいにして、さっそくやりたい事リストアップしてみます。

やってみたいこと

- 最初のインデントでやりたいこと
  - 定量的な目標

みたいな構成で書きます。

仕事

  • 今担当しているものを着実に進める ( ここは一旦これだけにしておく )
    • チームで決めた目標まで終わらせる ( ここの詳細はチームで話すところなので省略 )
  • 早く出勤して早く帰る
    • 目標は9時 - 18時の出勤にする ( 会社的には10時から18時でMTGはいることがあるからこの時間帯 )
    • また朝の時間はコーディングに集中できるから早く行きたい。

仕事めっちゃ少ないやんって思うけど、ここは会社の目標設定にかけばいいかなと。

私生活

  • CSの知識強化
    • ちゃんとした参考書2冊読む
  • 去年に引き続き筋トレ
    • 他人が見て鍛えているとわかるぐらいが目標。
    • 一旦ペースは週3
    • 体重は56kgを目指す
  • 健康診断オール A にする
    • まずは精密検査に行く...
  • Yuri on Ice 弾ける ようにする
    • 月1回ピアノ動画晒す
    • 週1 ~ 2で練習 (レッスンも含む)
  • ハイボールまとめ雑誌的なの作ってみる 
  • youtubeの動画はクオリティを上げたもののみ投稿する
    • 週1で投稿
  • コミケ出典
    • 未定
  • 家事とか強化したり、省エネする
    • 食洗機かう
    • 家にあるもので「これが売り場にあったら買うかどうか」基準で買わないとなるものは捨てる
  • 本を読む習慣をつける
    • 2週間で1冊
  • iPadPro活用する
    • とりあえずブログ書くつもりなので、挿絵書くのにつかってみる。
  • インプットしたことはアウトプットする
    • ブログ週1 ~で書く。

まあ一旦こんなところで。 他にもいろいろあるとおもうけど、年始に思ったことを書いてみました。随時加筆・修正していきます。

これ最初ApplePencilで文章書いていたのだけれど、めっちゃめんどくさかった。文字書くのはやっぱりキーボードがはやいのでスマートキーボードフォリオ2ほしい。 おわり

Googleドキュメントでも「いいね」ができるadd-onを作った

この記事は、裏freee Developers Advent Calender 2018の5日目です。

時がすぎるのは早いもので、freeeに入社していつの間にか1年4ヶ月経っていました。現在私はfreeeのサービス基盤というチームでマイクロサービスをつくったり、サービスの改善のための足回りを整えたりなどやっています。今回の投稿はアドベントカレンダーということで普段の業務から離れて、自分が以前からほしいなって思っていたgoogle add-onをアドベントカレンダー駆動開発でつくったのでその紹介をします。

背景

freeeではあらゆる情報の共有にgoogleドキュメントが使われています。例えば機能をつくるにあたって必ず最初に作るDesignDoc、時にはコーディング規約、あるいはちょっとした考えてのアウトプットなどそれは多岐にわたります。またfreeeには、「あえて共有する」という文化があるほど周りに共有することを意識しているため、そういった数々のドキュメントに触れる機会がよくあります。そういったドキュメントを見たときに、「コメントを残すほどではないけどいいドキュメントですね」みたいな気持ちを伝えたいことがよくあったので、今回はそれがgoogleドキュメント上でできるようになるいいね add-onを作成しました。

作ったもの

作ったもののデモです。


動画内にもあるように今回作った いいねadd-on は「めっちゃいい」みたいな気持ちを伝えやすくするために1ユーザにつき何度もいいねが押せるようにしてみました。今はまだいいねを「する」「みる」しかないですが、今後週次でいいねが多かったdocsを集計できるよような仕組みを入れようと考えています。その仕組みが入れば、たくさん書かれているドキュメントの中から皆が関心が高いものが可視化されるので有益なドキュメントが見つかりやすくなったりするのかなと考えています。あと個人的にキリ番機能とかつけたいですね。

また今回の機能を作るにあたって作成したコードが以下になります。main.gsのsheetIDがいいねをためる先のスプレッドシードのIDになるのでそこは適宜書き換えが必要です。またmain.gs内のDocumentsAppと書いてある箇所を、SpreadsheetAppやSlideAppに書き換えるとスプレットシードやスライド向けにadd-onを提供することも可能です。

gist.github.com

コードが何をしているかはだいたいコメントに残しています。また今回add-onを作るにあたり公式のドキュメントがすごくよくまとまっていたのでそれらを参考にしたら一日かからず作ることができました。以下が参考にしたURLです。

おわりに

たまには業務を離れてこうあったらいいなっておもう機能をシュッとつくってみるのはいつになっても楽しいですね。 早くリリースまでもっていけるようにがんばります🙏

さて明日は、生産性改善系エンジニアのkompiroさんです!お楽しみに!

A Tour of Go やり直した

A Tour of Go

作ってみたいwebサービスができたので、どうせなら勉強を兼ねてgolangで作ってみるかと思い久しぶりにA Tour of Goをやり直しました。 といっても並列部分は直近必要にならなさそうだったのでその手前までやった感じですが。

これまでgolangでツールは作ったことはあったけど、あまり基礎的なところとか抑えられてなかった感じだったのでいい勉強になりました。 また合わせてみんなのGo言語も読み進めているので基本的なところ抑えられたらサービス作っていきたい気持ち。

働き方とかキャリアとか

最近自分の今後について悩んだりしていて、そういえば2年前に「何でエンジニアをするのか」みたいな記事書いてたなと思って見返してみた。そこには

- 新しい技術に触れる瞬間が楽しい
- コード書いている時間が楽しい
- 一つのアーキテクトを作り上げるのが楽しい
- 作り上げたものがユーザに届くのが嬉しい
- 生じる問題をエンジニアリングで解決するのが楽しい
- 結果自分のスキルになって成長を感じるのが嬉しい

みたいなことを書いていて、浅いな〜って感じることもあるけどわりと今もそこはかわらなくてそんなところが好きで今の職業していて、自分はそれで十分だったりするんですよね。 どの会社で働きたいかという部分を選ぶ時の判断基準としても入ってはいるけど、会社選びは言わずもがなそれだけじゃないのだけれど。

そんな中今やってる仕事が本来やりたいこととずれてしまった時に、今までは「これも経験の一つとして糧になるぞ!」みたいな考えで生きてきたのだけれど、結局それだと何都合のいいだけの人みたいになっちゃうのでどうなんだろうな〜とは思うことがあって働き方というか自分のスタンスとしてそれでいいのかなみたいなことを考える期になっていて困っていたりする。

とまあこんなこと考えてるのは停滞している感じなのではやくなんとかしないとなと。

ISUCON7 オンライン予選に参加しました

先程人生二回目のISUCONに参戦してきました! 今回やったことと所感を簡単にブログに残します。

isucon.net

事前準備

今回は前職の同僚の id:karia , id:naught00 と参加しました。私は過去一回、二人は今回がISUCON参加はじめてで、全員右も左もわからないかんじだったので本戦に向けて準備は色々しました。やったことは ISUCON6 -> ISUCON4 -> pixiv社内ISUCONの過去問をみんなでやり、ISUCONとはどういうものなのかという雰囲気の把握と過去のボトルネックの改善方法をみたりしました。過去問を通してやっぱり当日は色々準備する時間がもったないよねという話がでて事前にツール等は準備していました。用意したものとしては

  • alpをよしなに使えるshell
  • slack通知shell
  • newrelic
  • mackerel
  • チューニングしたnginx conf
  • 使いそうな実装のリファレンス実装とドキュメント
  • etc...

みたいなものは準備しました。(ほとんど他のチームメンバーが用意してくれました!!! 感謝!!!)

予選

結果から言うとベストスコアは9万4千点ぐらいで、最後の方はベンチ回すごとに上がったり下がったり不安定な感じで結果7万9千点くらいがラストスコアになりました。いろんな実装試しましたが、何がどのぐらい効いたか詳細に残してなかったのでやったことのみ書いていきます。今回の実装の役割分担としては、id:karia がインフラ担当で、id:naught00 と私がアプリ担当でした。自分が予選通してやったこととしては

  • githubへコードをpush
  • image, messageのテーブルにindexはる
  • channelリストを取ってくる処理をキャッシュに乗せて効率化
  • ログイン後のリダイレクト先をchannelに変更
  • pumaをsocketに変更してthread数を変更
  • ユーザ作成時のパスワードのsaltを固定値にする
  • 画像キャッシュが効いてなかったところのバグ取り
  • fetchの効率化 -> redisつかっていい感じにN+1削ろうとしたけど修正方針あやまりあまり効かなかった
  • 残り時間でSELECT * FROMですべてのカラムを取ってきていたので必要なカラムのみにして効率化

ぐらいですかね。あとはエラーの調査とかその辺みたりしてました。画像のキャッシュ化とかサーバー構成周りの変更詳細は 他のお二方がきっと書いてくれるはず...!

心残り

大きくスコアをあげるにはどうすればいいかというところを考えすぎたあまりに、自分の実装の間違いや他の効率が悪いちょっとした処理など見過ごしていた点が多々あったのが悔しいです。今回選択した言語への理解が浅かったところももちろんあるとおもうけど、以前やったisuconの実装の良い部分をちゃんとみていたらわかっていたこともあったのでそこに気づけなかったのが心残りですね...

最後に

本戦に行くことはできなかったけど、また今回自分にたりなかったことへの気づきを持ち帰ることができとても学びがおおかったです! 運営の皆様お疲れ様でした、そしてありがとうございました!

「多動力」読んだ

ふとしたことで購入することになったので読んでみた。

 

多動力 (NewsPicks Book)

 

色々と思うところはあるけど、堀江さんが楽しいと思うことに前向きに取り組むためのノウハウが書かれている本といったところでしょうか。

少し宣伝っぽさがある内容にも取れたけど、好奇心から生じる行動力が多動力となるのかーという感想(小並感)