2017年を振り返ってみる。GitHubベースの振り返りは別記事にまとめた。
2017年振り返り(GitHub編)
主な出来事
転職した
人生で初めて転職した。
新卒から6年勤めていた精密機器メーカー子会社の所謂SIerからクラウド会計・人事労務ソフトのWeb系ベンチャーに転職した。
2016年に30歳を迎えたのだが30代をどうやって生きるか考えたとき、平日の大半の時間を占める就業時間中にもっとコードを書くことを選択したかった。
前職最後の仕事がC#のデスクトップアプリ開発だった縁で現在の会社に拾っていただくことができた。
ポジションとしてはデスクトップアプリエンジニアなのだが、クラウド側のAPI部分についても開発に携わらせてもらっている。入社月に二桁万円無駄にする大失敗とかやったりした…
Railsのコードも書いたり、WindowsストアにDesktop Bridgeアプリを公開したり、Xamarin.Macによるデスクトップアプリの開発もすることができた。
ただ、求められているパフォーマンスは全然出せなかった。これに関しては完全に自分のスキルに自惚れがあって、ドメイン知識を利用した既存実装の拡張、あるいはシステムコールなどのコアな知識を要求されたとき、
あまりに役立たずだった。このあたりは新しいことに挑戦するたびに同じ状況になる。なので、「その知識を習得する」などの解決方法も必要なのだが、「最適解を求めるためのアプローチ」や「単純なコーディング速度の向上(によってトライアンドエラー回数を増やす)」という改善も必要になのかなと思っている。
今年を振り返るにあたって、まずGitHubの活動を振り返ってみた。
個々のリポジトリへの記載を一年の活動の振り返りに含めるのも何か違和感があったので、ひとつの記事としてまとめておく。
MacのVisual Studio Code(以下VSCode)を使ってGoのコードの中でSyscallが呼ばれるまでをデバッグで確認したかったが、ステップインを使うと、unexpected fault address...で失敗していた。
第2回Cloud Native Developers JP(cndjp)のハンズオンに参加し、Kubernetes(以下k8s)について勉強してきた。
第1回は最初ということもあり、基本的な用語と、ローカルのk8sクラスター環境でポッドを起動し、スケールさせてみるレベルの内容だった。
Cloud Native Developers JP 第1回勉強会 参加メモ #cndjp1
闇のBashをGoに置き換える技術(nashiox)
https://speakerdeck.com/nashiox/golang-dot-tokyo-number-11
- 怖くて触れないけどなぜか動いているBashスクリプト(10ファイル2128行)をGoに置き換えた。
- データ加工、ダンプ、インポートを行っていたスクリプト。GNU Parallelも使っていたりしたが、そのへんはgroutineで。
- Goならば
os/execによるスクリプト実行やbashライクの書き方を許容しながら少しずつ移管できる。
たしかに
os/execで絡めて段階的にアプローチしていくの良さそう。
Goならわかるシステムプログラミングの写経、練習問題を解くにあたり、Goの軽いCI環境を作った。
TL;DR
自己学習や写経だと、レビューしてもらう(第三者の評価を得る)機会がない。それでも、自分の書いたコードに最低限の品質担保をする。
基本的にPublicリポジトリならば全て無料。
知っているとすぐ出来るけど、知らないとちょっと時間がかかるシリーズ。
TL;DR
Xamarin.MacでC#側で文字入力のイベントを検出する
- その1。
NSTextField.valueへのstringのプロパティをデータバインドする
- その2。
NSTextFieldDelegateを実装したクラスをNSTextField.Delegateに紐付けておく
NStextFieldやNSSecureTextFieldの変更を検知したい。
Xamarin.MacでNSTextFieldやNSSecureTextFieldなどに対する文字列入力イベントを検知し、処理を行う。その1のほうが直感的だしシンプル。
Cloud Native Developers JP(cndjp)のハンズオンに参加し、Kubernetesについて勉強してきた。
クラウド素人の自分でもローカルにクラスター構成を作成、アプリのスケールイン、スケールアウトまで試せたので良かった。
感想
自分は
goplの練習問題や簡単なツールしかGoで作ったことがないので、サービス・アプリケーション構築におけるGoのプラクティスや利用OSSの知見を聞くことが出来て非常に良かった。聞いたOSS、サービスのリソースはだいたい探せたので、復習がてらひとつずつ確認しておきたい。
また、多くの発表者の方がスライドを英語で書かれており、英語弱者の自分としては必要なのは「プログラミング言語」だけではないなと痛感した。
贅沢にもおみやげにGopher Tシャツまで頂いた。Googleさん、Mercariさん、運営のみなさま、Gopherのみなさまありがとうございました。
TL;DR
.NET Standard1.6ベースでNugetパッケージを作っています。GitHubでリリースしたとき(git tagをプッシュしたとき)、自動的に
nuget.org上のパッケージが更新されるようにしました。