茨城県つくばみらい市から来ました

プログラマーになるために生きています

2018年の振り返りと2019年にやりたいこと

2018年もいろいろあって楽しかったので2019年もいろいろ発生させる年にしたい。ついては去年の振り返りと2019年の大まかな目標を書くぞ。

2018年の振り返り

1月

  • 年始に開発中サービスのローンチがあったので、暮れ〜正月まで部下を巻き込んだ鉄火場に。プレスリリース駆動開発を楽しんだ。
  • 年始、上記サービスをローンチさせたかと思った矢先、別のサービスが DDoS を食らったので夜なべして対応。(前提:だいたい12〜13台くらいのVPSで動かしていたサービス。AWSGCP、Azure の何れでも無いサービス。)
    1. 外部からアクセスが出来ない状態だったので、取り急ぎ sshしてログを確認しようとして tail -f しても何も出てきていなかった。
    2. おや http/https まで来ないトラフィックで flood されたのかな、と思って tcpdump をしてみるものの画面に何も出て来ない。
    3. VPSサービスのコンソールをのぞいたところ、攻撃検知後にサービス側でインスタンスまでトラフィックが到達しない状態となっていた。
    4. VPSにインストールされた nignx が1台で外部ネットワークに露出してロードバランスしている状態だったので、自分の裁量でできる(=無料でなんとかなる)範囲の対応をした。
    5. DNS を CloudFlare に移行することを決め、効果が薄いとはいえゼロではないので取り急ぎTTLを300くらいにした。
      • TTLが常用の値だったのでDNSのキャッシュは冷え切ってないものの、VPSサービスにお伺いをたてて再度トラフィックを開けてもらっても同じ攻撃、しかもカジュアルな DDoS 攻撃に対して脆弱なままサービスを再開しても同じことが発生するのが明白だったので「謝ろう」の精神でAレコードを書き換えた。この時、攻撃者の人がずっと使っているTwitterアカウントがあり、犯行声明もされていてユーザーのみなさまが「攻撃しているのはこいつ」という形で教えてくれていて、過去の攻撃先を見た所 "現代的なCDN" を落とすほどのトラフィックは作れなさそうだったという考慮はあった。
    6. 別のインスタンスの nginx にロードバランシング設定を移行。80, 443 を開け直し、証明書なども旧インスタンスから複写。
    7. Cloudflare の設定を開始。ドメインの設定をしてトラフィックの疎通を確認。各URLに置いて、例外が無い限り更新が走らないサービスなのでキャッシュも強めに入れた気がする。
      • 副次的な効果として、このキャッシュのおかげ以降のサーバーの負荷が多少下がった。サービスの性質として新しいURLがもりもり作られるサービスなので、効果は地味だったけど精神は安定した。
    8. 新 nginx のファイアウォールで Cloudflare のアドレスをホワイトリストに入れ、他のトラフィックを受け入れないように変更した。
    9. 自分のPCのDNSキャッシュを吹き飛ばしたあとでサイトの閲覧が可能なことを確認。
    10. ちなみに旧 nginx のインスタンスはまだトラフィックが来ればコンテンツの配信が可能な状態にしていた。DNSのキャッシュが冷えるまでは時間がかかると思っていたので。
    11. 諸々報告して朝の3時か4時くらいだったのでそのまま寝た。
  • 倒れる前にバックレねえとやばいと思ったので、仲の良い人に辞意をつたえた。
    • CTOを無責任な感じで辞めるのどうよ?という気持ちもあったけど倒れてからでは遅いと思ったので。(2013〜2014年にかけて病気で1年入院しています)

2月

  • 転職活動。ちゃんとした転職活動をしている余裕はなかったので副業先のエージェントともう一人前から付き合いのあるエージェントに連絡、同じ現場を推されたのでそのまま2回ほど面談を受けた。
  • 正式に退職の面接。自分の「巧遅拙速」と面談者の「急いては事を仕損ずる」で格闘があった。2ターンくらいで終了。
  • 引き継ぎコンテンツなどを作ってた気がする。

3月

  • 新しい現場にジョイン。
  • 初日にほぼフルスペックのMBPが用意され、ディレクトリサービスおよびG-Suiteは登録済み、イントラは外様でもほとんど見られる、オフィス綺麗で広いし静かという感じで「おお久しぶりにベンチャーではない所に来た」という気持ちになった。
  • 担当ギョームの説明を受けたところ面接で聞いてた内容と全く違っていたので「おいおいJDにそんな内容なかっただろ」と思ったけどホワイトだから全部許した。ジョブ型雇用とかみなさん馴染みがないでしょうしね。
  • 担当ギョームの詳細が降りてこなかったけど業務内容の理解と社内の関係のありそうなサービスの理解に勤しんでいた。
  • ベンチマークサービスとオペレーションマニュアルなどからモデルになりうる概念を取り出してモデルの定義とかを日本語で Qiita::Team に書いていた。

4月

  • この時はまだ社内のサービスが microservices だという説明を真に受けていたのでいわゆる "microservices" だと思っていたので gRPC に思いを馳せていた。はい Rails じゃ無理ですねー。日報に gRPC 良さそうと書いていたところ当時いたSREの人に小馬鹿にされていたらしい。
  • 詳細は降りてこないが何もしない訳にも行かないので、なんとか動く物を作り始めていた。抽象概念は降ってきていたので「抽象概念から具象プロダクトまで持っていく仕事だな?これは」という気持ちが生まれてやっていた気がする。
  • MVP という言葉は出てきていたので、最小限で動く環境を作ってデプロイフローまで組み、社内の人々に触っていただける状態を作る。
  • まだ microservices だと勘違いしていたので、swagger からAPIのクライアントを作って gem にしたりしていた。
  • レディ・プレイヤー1見た。
    • 良かった。日本のオタクにむけてのサービス作品という感じ。あれが他の国で売れる理由がいまひとつわからないけど、ストーリーはボーイミーツガールに落とし込まれていたので舞台装置は置き換え可能なんだろうな。

5月

  • チームメイトが join、エンジニア一人体制から脱却した。
  • チームメイトが生まれたので SideCI の設定をした。というかお金を払ってもらった。
  • マルチテナントってほどではないけど、いろいろな "括り" のデータを取り扱わなければならなくて、かつデータの漏洩(他のログインユーザーが参照できてはいけない)というものだったので multi tenancy を実現する gem をさがしていた。SmartHR 様の事例なども参考に、人事情報ほどセンシティブではなさそうだったので acts_as_tenant に決めた。
    • Rack サーバーには puma を使う気だったので acts_as_tenant を選定するにあたって一つだけ気になっていたのがクラスの振る舞いを書き換えるものではないか、ということだったのだけれど、状態を持たせるところは RequestStore 経由で thread safe になっていたのが良かった。

6月

7月

  • プロジェクトを仕切り直し。
  • リリース時期が決定されていたので大枠のスケジュールを配置。
  • 既存サービスのモデル分析とモデル設計やり直し。
  • この辺で microservices だと説明を受けていたものが実際は BFF だということがチョットワカル。実際そのサービスを担当している人から「これBFFだから」という話を雑談で聞いていたのに頭では理解できていなかった。理解を最高にリセット。
  • 副業で週に1度やっていたプログラミングスクールの調子が上がってくる。
  • Rails Developers Meetup 2018 Day 3 Extreme

8月

  • 38歳になった。
  • もりもり実装。
  • docker-compose が銀の弾丸だと勘違いして頑張っていた時期だったので docker-compose で関係するサービスを全部(< 15)立ち上げようと頑張っていた。
  • ギョーム先の機械学習勉強会に参加したりした。
  • 副業で週に1度やっていたプログラミングスクールについてメディアに露出した。
  • プログラミングスクール主催で開催したLT大会の司会をした。
  • 8/24, 8/25, 8/26 Animero Summer Live 2018 OK 全通。レヴュースタァライトとめぐりあう。

9月

  • 担当ギョームはもりもり実装。
  • この辺りから本格的にスクラムをやっていくぞ、という雰囲気になったのでスクラムについて勉強したりしていた。
  • リリース時期も決まっていたしビッグバンリリースだったので、この時点でスクラムでスプリントを回していくメリットはあまりなかったのだけど、内製サービスでリリース後も運用などは発生するのでスクラムというやつにチームみんなで慣れていくのは良いことなのでは、というような感じだった。
  • Builderscon 2018 のボランティアスタッフをした。
  • 副業のプログラミングスクールを音楽性の違いで退場。
  • 9/13 ORESAMA 赤坂 マイナビBLITZ赤坂

10月

  • もりもり実装。
  • まだ週次のバーンダウンがガタガタになったりしていた。
  • 婚活に全力。
  • 副業をやめて時間が生まれたのでライブバカになっていた。
  • 知り合いがギョームをさがしていたのでナンパ。無事CV。
  • 10/16 レヴュースタァライト銀河劇場

11月

  • 週次のバーンダウンが見積もり通りに消し込みできるようになってきていた。
  • 自宅から徒歩数分のところにあるもくもくスペースを借りた(月2万円弱)。
  • 知り合いが次のギョームを探していたのでナンパ。
  • 11/2 冨田ラボ
  • 11/9 ORESAMA TSUTAYA O-EAST
  • 11/25 坂本真綾 Zepp Namba

12月

ふりかえりと2019の展望

  • 最高の現場をツモれたおかげで心身ともに健やかになってきた。辞めて良かった。
  • バックオフィスが強い会社はやっぱり良い。これまで当然に思っていた会社という組織の機能が当然ではなかったことがわかって良かった。
  • 副業は音楽性の違いで解散してしまったけど、週1休みの生活はメリットデメリット共にある。メリットとしては、複数の仕事をこなしていると片方の仕事がうまくいかなかった時に精神的ダメージが軽減されてすごく良いし、多少お金が入ってくる。デメリットとしては週1の休みだといろいろ私生活は停滞する。週1休みだった頃は掃除も DMM.okan の家政婦さんに丸投げしていた。なんで潰れちゃったんだ DMM.okan は。
  • 音楽性の違いが発生したあとで仲のいい人に愚痴をこぼすランチを付き合ってもらい「なぜうまくいきそうなサービスは途中で変な方向に変わってしまうのか?」という疑問に対し「儲からないからじゃないっすか」と大変明瞭な答えをいただけたので良かった。連続起業家の知り合いがいると便利。
  • 6月にプロジェクトが白紙に戻った時は「3ヶ月の業務実績がゼロに」という絶望感に支配されていたけどなんとかローンチまでこぎつけたので良かった。今年も自分のメンタルを最優先にいきていこうと思う。
  • 現在のギョームでスクラムを体験できているのはすごく良い。周囲が学習に対して肯定的で貪欲なのもすごく良い。今の現場はとにかく最高の環境を用意していただいているので、あとはプロダクト越しにプロフィットをちゃんと生み出していきたい。
  • 新しい技術スタックで仕事をするというようなことはなかった。片手間で Go 書いたり勉強で OCaml 書いたり Python 書いたり程度。ここはもうちょっと新しいことをしていきたい。
  • Go はもうちょっと何か書きたい。それとまだサーバープロセスを書いてないので何か書くしかない。やるなら Go + Vue か Go + React が良いのかな。もっと読んで、何か書く。
  • フロント技術、特にブラウザの上で走るもろもろが苦手なので克服したい。TypeScriptで書かれたコードがパーズできないのでここをなんとかしていきたい。JSむずかしい。
  • OCaml の学習は完走する。
  • Emacs のイベントに参加したり tadsan をはじめみなさまに道を示していただいているので elisp をもうちょっとちゃんとかけるようになる。まずはさしいEmacs‐Lisp講座を完走する。
  • 参加した技術イベントのトークで動画があるものは見返していきたい。
  • RubyKaigi, Builderscon, Rails Developer Meeting は今年も参加していく。
  • サービス、思いついて環境立ち上げるくらいなら1日でなんとかなるからやるんだけど継続性がないのでなんとかする。
    • 吉祥寺.pm の会場が安いので、ここで定期的に何かをする野望があるのでなんとかしていきたい。
    • 前出の音楽性の話もあり、これはボランティア活動的なものとしてやっていきたい。適度にボランティア活動をすると幸福度が上昇するらしいし。
    • どれくらいの時間を割くかはやりながら考える。できれば2週に1度くらいの頻度でやっていくようにしたい。
  • サブのギョームが発生するかもしれないのでやりきる。
  • あとこれを書いてて気づいたんだけど長文を記述する能力が著しく低い。これの対策も考える。もう少しブログ書くか。
    • 積ん読がえらい溜まっているので読書のログを書くなどすれば良いかな。
  • 8月以降お金を使いすぎたので財布の紐をキッと締める。
    • ライブに行くのは少し減らす。
    • 平日雑に酒飲まないようにする。
      • RubyKaigi の夜も大量に酒を飲まないようにする。
    • ただし雑な飲み会ではないちゃんとした奴はちゃんと出る。
  • 2LDK以上の部屋に引っ越す。もくもくスペースは解約する。引っ越したらオンライン英会話やる。
  • 四十肩が手招きをしているので体を動かす習慣を作る。
  • どこでも良いから海外旅行にいく。
  • 2020年の身の振り方を考える。

もっとやりたいことがあるけど、これくらいを軸に据えていこう。

(nth 2 shibuyaku-elisp) に参加してきた

低い Emacs 力をなんとかして行こうという気持ちで (nth 2 shibuyaku-elisp) に参加してきた。

shibuya-el.connpass.com

もくもく会形式のイベントには久しぶりの参加、かつ参加人数も少なかったので若干緊張していたんだけど、会場も何度か訪れたことがある pixiv さんだったり、 tadsan とは2、3回だけだけどお話させてもらったことがあったので比較的落ち着いていたんじゃないかと思う。

で、何も考えずに当日になってしまって、とりあえず実践 Emacs だけ小脇に抱えて現場に向かった。

4人しかいないイベントだったので挨拶もすぐに終わり、何をするかちょっと悩んだんだけど、Rubocop の自動実行設定がしたかったのをちょうど思い出した。日頃から Rails プロジェクトの仕事をしていて Rubocop の違反が上がるたびに手で style を合わせてコードを書くことに苦痛を感じていたので、 flymake を使えばいい感じになるんじゃないかな、と前から思っていたのだけれど、日中カリカリにタスクを振られた状態でエディタのメンテをする訳にもいかず、1年くらい放置していた。 これをやりたいことを思い出したので、flymake と rubocop について適当に検索していたら、save hook でそのものズバリの動作をするパッケージを見つけてしまったのでこれでよしとした。

github.com

qiita.com

あけて今日終日使ってみたんだけど、案の定というか、子プロセスが走っている間 Emacs が止まってしまうのでイケてないな、という感じ。明日以降は使わない気がする。

以下、雑談をしていた時に現れた内容など。順番は適当です。

github.com

github.com

みなさんファイラは何か使ってますか?というような話題。会場で自分は dired だけど dired もあまり使ってない、みたいな話をした気がするけど今日を振り返ってみるとそこそこ使ってるかも。でも M-x find-file-in-repository が一番多いと思う。どうかなー。

www.reddit.com

php-mode のメンテナンスをしていた ejmr さんによる php-mode のメンテナ募集のポスト。

github.com

Emacs は 1行が長くなるとこれでもかというくらい重くなるのですが、そのようなファイルをメンテナンスする場合用の package。

qiita.com

僕は multi cursor はあまり使わなくて、変数名やメソッド名を書き換えるくらいの作業をする時 auto highlight symbol というマイナーモード を常用しているのだけれど、 multi cursor の利便性を紹介してもらったので一度使ってみようかな。M-x align-regexp と矩形編集で逃げそうだけど...。

github.com

qiita.com

Emacs ユーザーであまりツールバーを使っている人はいないと思うんですけど、メニューバーは elisp からも拡張できるし結構便利。みたいな文脈から tadsan の右クリック拡張の話に。な、なるほど〜。

qiita.com

lyrical.bugyo.tk

自分が elisp 力が低いという話で、Lispの覚え方、みたいな話の時に出てきた気がする。

(setq markdown-fontify-code-blocks-natively t)

Markdown のコードブロックにシンタックスハイライトがつけられる。知らなかった...。

qiita.com

mode line 長くなりすぎ問題。

f:id:motchang:20181210233447p:plain
長い mode line

でも mode line あまり見ないといえば見ない。

qiita.com

github.com

markdown プレビュー系。僕は雑魚なので markdown 書く時だけ AtomVS Code を起動してしまう...。

あとは python のメジャーモードは python.el と python-mode.el の二つある話とかが面白かった。

会場を提供していただいた pixiv さんありがとうございました!

www.pixiv.co.jp