2018 年振り返り
2018 年も終わるので、今年 1 年を振り返る。 結構コミットしてたんだなぁ。
仕事
AWS、サーバ保守運用、Docker、サーバサイドアプリ開発(go, Node.js, bash)、インフラ整備、インフラ勉強会など9割くらいインフラ、バックエンドの仕事だった。
AWS
EC2, RDS, VPC, ELBなど基本となるサービスは一通り仕事で触れた。 VPC, Subnet, DNSなどネットワーク周りは今年だいぶ理解が深まったと思う(それでも微々たるものだけど)。
Docker
ローカル開発環境としてdockerを用意した。 docker, docker-composeなどを使ってローカルで何か試したり、というのが気軽にできるようになった。 気軽に壊せる環境で、何度でも作り直せるからすごく便利。これからも使っていきたい。
docuiというツールがすごく便利。docker-composeを使うほどでもない場合は重宝してる。
サーバサイド開発
Go
シンプルなアプリを。Winで開発しようとするとsyslogパッケージがなくてコンパイルができないという事象に遭遇して、 docker内でコンパイルして実行する、というのをやったりした。 くよく考えればコンパイルだけならWindowsでも対象OSを指定すればできていたな、と今では思う。
nodejs
スクレイピングアプリを書いた。自分の想像してた以上にNode.jsの世界は闇が深かった。 多彩な書き方が可能すぎて他の人のコードを読むのが大変だったことをよく覚えてる ただnpmの数は半端ないようで、探せばだいたい何でもあるというくらい豊富であることは素晴らしいと思った。 とにかくすぐに開発して動かしたい、というのならありな選択肢だと思った。僕はやりたくないけれど。
bash
前述の2つのアプリをラッピングする用途で書くくらい。 でもシェルは「ラッピングする用途で効果を発揮する」ということを肌で実感できたので良かった。
それと、意外とシェルは読めない人が多いということもわかった。 あまり特殊な書き方をすると読めない人にはつらいだろうな、と思ったのでシンプルに書くことを意識しようと思った。
以下のツールに最低限通すくらいはやっていこうと思う。
インフラ整備
もともとnodejsアプリ開発要員として参加したけれど、いつの間にかインフラ側も担当するようになった。
開発初期から参加できて、本番リリースにも立ち会えたので、僕の中で一番思い出深い。 強いアプリエンジニアの方とも一緒に仕事ができたという点でも思い出深い。 以下のことをやった。
- dockerを使ってなかったのでdocker導入
- Linuxのお作法にそったアプリ、ログなどの配置構成に修正した
- ログ設計
- log4jsモジュールでアプリディレクトリ配下に出していたnodejsアプリにposixモジュールを導入してsyslog経由で/var/log配下にログ出力してlogrotateできるようにした
- 厳密に設計を依頼されてやったわけではないが、事実上のログ設計だったと思う
- rsyslog, logrotate使い方の理解が深まった
- リリースフローを考えたり、デプロイスクリプトを作成したり
広く万遍なくインフラに関われたので、すごくインフラ理解に繋がった。 今年一番成長できた要素だと思う。
インフラ勉強会
Discordのチャンネルに参加した。これを教えてもらえたのはすごく自分のためになった。 社外のインフラの方はこういうことを勉強してるんだな、という刺激にもなった。
一大イベント
インフラエンジニアの方の話
すでに退職されてしまいましたが、あるプロジェクトでインフラエンジニアの方と一緒に仕事をしたときの経験が自分の志向に多大な影響を与えた。
アプリの開発を裏から支える、ほとんどユーザからは見えないけれど、 開発者には確かに必要なインフラエンジニアとしての働き方がある、というのを間近で見られたのがすごく良かった。 もともとはアプリ開発がしたくて入社したけれど、志向が完全にインフラ側にシフトしたきっかけ。 おかげで現職ではインフラ系の仕事をふってもらえたりしてる。
転職、退職の話
親しい間柄の方や尊敬している方が退職されたりがあった。
転職、退職された方の話を聞いたりすると、他の会社はどうなのか、などがとても気になる。 まだ決心してるわけではないが、気持ちが揺らいでいることは確か。 とはいえ、現職に後1年もいないだろうなぁとは漠然と思っている。 何がきっかけになるか、だけだと思う。
OSS にコミット
すごく微々たる内容ですが、自分にとっては大きな一歩になったもの。
たった一行の修正でしたが、自分がOSSに貢献できた。
勉強
Webアプリ構築
プライベートでAWSアカウントを取得して、1からEC2を立てて外部から接続できるようにしてWebページを表示できるようにした。
単純にHTMLを取得するだけ、ではなくきちんとバックエンドのアプリがHTMLを随時更新するなど、他のミドルウェアとあえて連携するようにしたりと、いろいろ頑張った。 踏み台サーバ、Webサーバを用意して、運用、リリース、セキュリティなども可能な限り意識したりと、なかなか楽しめた。 セキュリティを考える必要がでてTCP/IPの勉強もしたりした。 大学のときもっと真面目にやっとけばよかった…。
AWSをどういうふうに使うのか?がざっくりイメージできるようになったので、やはりやってよかった。
LPIC
1回受験して落とした。 どうも机上の勉強は苦手で、システムアーキテクチャ周りが苦手。実務でも全然さわらないし。 とはいえ、やはりインフラをやるなら取っておきたいので、諦めたわけではない。
Go
メインで使ってる+勉強中の言語。 ちょいちょい冗長で書くのがダルイけれど、だいたい誰でもすぐ読めるようになるのが魅力で勉強中。 OSSが豊富なのにも結構関係が深そう。 Googleの標準パッケージのソースが読めるのも関係が深そう。
クロスコンパイルがメチャクチャ簡単にできるのが感動で未だに離れられない。 CLIをつくるのが趣味なので、クロスコンパイル+1バイナリの魅力は強い。 たとえコードが多少冗長でも、我慢する理由になる。 エディタも選べるのが嬉しい。
最終的には情報量、読みやすさ、それなりの書きやすさ、ライブラリの豊富さ、実装に悩むことの少なさなどのいろんな要素でGoに戻ってきてしまう。 いわゆるfilter, mapみたいなのとかはないけれど、探して公式関数がないならすぐに実装に移ろう、というスピード感はよい。 あと大体悩んだことはみんな悩んでるので、実装例がすぐ見つかる。 ただファイル生成関数がなかったのは驚いたが…。 冗長だけどよく書くものは、Vimのスニペットにしてるので、実装速度は対して気にならない。
Clojure
何がきっかけで知ったのか全く覚えてないのですが、突然勉強しはじめた。 すごく抽象度の高いコードが書けて、1つの関数が色んな場面で使いまわせてと、車輪の再開発が全然発生しない。 書いていて楽しい。
色々楽しくて触ってるけれど、JVM言語なので起動が遅くてつらい(CLIに向かない)。 Emacs + CIDERが最強すぎてエディタを選べなくて辛い (vimmerのため)。
Nim
Python風にかけてコンパイルできて単一バイナリが作れるのに惹かれてちょいちょい勉強中。 それなりに読みやすくて書いていて楽しい。 が、覚えることは多く、Goほどは読みやすくない。 多彩な書き方ができるという点ではPythonよりもRubyっぽい。 コード行数はかなり短くなる(Goの半分くらい?)。
まだ安定版がなくて残念。 そこまでまだ普及してないのが残念。 ドキュメント不足感がある。 公式のモジュールリファレンスにIFだけで使い方載ってないとか結構ある。 クロスコンパイルできるけれど、Goほどクロスコンパイル簡単でないのが残念。 LinuxからMac向けにコンパイルするのがしんどい。 エディタで実用的なのにVSCodeくらいしかないのが辛い(vimmerのため)。
私生活
- 関東にきて2年目になる
- 今まで避けてた電子決済(クレカとか)とかつかいはじめた
- 開発熱が激減した
- 開発環境
- https://github.com/jiro4989/dotfiles
- [zsh]を使うようになった
- vimの設定ファイル構成をきれいにしたり
- ゲーム
- どうも、ゲームをやろうという意欲が最近でない
- switch買った
- 仕事がしんどくて衝動買い
- オクトパストラベラー
- オルベリク編の最初のボスを倒して満足してから触ってない(2h)
- スプラトゥーン2
- 30分で飽きた
- 対人ゲームは合わない
- PS4買った
- モンハン4
- でかい島みたいな龍をしりぞけてから起動してない
- 作業させられてる感が強い
- もうほこりかぶってる
- EDF5にハマった
- モンハン4
ブログ
はてなブログ→github.io→Scrapboxと移ってきた。
イラスト
配布専用のプロジェクトを作った。
液晶タブレットの代わりにMedia Pad M5 Proを買った。 十分実用できるレベルだと思う。
Androidを買い替えた(Android8)。
来年の目標
ひきつづきインフラの経験を積む+学習。 Goの理解をもっと深める。 もっとOSS活動に挑戦する。