Help us understand the problem. What is going on with this article?

2019年俺的技術トレンドを振り返る 〜 上期

今年書いた記事の振り返り。前半戦。

株式会社ピー・アール・オーのアドベントカレンダー2日目です!よろしくお願いいたします!

今年も色々な技術に挑戦いたしました。様々なミドルウェアやフレームワーク、ツールを試した記録をまめにQiitaに上げておりましたので、これらを振り返りつつ2019年の俺的技術トレンドを掘り起こしていきたいと思っております。

1. コンテナ〜 今年は昨年末からのWSL+Docker構築で開幕

今でもストックが止まない記事、WSL+Dockerの環境構築に奮闘した記録1で今年の幕が開けました。
Windowsで、WSL経由で、Linux版のDockerがそのまま動かせる、ということで大興奮でした。
しばらくJava6のエンハンスという"とて〜もレガシー"な案件で失われてしまったコンテナ技術に再入門した瞬間でしたね。そしてChef+Vagrant とは完全にお別れしたのでした。

早速、Docker "ホスト"の管理ツール "Portainer"のインストールをいたしまして2、こちらもいくつかのバージョンをトライ&エラーする、という事態に陥ってます。やはり "WSL2.0" が出る前でしたので色々、不安定だったようです。
で、WSL + Docker は早々に見切りをつけて、軽量 k8s の k3sに挑戦いたしました3。この k3s で本格的にk8sの入門ができたのでよかったですね。ただ、初回はコマンドの打ち間違いでダウンロードに失敗していたため、Minikube4も試してみました。
kubectl コマンドに慣れたのはよかったのですが、やはりノード単体では k8s のメリットが薄くdocker-compose で十分になってしまうので、複数台のk8sノードを揃えないとね…ということでマシンを数台用意していただきました。しかし、本家k8sはそもそもマシンが6台以上無いとダメなので・・・k3sがあってよかった。。。

ちなみに "dockerdのコンテナ" 以外のコンテナも色々試してみたかったので LXD についても試してみました5。LXC は動作も軽くてちょっとお気に入りだったのですが、docker-compose コマンドに相当するもので使いやすい環境がなかったで結局、docker-composeが開発にはいいじゃんと。
そして何より "VSCode Remote Container" の正式版がリリースされて開発環境は VSCode + Docker Container で、という流れが決定的になりました。これが決定打となり、LXDコンテナはお蔵入りとなってしまいました。

そして今年のもう一つのエポックとして4月ごろから案件で実際に GKE を構築するというチャンスに恵まれたため、本物のK8s を構築いたしました。k3sやらMnikubeやらUbuntu専用のmicrok8sも試していたので kubectlは余裕 でした。しかし、GKEというかクラウドのk8sはゼニでリソースを買うということにとても神経を使いましたね。ちょっとのミスが実際に金額にハネる、というとても緊張感のある中で構築作業を行っておりました。ま、GCPのコンソールからWEBのUIでポチポチできるので即座にクラスタ削除ができるので、安心感はあるのですが。。。このあたりの感覚はとても身に沁みましたね。。。とても手作業ではやってられん、ということに。そして導入した "Terraform" でした6

Terraform もなかなか開発途上だし GCP Provider も開発中だし GCP は仕変がアグレッシブだしでなかなか安定しませんでしたが、"クラウドのインフラがコード化できる"というのはとても大きかったですね。まさにインフラの冪等性。なんども、何度でもトライアンドエラーできる。(Cloud SQLはインスタンス名に同じ名前使えないけどね!)
これは Terraform というツール云々ではなく、GCP との戦いでした。(後のTerraform 0.11→0.12のバージョンアップもなかなかしんどかったけど。)

そしてこの GKE で立ち上げたのが Spinnaker でした7。この直後に GKE のサービスとして Spinnaker が追加されたので複雑な気持ちでしたが、再度 Halyard の設定からやるのはとてもじゃないけど無理なので見送りました。何より、GKE のサービスって、Terraform 対応してないんじゃないかな?

2. Firebase と プログラミング言語

レガシー開発から解放された私に待っていたのは "Firebase" での開発というそれまでと180度違う環境での開発となりました。Firebase はサービスの総称で中身はWEBのホスティング、Firestore、Functions などのサービスをワンストップで提供してくれるトータルバックエンドサービス?です。Java6付けの世界から急に「なんだそりゃ?!」な世界に突入いたしましたが、開発環境が Node.js + TypeScript(Angular 7)でまさに「マジすか?!」という状態でした。(Javaの安定した開発環境に慣れると Node.js と npm/node_modulesの環境は不安定でしょうがないですからね。)
そんなわけで、Angularに入門したわけでございます。ただ、ng-cliの使い勝手はなかなか悪く無かったですね8
また、Angular をクライアントとして node.js で動く GraphQL サーバーの Apollo Server を試してみたりもしました9。GraphQL にも本格入門しましたね。

Firebase の周辺技術もなかなか深いのですが、その中でもスマッシュヒットが Headless CMS の Flamelink でした10
Firebaseにコンテンツエディタの機能をSAASとして追加することで自分の Firebase をヘッドレスCMSに出来てしまう、というなかなかメタメタなサービスですね。よく思いついたなぁ。。

また Firestoreを管理するツールの一つとして、Jupyter notebook を使ってみたりもしました11
Firestore についてもいろいろ知見が溜まりました。そして決してゴールなんてないんだ ということもわかりました。
TypeScriptのトランスパイラなしで動くエンジンとして deno を発見いたしましたのでそれも試してみましたね12
確かに TypeScript が"大本命"の一つであることは間違い無いと思います。

TypeScript 以外の言語としては、Julia13を試してみました。これは案件で使ってみたいけど、ついてこれるメンバーは居ないんだろな・・・
また、Angular + Firebase の "ネイティブ化" ということで NativeScript14、Flutter15にもチャレンジしてみました。
Firebase + Angular を軸にいろいろ広がりました。

ちょっと違う軸ですが、Scrapy16にもトライしてみましたね。Jupyter notebook はこれまでローカル使っていたのですが、実はこれ、Microsoft Azure notebook を使ってました。クラウドの Notebook、なかなか悪くないです。

3. ブロックチェーン関連

今年のもう一つのエポックとしては "ブロックチェーン" ですね。巷ではいろいろ話が出てましたが実際の"開発"という面でちゃんと取り組んだのも今年からです。

ブロックチェーンについての棚卸し17から Ethereum での開発18、Ethereum のサイドチェーン Loom での実験19、そして Hyperledger の各種ブロックチェーン(Fabric20、Borrow21、Indy22 )を試してみました。
Hyperledger Borrow は Ethereum のスマートコントラクトを直接、実行できるようにする、というアグレッシブなプロジェクトですのでチャレンジした甲斐がありましたね。FabricのチェーンコードでSolidityが動くってのはわけわからんです。

また Indy はコアがRustでコンセンサスのネットワークが Python という変態構成のブロックチェーンでなかなか苦労しましたが Rust/Cargo にも無事に入門できたので大変良い勉強になりました。

ブロックチェーンの技術はやはり各種技術の最先端が詰まっているので時々は触れてみる必要あり、ですね。

一旦、ここまでといたします!


  1. [2019年1月版]WSL + Ubuntu で Docker が動くっ!動くぞコイツッ!は12月31日〜1月2日にかけて作成されました。ゆく年くる年。 

  2. [2019年1月版]WSL + Ubuntu + Docker で Portainer 意外と動かなくて大変だった。 

  3. 【2019年2月末版】最軽量K8sのk3sを試してみた。【2019年3月版】k3s 再挑戦 k3s は本命です。 

  4. 【2019年3月版】MiniKube で Piping-server。Minikube簡単なんだけど、スタンドアローンじゃねぇ。。。 

  5. 【2019年3月版】Ubuntu18.04でdockerが動くlxcコンテナの作り方と、【2019年4月版】LXC/LXDでホストのディレクトリをコンテナ内にコピーする

  6. 【2019年4月版】Terraform+Spinnakerがよくね!? → 闇が深い。【2019年4月版】Terraform + GKE でのいろいろ小技メモ【2019年6月版】Terraform+Spinnakerがよくね!? → もはや沼。などなど 

  7. 【2019年4月版】docker push -> Spinnaker -> deploy on GKE 

  8. [2019年1月版] angular-cliが神過ぎて涙が溢れているのを止めないで 

  9. 【2019年2月末版】Apollo + Express + Angular で GraphQL Pub/Sub実装 〜 Subscriptionちゃんとね 

  10. 【2019年5月】AngularFire で Flamelink を。 

  11. 【2019年5月版】Firestore のデータメンテって Jupyter notebook (Python3) 使うとめっちゃ楽 

  12. [2019年2月版] deno の使い方 

  13. [2019年2月版] Juliaが1.1になっていたので触ってみるか[2019年2月版] Julia + Jupyterで回帰分析してみる 

  14. 【2019年4月版】NativeScript+Angularで感じた新時代【2019年5月】{N} + ng + Firebase : 準備編 

  15. 【2019年5月】無理やり flutter web を動かしたメモ 

  16. 【2019年5月】Scrapy の自作パイプラインで Firestore に結果を叩き込む【2019年5月】Scrapy の自作パイプラインで Cloud Storage に画像を叩き込む 

  17. 【2019年2月版】"次世代"ぶろっくちぇーんっだって!何(あん)だって?。 

  18. 【2019年4月版】イーサリアムのテストネットで初めてのオリジナルトークンを公開してみる 

  19. 【2019年3月版】LoomSDKのサンプルを動かしてみる 

  20. 【2019年3月版】Hyperledger fabric の EVM を試す。~ Hyperledger Burrow入門 ~【2019年4月版】Solidityでビルドしたバイナリがちゃんと動くかHyperledgerのUTでデバッグしてみる。 

  21. 【2019年3月末版】Hyperledger Burrow ちゃんと入門 

  22. 【2019年3月版】Hyperledger Indy 事始め 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした