oinume journal

Scratchpad of what I learned

2018年の振り返り

あけましておめでとうございます。年末年始は親戚とハワイで過ごしていました。冬なのに海に入るという謎の体験をして、正月感はまったくなかったけどこれはこれで新鮮でした。

仕事

年始からチームを異動してPlatform開発の仕事をしていた。あまり具体的なことは言えないけど、メルカリのmicroservice化を進めるにあたり重要なコンポーネントの開発・運用をやっていた。自分にはこういうPlatformや基盤のようなものは向いていないかなと思っていたけど、やっていくうちにそれなりに知識がついてきて意外と楽しくなってきたのと、チームメンバーにも恵まれて自分の意見を臆せずバンバン言える雰囲気で良かったと思う。

2019年からはそんなチームを離れて、エンドユーザーに近い機能開発をしていく予定。

上海出張

gophercon.vn

年初の抱負に対する実績

今年は3ヶ月ごとに必ず振り返りをするということを行ったおかげでまったく目標が達成できない、ということはなかったように思う。ただ、やりたいことに対して圧倒的に時間が足りないというのは例年と変わらずで、2019年はやりたいことをもっと絞らないと駄目だと思っている。

アルゴリズム

  • ハッシュテーブルを実装した
  • 文字列検索でブルートフォースを実装した
  • 文字列検索でBoyer Moore法を実装した
  • 2分探索木を実装した
  • B木を実装中

ブロックチェーン

機械学習をやめて途中からブロックチェーンを学ぼうと思ったけど、途中からやる気がなくなりあまり進捗が良くなかった

lekcijeに課金機能をつける

途中からGKEに移行することを優先したので進捗がほぼない。

書いたブログ

2018年の前半はわりとブログを書く余裕があったのだけど、後半になって仕事が忙しくなってきてからはあまり書けていない。自分の学んだことをアウトプットしないとどんどん忘れてしまうので書きたいとは思いつつも後回しになってしまっていてこれは良くないなと思う。来年は月に1本ぐらいはちゃんとした内容のものを書きたい。

プライベート

サンフランシスコ行った

1月に奥さんの出張に付き合ってロス+サンフランシスコに家族で行ってきた

e-Residencyカードとマイナンバーカードを作成

2017年の12月にエストニアに行った勢いでe-Residencyカードという、エストニアに住んでいなくても銀行口座が作れたり会社作れたりするマイナンバーカードみたいなものを作った。ついでに日本のマイナンバーカードも作った。

病気になって人生初入院

こいぬめ氏の扁桃炎を被弾して自分も扁桃炎にかかる。息子はなんと扁桃腺を手術で切除する事態に... 自分はそこまではいかなかったけど、血液検査したら「今すぐ入院しないとまずいレベル」と医者に言われて即日病院送りに... 5日間入院して、ひたすら点滴を打つ毎日。

KORN

退院した直後にKORNのライブを観に行った。

副業的なもの

友達の仕事を手伝うなどした。まぁWordPressのセットアップをしてデータをサルベージしただけなんだけど。

2019年に向けて

まず仕事が忙しくなるとブログを書かなくなったり個人の勉強をおろそかにしてしまうのが本当に良くないと思っている。そもそも仕事が忙しいこと自体、自分にも責任があるのでちゃんとコントロールするようにしないといけない。この辺の課題をクリアしつつ、もう40歳になってしまうので、人生設計を真面目に考えないとマズい...

  • 達成したい目標を絞る
  • 仕事を忙しくし過ぎない
  • 今後10年の大まかな計画を立てる

あたりを2019年は頑張ろうと思う。

Satisfying a large interface quickly in Go

Sometimes it's painful to safisfy a large interface in Go. Here is a simple answer for this, just embed interface on struct like bellow:

package main

import (
    "fmt"
)

type Foo interface {
    MethodA()
    MethodB()  
    MethodC()
    MethodD()   
}

type FooImpl struct {
    Foo
}

func (fi *FooImpl) MethodA() {
    fmt.Println("MethodA called")
}

func main() {
    foo := new(FooImpl)
    foo.MethodA() // Implemented
    foo.MethodB() // Not implemented, runtime error will happen
}

You can check the result on https://play.golang.org/p/0y8ICTWCfpy.

  • MethodA called is printed
  • And then a runtime error happens by calling foo.MethodB

This technique is useful in unit test.

2018年10月の振り返り

アルゴリズム

BTreeをやっているけど、時間がなくて実装ができずに止まっている。

ブロックチェーン

進捗なし

lekcijeのインフラ引っ越し

CircleCIでdocker buildしてGoogle Container Registryにpushするところまではできたので、あとはKubernetesのyamlをひたすら書いていく。

↑に関連して、静的ファイルの配信をVPS + NginxからCloudFlare + GCSに切り替えた。少しハマりポイントがあったので今度ブログにでもまとめようと思う。

読書

CAREER SKILLS

CAREER SKILLS ソフトウェア開発者の完全キャリアガイド

CAREER SKILLS ソフトウェア開発者の完全キャリアガイド

これを読んだ。ソフトウェアエンジニアになる近道とか、プロのエンジニアとしてやっていくには、みたいな心得集のようなもの。情報のポイントがまとまっているので、一通り網羅したい人にはオススメできる内容だと思う。

CODE COMPLETE

CAREER SKILLSで言及されていたので読んでいる。

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

プライベート

  • 楽天マガジンを解約したので本を読む時間が増えた。
  • 10月はDMM英会話をほぼやらなかった。そして3週間ぶりにレッスンを受けたらすごく新鮮な気持ちで楽しかったし、意外と英語力が衰えていなかった。

direnvから.envをロードする

.envrcファイルに dotenv と書くだけで、現在いるディレクトリの .env ファイルを読んでくれる素敵な仕様を発見した。これでdirenv使いながら.env形式しか受け付けないアプリケーションにも対応できてめでたしめでたし。

以下は具体的な例。

$ cat .env
PORT=12345
ENV=local

$ cat .envrc
dotenv

$ direnv allow
direnv: loading .envrc
direnv: export +ENV +PORT

$ echo $ENV $PORT
local 12345

2018年9月の振り返り

9月は10日間の奥さんの出張があったこともあり、本当にあっという間だった。

アルゴリズム

次はBTreeをやろうと思って、その前にAVLTreeやらないとダメそうで、そういえばBinarySearchTreeも実装したことないなって思ってBinarySearchTreeを実装した

10月こそはAVLTreeとBTreeやる。

ブロックチェーン

進捗なし

lekcijeの月額課金

月額課金の前に、インフラ環境をherokuからGCPの東京リージョンのGKEに移そうかなと思っている。

というのは、7月ぐらいにeikaiwa.dmm.comがSSL対応されたことにより、スクレイピング時のレイテンシが大幅に悪化したため、通知処理に時間がかかるようになってしまった。よりeikaiwa.dmm.comに近い場所からスクレイピングを動かさないとダメそう、ということでGCPの東京リージョンに移したい。

欲をいえばGKEではなくGAEで済ませたいのだけど(GKE高いし)、内部的にgRPCを使っているせいでGAEが使えない。早くGAE SEでgRPCが動かせるようになってほしい!(切実)

読書

橋下さんの「政権奪取論 強い野党の作り方」を読んだ。日本はアメリカのように2大政党制ではないので、自民党が危機感を持たず政治が国民を向いてないっていうことを具体的なエピソードをもとに説明している本。最初の方は面白かったし納得することも多かったけど、途中から似たようなエピソードが多くなってきたので途中で読むのをやめた。

政権奪取論 強い野党の作り方 (朝日新書)

政権奪取論 強い野党の作り方 (朝日新書)

プライベート

  • ジャック・ライアンがAmazon Primeにあったので見てしまった
  • 24の新しいシーズンがAmazon Primeに来てたので見てしまった
  • 奥さんが出張で10日間不在だったので育児ワンオペしてた
    • めちゃくちゃ大変だったけど、息子氏とより親密な関係を築けた
  • 楽天マガジンは雑誌を読む時間が確保できなくなってきたので解約した。時間が増えてきたらまた復活するかも。