tech.guitarrapc.cóm

Technical updates

2019年を振り返って

毎年やっている昨年の振り返りをしてみます。

2018年はこれ。

tech.guitarrapc.com

総合

2019年の初めにこう書きました。

会社としては、2019年は作りたいサービスを形にして何本かリリースするため働き方をシフトします。*8 個人は、会社のサービスリリースと収益化です。注力する言語的にはC# / Golang 、ツールはTerraform + Kubernetes + GCP/AWS/Azure + Unityです。

2019年は2018年より、さらに(自他に)求められるレベルが高くなっており、天井知らずを感じつつ楽しみます。

2019年は想定に基づいて働き方をシフトを進めました。 が、想定よりもクライアントとの密着した動きが必要になってしまって、結果そっちにフルコミットしていました。 つまり、サービスリリースのための余力0でそっちに全振り。 個人の目標からは乖離しておりよくない、けど経営計画で予想していた結果の1つで、途中でこっちに振ったので納得はあります。

今年は夏から完全にサーバーサイドに振っていて、Kubernetesでの構築に完全シフトでした。前半はHoloLens、Vue.jsに携わっていました。 サーバーサイド/インフラは、C#/Kunernetesが主で、おもにAWSがほとんどでした。2018年とは全然違う動きになったのですが、私のスキルがそっち側に伸びているので、まぁそんなものかと。一年を通して幾つか感じましたが、Kubernetesむずかし、たのしいのでよしとします。

2019年は、わからないことへの挑戦がかなり多く、知ってることの応用はあまり利かず前提に過ぎない状況をよく感じました。 もともと挑戦が多いのですが、結構苦しんだ感覚があります。

経営

会社としては、OSSは1つだけです。 会社としてメンテするもの、というのを公開していく方針なので来年はもう少し増やしていきたいので、増やせるように努力しよう。 サービスで残るは実装なので、粛々と書きます、考えます。

一年を過ぎたので、税、会計回りも一通りすぎました。 経理、会計が税理士先生のおかげで負荷小さいので、感謝しかないです。 引き続き法に則って粛々と進めたいところ。

弁護士先生とのやり取りを通して、弁護士って法に基づいてうまく振る舞う方なのだなというのは少し面白かったです。 公正ではなく、利益を追求する側の人間なのは、なるほどそういうものかという気づきがありました。

興味深かったのは、中小企業庁の動きでした。 消費税増税で、転嫁拒否に対する法律上問題ある行動の有無に関して調査票が来たのですが、素直にうれしかったです。 弊社のお客様にそういった動きはなくスムーズに移行したのですが、転嫁拒否に対する是正の姿勢を見せてもらえるのは、経営者としてはうれしいものがありました。

プログラミング

2019年は、C# がかなり多かったです。 また、Terraformを普遍的に広く使うことが多かったものの、後半ではPulumiの調査と投入をしていて、AWS CDKよりいい感触でした。 Pulumi dotnet Advent Calendarやってましたが、Pulumiの利用悪くない感じがあります。

Pulumi dotnet Advent Calendar 2019 - Qiita

GitHubコミットは、ほどほどにこんなものでしょう。GitHubじゃないコミットが見えないので、少なく感じますが。

2019年GitHub コミット

なんかCircleCI対応やDockerイメージの公開が想像の倍以上行うことになって、ひたすら必要な部品を作っては組み立ててました。

CSharp

お仕事でやっていたHoloLens + Unityでのお仕事が一通り構築してリリースを迎えられたのはよかったです。

C# はUnityを除き .NET Coreのみでした。後半は、 .NET Core 2.1/2.2 を .NET Core 3.0/3.1に対応とかありましたが、幸いコンテナ化していたので何も問題なく進んでよかった。

Serverlessから一番遠ざかった年だった、というのもたいていのものをECS Faraget/Kubernetes側に振ったというのもあります。 デプロイ、監視を含めた全体の流れからすると、Serverlessを選択しない選択が結構増えました。 自分の会社では選ぶんですが、お手伝い先では選ばないということが結構多かったです。

C# のビルドは、割り切った結果、あんまり頑張らない方向に倒してうまくいっています。 dotnet CLI的には頑張りようが小さいので、そこで外から頑張るよりは頑張らないように済む方向に。 UWPから離れたというのが大きいですが、.NET FrameworkでSDK Styleのcsprojをハンドルできることに気づいたのがよかったです。

シングルバイナリは来ました、案の定CI/CD、コンテナでいい感じでした。 ただ、リフレクションは結構鬼門で、リフレクションするならランタイム込みでビルドしても動作環境にdotnetランタイムは必要。 リフレクション、明らかに使う機会はちょくちょくあるけどアプリの動作環境的には年々厳しい制約になりつつある気がする。

あとシングルバイナリでも .NET CoreのICUはめんどくさいです。Invaliantでない限りは .NET CoreはICUライブラリに依存してグローバリゼーション対応しているので仕方ないのですが。 これはMicrosoft Docsにも載っていますが、実際にコンテナ回りでの動作を組むときに思ったよりツライ。

.NET Core アプリケーション展開 - .NET Core | Microsoft Docs

C# なんか年々難しい度が上がってるので、がんばろ。

CircleCIで感じるんですけど、C# というかdotnet CLIのLinuxでの操作なんか面倒、というか癖強い。

Golang

書くより読むことが多かった。 1つ必要だったのを書き上げましたが、素直だなという側面と書きにくさも感じるのでもうしばらく慣れまで必要そう。

VSCodeで書いててつらかったのでGoland入れました。

自社の言語はGolangを選んでいます。 しばらく自分の言語は二軸になりそう。

PowerShell

クロスプラットフォームで動くPowerShell Coreとは裏腹に、お手伝い先で書く機会はなるべく減らしほぼ0にしていました。 なるべく選択に入らないよう調整していたというのもあります。 代わりにBash、C#を多く選びました。(可能なところならGolangを選択しました)

これはアプリケーションエンジニアが同じものを触るときに、いかに違和感すくなくするかを考慮した結果です。 正確に言うと、アプリケーションエンジニアというよりPowerShellに興味がない人、です。 PowerShellで書くだけで、そこに触れたくないという意識が働くケースをこれまでも多く見ていたので、なるべくその意識を起こさせたくなかった。 案の定、予想していた状況に近づいているので、選択はずれてなかったようです。

個人では書いていて、guitarrapc/ScoopPlaybookguitarrapc/dotfiles-win/setup.ps1で使っています。 dotfiles-winのセットアップは、guitarrapc/dotfiles/setup.shで書いたBashの動作をPowerShellで忠実に再現したものなので、書いてて面白かったです。

PowerShell実践ガイドブックは、おかげ様で第三版まで重版されました。 次の機会があれば、PowerShell 7対応かな。

海外のコミュニティを見ていても、PowerShellではないコミュニティを見ていても、PowerShell 7になってもWindowsがない環境で標準的に使われることは恐らくないのだろうと感じます。 Windowsでは標準的な位置づけでいいのですが。 素直に「組み込みにくい」のは最大のハードルであり続けるのでしょう。

ShellScript

思った通り多かった、多くしました。 macOSだけ挙動の違うコマンドがところどころ出てきてうざいのですが、シカタナイ? もう少しコマンドのシミュレート、変換がいい感じにできないかなぁと思いつつ、粛々と書いています。

インフラ

お手伝いはこれが多かった。 Kubernetes回りを組んでいます、ECSともちょくちょくバトルしていました。

ECSはMutlti Target Groupサポートが来てだいぶんよくなりました。 しかしCode Deployがひたすらツライ、Code Pipelineもアレですが、Code Deployやばい、使いたくない、使ったもののKubernetesにたおす過程で使わないようにした。

KubernetesはClient APIに手を付けていますが、仕様の変更の影響受けやすくて、うーんという感じが。 幸せになる世界はまだ先な感じがすごいある。

Terraform

Terraformは一度組んでおけば、結構使いまわし聞くのでそこはよかったです。 特にTerraform Cloudが来てAtlantisも使わずいい感じで管理できるようになったので、よかったよかった。

0.12はすぐに対応したのですが、なかなかはじめのバグり方が盛大でさすがHashiCorp、引き続き警戒が必要という感じがあります。 とはいえ、Terraform Cloudの動きを見ていても、0.12の後半のアップデートを見ていても少しずつ期待する方向に向いてきた気配もあるのかな。

Pragmatic Terraform on AWSがいい本でした。いくつか気になる内容はあるものの、概ね同意。

Pulumi

Terraform以外の選択肢としてみてた時にちょうどGAしてたので、検証から投入までしました。

結論からいうと使える、けどその言語で書かれているからと言って読めても意味は読めないというのは間違いなくあります。 AWSに限らず、GCPやKubernetesでなんでこういうリソースが必要なのか、こういう組み方が必要なのかはコードで読めても、リソースの意味や制約を使うべきではない言葉なので修正してくださいとできないようにです。

C# は今年GAなので、別State参照が来たらオススメしてもいいかなぁ。 Providerを複数持ってもいいけど、別Stateはほしいかな。 チームで使うには高いので、なんかそこがずっとハードルになりそう。

Terraformから移行もしたのですが、移行するかどうかはPulumiで、その言語で書きたいかに強く依存しそうです。 言語のとっつきにくさが消えるのはめちゃめちゃいいので、価値はあります。

Pulumi、公式ページが最大のリファレンスで特に .NET に関しては全然いないので頑張るしかない。コミュニティの規模はかなり小さいですね。

Kubernetes

ECSとの選択、Kubernetesでの運用を考えた時に、実際にKubernetesでいくぞにするためにずっとやってました(ます)。 小さいチームだからこそ選択するという選択をしたのですが、結果は2020年に出るので引き続き正面から取り組みます。(つまり2019年初とは逆の判断をした)

しかし分散は得意だけど、特定の一台への接続を制御しようとすると工夫を凝らす必要があるので、そこはまだ頑張るしかない感触。 Agonesを今のコンセプトのまま、ほどほどにいい感じで使えるように組んでいます。

比較的HelmよりもKustomizeに振っています。

Kubernetes 完全ガイドが本当に良書でよかったです。

記事

78本、久々にちょっとはかけました。 Pulumi dotnet Advent Calendarで盛った感はあります。

C# が意識して多めです。 お手伝い先ではザクザク書いているのですが、手を動かしつつなので記事にするほどまとめてないというのもあり結構ブログに書こうとまでならないのですね。 2020年も同程度を維持したいです。

ライフスタイル

徐々に改善が見えてきましたが道は長そう。

睡眠時間が年間平均3時間14分と4分伸びました。11月、12月は4時間と伸びているのでちょっとずつ調整しています。 6時間寝るとかなり快適なのは前々からわかっていても達成できていないのですが、少しずつ意識的に週の中頃などに8時間程度寝られないか試みています。

ランチは抜くと夕方ごろに集中力が持たなくなってきたので意識して食べるようにしています。 糖質は意識的に少し差し引きつつ、たんぱく質でおなかに入った感じがあるように。

「個人に依存することはエンジンがかかり遅い」課題はなかなか解消できてないものの、すぐにやらなくても予め開いておくと手を付けやすいので意識的にそうしています。 個人に依存しないことは、Google Calendarでこまめにスケジュールに組むことでうまく維持できているので、どうやら自分に興味がないっぽい。

集中って私は最も大事なことと考えています。 で、見直した結果、椅子に座っててツライと感じるシーンがあったので先日7年ぐらい使ってたエルゴヒューマンを、アーロンチェアリマスタに変えました。 椅子って結構影響あるんですね、アーロンチェアの座り心地があってて結構集中しやすくなった感じがあります。 座り心地がいいというか、座っててつらくない、しっかり前を向ける。

最近は考え方を短いスパンで変化させることを意識させるようにしています。 結果として、数日前と言ってることが全然違っていたりするのですが、それでもいいとみなすようになったのは少し変わったようです。

ゲーム

たまにはゲームのことも。 2020年のFINAL FANTASY7 REMAKEを楽しみにしています。(振り切るのか、考慮するのかが一番の注目として)

スマホ

モンストが好きで結構ずっとやっているのですが、ドラクエウォークが出てからこっちにシフトしました。 全キャラ全職業のレベルが50を超えたので、55の旅をしていて二週目。 冒険者レベルも50になって、お出かけレベルしか残ってないのでそろそろ何かこないかな。

マリオカートは相変わらずの任天堂な施策で、結構興味深く週一ぐらいで開いてはプレイしています。 任天堂のゲーム設計、運営って素直にすごいです。

Nintendo Switch

今年は、Nintendo Switchの利用が多かったです。

ゼルダの伝説夢を見る島は、小さいころにやったゲームでしたがリメイクを楽しみにやりました。2Dをスイッチでどう再構築するかが楽しみで、実際すごかった。 案外覚えててサクッとクリアしてしまったのですが、ハードモードむずかしいのでよいですね。 ただコントローラーのボタン配置は、やはり厳しいものがあって、Yで攻撃はやめてほしい感じがあります。どうしてこうしたんだろう。

Blood Stainedが出たのでやってて案の定面白かったです? バランスが相変わらず壊せるので、終盤に行くほど楽になってしまうのも含めてまぁいいのでは。 結局銃使うべきではない言葉なので修正してくださいだった。(終盤しか使わない)

PS4

ドラクエ11をやり忘れていたのでクリアしました。ドラクエは新しいタイトルほど面白いのでいいですね。一番面白かった。

そういえば私はFF15 が好きなんですが、売り上げ、本数が最も少ないのはゲーム性がどんどん変わってて、プレイヤーが置き去りになってるのかもなぁとドラクエをしていて思いました。(ドラクエは根本が変わってない) 私は新しい体験が好きなので、方針に共感はするのですが。

新サクラ大戦は年末やっていたのですが、二の次なのでまだクリアしていません。3Dになったのはいいとして、戦闘回りがただの無双になってて本当にこれでいいのか? という感じがあります。

DEATH STRANDINGを次にやりたいけど、まずクリアしてから予定。

Steam

Cities: Skylinesをちょこちょこやってました。 楽しいけど、やっぱりシムシティ系なので時間をそこまで費やせない(費やす選択をしない) ので、むずかしい。

2020年は?

C# + Golang + Kubernetes + Firebaseあたりが注力ポイントです。 サービスリリースと収益化をがんばろう。働き方のシフトよりも頑張りポイントのシフトがよさそう。

分からないことたくさんで人生飽きないな。 できることを1つずつ増やしていきます。