My External Storage

Dec 30, 2017 - 14 minute read - Comments - poem

2017年振り返り

2017年を振り返ってみる。GitHubベースの振り返りは別記事にまとめた。

2017年振り返り(GitHub編)

主な出来事

転職した

人生で初めて転職した。
新卒から6年勤めていた精密機器メーカー子会社の所謂SIerからクラウド会計・人事労務ソフトのWeb系ベンチャーに転職した。
2016年に30歳を迎えたのだが30代をどうやって生きるか考えたとき、平日の大半の時間を占める就業時間中にもっとコードを書くことを選択したかった。
前職最後の仕事がC#のデスクトップアプリ開発だった縁で現在の会社に拾っていただくことができた。
ポジションとしてはデスクトップアプリエンジニアなのだが、クラウド側のAPI部分についても開発に携わらせてもらっている。入社月に二桁万円無駄にする大失敗とかやったりした…
Railsのコードも書いたり、WindowsストアにDesktop Bridgeアプリを公開したり、Xamarin.Macによるデスクトップアプリの開発もすることができた。
ただ、求められているパフォーマンスは全然出せなかった。これに関しては完全に自分のスキルに自惚れがあって、ドメイン知識を利用した既存実装の拡張、あるいはシステムコールなどのコアな知識を要求されたとき、 あまりに役立たずだった。このあたりは新しいことに挑戦するたびに同じ状況になる。なので、「その知識を習得する」などの解決方法も必要なのだが、「最適解を求めるためのアプローチ」や「単純なコーディング速度の向上(によってトライアンドエラー回数を増やす)」という改善も必要になのかなと思っている。

OSS活動をちゃんとやり始めた。

https://www.nuget.org/packages/budougumi0617.Testable
エンジニアとしてのPublicな活動を増やしていきたいと思い、OSSライブラリを作った。 来年はGoのOSSをいくつか公開したい。今業務ではGoを書けていないので、もっと自分でGoを書く時間を増やしたい。写経だとどうしても「ハマり」に遭遇したり、「設計」の経験値を貯められない。

https://github.com/golang/dep/pull/1281

また、タイポ修正くらいしか出来ていないのだが、OSSにもプルリクを送り始めた。golang以下のリポジトリにマージされたのはかなり嬉しかった。 来年はちゃんとコードの修正でプルリク作りたい。

ブログを書き始めた

もともとTipsはQiitaに投稿していたが、6月からは自分のブログに投稿することにして、このブログを作った(コミット量稼ぎも兼ねている)
18記事なので、一月平均3記事程度だろうか。まだまだ全然少ない。「来年について」に後述するが、ここはもっとアウトプットを増やしていきたい。

オンライン勉強会(AOSN読書会)に参加し始めた

前職のつながりでAOSN読書会という週一開催のオンライン勉強会に参加し始めた。 読書会では、「プログラミングElixir」、「人月の神話」、「現場で役立つシステム設計の原則」を読んでいる。 読書会に参加することで独りで読書するときと違い以下のメリットを得ている。

  • 同じ練習問題に対する異なる実装パターンを解説付きで知ることができる。
  • 職種・職場が異なるメンバーと言語や技術についてディスカッションできる
  • 自分はあまり勉強癖がないので、強制的な勉強する時間を作りたかった

今年から初めてスクリプト言語や関数型言語プログラミングに挑戦しているので、他の人に教えてもらいながらElixirの勉強が出来るのは心強い。

その他のプライベート

  • 日記を書くようになった
    • 手帳を買って日記を手書きするようになった。まとめて書くこともあるが一応続いている。今年はかなり結婚式があっていろいろ手書きするようもあったがこれで助かった気もする。
  • さすがに30代になってどんぶり勘定はまずいかなと思って家計簿つけ始めた
    • 某MFを使っている。スタバカードなんかも連携できるので良い。会計ソフトの会社に入って銀行のログイン情報とかをクラウドサービスに入力する抵抗感が薄れたのもある。もっと早くやればよかった
  • 投資信託を始めた
    • 素人はインデックスファンド一択で良いのかなと思った。毎月決算型で毎月おこづかい!と思ったらそれがかなり足を引っ張った。
  • ちょっとした賭け事ってレベルで5,000円分くらい仮想通貨もしてみた
    • 心臓に悪い。夏くらいにビットコイン買ってすぐ放流した。たらればを言うと放流しなければ今3倍くらいになってるから恐ろしい。ボロ儲けはしていないけど損はしていないから運が良かった。
  • 冬山登山(キャンプ)に初挑戦した
    • 3月初旬に霞沢岳(2,546m)に登った。25mロープで直滑降したり、12本爪アイゼンとピッケルで雪壁登ったり、本当に辛かった。指先が凍傷になって4月はずっとキーボードの感触が無かった。降りた直後は酸素濃度が充分なだけでエンドルフィン出ていた。でもこの経験があったから今年はがんばれた(これ以上辛いことは当然ない)。
  • ボルダリング部に入部してボルダリングシューズ買った
    • 前からちょくちょくやっていたが、新しい会社にボルダリング部があったので毎週通っている。しっかり運動になっているし、課題クリアで一定の成功体験を定期的に得られるのも良い。
  • 大学時代の友人との月例の集まりに顔をだすようになった。
    • 月イチで新宿で遊んでいる。転職して人間関係が新しくなったのあり、学生時代の友人関係の大事さを改めて感じている。(と思っていた矢先年末の旅行ドタキャンしてしまって今年一番凹んでいる)

今年触った技術

Ruby + Ruby On Rails

自分にとっての初めてのスクリプト言語というかWebアプリ開発。言語知識もドメイン知識がないので、ひたすらbinding.pry頼りだった。フロントエンドはまだ全然わかっていない。REPLからのアプローチに馴染みがなかったので、もうちょっとこの辺理解していきたい。

自分で書いた関連記事

.NET Standard

https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard

今までなんとなく触っていたが、.NETの規格の違いを学び、上述したOSSは実際に.NET1.6で実装してみた。リフレクション周りなどはサポートが遅いらしいので、.NET1.3では実装が難しかった。 .NET2.0になるとマルチプラットフォームでSystem.IO系のクラスもほぼフルサポートになっていたりかなりの汎用性になっている。.NET Coreなどで錯綜していたときもあったみたいだけど、これで落ち着くのかな?ちなみに.NET API ブラウザーを使うとどのメソッドがサポートされているかわかる。

自分で書いた関連記事

デスクトップブリッジ

https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-root

WPFアプリをUWPアプリにしてWindowsストアに公開した。Windowsストアに公開できるUWPアプリはアプリ外に副作用を起こさないことをかなり厳密に要求されるため、 既存アプリの変換にはだいぶ苦労した。Windows10Sでのテストが審査フローに入った瞬間審査に落ちるようになってかなり焦ったこともあったが、なんとか公開できた。 アプリの実装といいうより、審査に必要な情報や、Windowsのセキュリティについての知識が身についた。

Xamarin.Mac

https://developer.xamarin.com/guides/mac/

WPFアプリを流用してMacのデスクトップアプリを作った。使い慣れた言語と既存実装の流用で別プラットフォームに移植できるのはやはり強い。Storyboardも初めてちゃんと使った。
WindowsとMacのOS仕様の違いによるXML署名の差分実装をする必要があったのだが、自分では解決することができなかった。コア技術部分にmonoのバグがあって頓挫しそうなことがあったが、チームメンバーに強引に解決してもらった。monoを4.8から5.2にしたら動くようになった機能もあった。 チームとしては解決できたのだが、このへんの課題を自分で解決できなかったことに自分のスキル不足を痛感した。
Xamarin.Macはまだあまり事例などが少なかったり、monoフレームワークのバージョンが上がるまでWindows上で実行したときと結果が異なったりという苦労もあったが、
転職早々非常にアグレッシブなテーマにアサインしてもらうことが出来て非常に良い経験になった。

自分で書いた関連記事

vim-go

https://github.com/fatih/vim-go

Atom、VSCode、GolandとGoのエディタを乗り換えてきていたが、Golandの無償期間も終わったのでvimに乗り換えることにした。あまりJetBrain系のキーボードショートカットに慣れていなかったり、前職でC/C++を書いていたときずっとVimだったからというのもある。:termminalコマンドも実装されたし、(少なくとも)趣味で書くレベルのコードサイズならばVimでよいかなと思っている。なおデバッグするときは普通にVSCode開く()

Kubernetes

クラウド技術も覚えたいなーと思って勉強会に参加しはじめた。まだ始めたばかりなので基本用語とkubectlのコマンドをいくつか覚えられたかなーというレベル。

自分で書いた関連記事

来年やりたいこと

来年はもっとアウトプットを意識して活動をしていきたい。

自分のOSSをもっと作る

プログラミングの生産性を手に入れるにはコーディング量を増やすしかないという根性論派なのでもっとコード書きたい。ショートカット/スニペットを手癖にしたり、ハマりを経験・乗り越えるにはひたすらコーディングするしかないと思っている。 自分の興味はやはりGoなので、GoのAPIクライアントがないサービスを見つけてライブラリ書いてみる所存。APIクライアントはある程度の要求仕様(実装すべきREST)が最初から決まっているので、始めやすい。

gRPCの知識を身につける

社内アーキテクチャのgRPC化が始まっているのと、Go界隈でよく聞くので、習得しておきたい。これはすぐやる。

GoとGCPでWebアプリを作る

ロギングなり、DBなり、API設計を一通り経験するにはWebアプリの実装をする必要があると思っている。 先日GCPの無償期間を有効化したので、来年使い倒したい。GAEつかったあとGKEに使ってみることになるのかな…? 目標レベルなので、具体的な案はまだない。gRPCは使う。

クラウド・コンテナ技術の知識を身につける

自分も「クラウド上でどのようにサービスを動かすのか」という観点の知識を得たい。他人が用意したDockerfileやマニフェストを動かすだけじゃなくて自分でクラウドデザインを経験したい。

データベースの知識を身につける

チームのパフォーマンス改善系のランチコーディングに参加しているのだが、全然付いていてけない。最新技術だけじゃなくて基礎もしっかり押さえないといけない。キリン本(?)買ったけど読めていないということろもある。

朝の学習時間をもっと確保・習慣化する

自分への投資:継続した学習 [プログラマー現役続行]

ちょっと残業したり、クタクタだとすぐダレてしまうので、自分は朝に時間を確保しないと勉強できないなと痛感している。 12月は2時間弱くらい朝活くらいしていたのだが、詰まったり、文字起こしする時間を考えると3時間程度あるのが理想なのかなと思っている。 自分のチームは朝10時勤務開始(他のエンジニアは11時が多い)なので7時くらいから勉強始めるのを目標にしたい。

ブログをもっと更新する

アウトプット駆動学習を習慣化する
「1日30分」を続けなさい!Kindle版: 人生勝利の勉強法55

今年一番影響を受けたブログかもしれない。自分には圧倒的に才能というかセンスがないので、時間で解決するしかない。 時間を費やすには習慣化するしかない。今まで自分は「何かしらググった結果から差分を見つけた時」じゃないと自分でブログ記事にしなかった。来年は初歩的なことでもどんどん書いていこうと思う。 コーディングの生産性もそうだが、ブログや週報などの文書の生産性にも不足を感じているので、その訓練という意味でもある。 また、後述するように読み終わってない本が多かったり、「Done」力が弱いので、なにかしらアウトプットというデッドラインを敷いて勉強していきたい。

2017年のまとめ(KPT)

Keep

  • 初めて転職した
    • 転職がきっかけでWBSデビューしたりもした
  • Destop Bridgeアプリを作成し、Windowsストアに公開した。
  • Xamarin.Macアプリを作成した
  • 自作OSSを公開した。
  • golang/depなどに自分の修正がマージされた
  • 6月から毎日コミットできた。
  • 日記を書くことと朝活を習慣化できた。

Problem

  • OSSにコーディングでプルリク出せるレベルではない
  • 勉強時間の確保(習慣化)が出来ていない
  • 生産性をもっと上げたい。
  • 読み終わってない本が多い。
  • 朝活時間が足りない

Try

  • もっとコードでOSSに貢献する
  • 自分のOSSをもっと作る
  • GoとGCPでWebアプリを作る
  • クラウド・コンテナ技術の知識を身につける
  • 朝の学習時間をもっと確保・習慣化する
  • ブログをもっと更新する

2017年の記録

以下、勉強会や読書の記録。

参加した技術イベント

とくに意識はしていなかったが、ほとんどGoのイベントばかりだった。 冬からは意識してブログにレポートを残すことに決めた。ブログを書くまでがイベント参加。転職直後のキャッチアップを言い訳に控えていた時期も多かったので、来年はもっと参加していこうと思う。

2017年に読んだ書籍

.NET系の設計やアーキテクチャへの言及は流石MS本という内容で非常に勉強になった。そんなにC#のサンプルコードも難しくないので、C#使わない人でも読めると思う。 また、業務で使うということで、RubyRuby On Railsの本を一通り読んだ。 書評を全然書いていなかったので、本に関しても来年は読後のまとめを作る。正直春先に読んだ本はだいぶ記憶がおぼろげだ…

2017年に読み終わらなかった書籍

中途半端に読んでいる本が多いので、「読了するまで次の本は読まない」という制限が必要かもしれない。 あと、これの倍以上「積読」があるので読まないといけない。

関連記事