yosemite's blog

About technology, books, diary

2019 年の振り返り

f:id:yosemite4432:20191231114733p:plain

はじめに

今年もあと数時間だというところなので、1 年を振り返ってみようと思います。

BtoC アプリケーションの開発・運用

技術スタック

担当したこと

  • 開発
    • HTML/CSS を使って静的な画面、JavaScript で動的な動作を描画。
    • インタプリタ型言語である PHP による初めてのサーバサイド開発。Laravel フレームワーク、具体的には ORM Eloquent を活用したデータ処理の実装や独自のルールを実装できるカスタムバリデーションなどを実装。
  • 運用
    • Git/GitHub の文化改善。具体的には、インシデントを防ぐための GitHub のブランチ保護設定の導入やそれに対するルール作り。また、ソースコードのレビューする文化はあったもののプロジェクト内で完結していたものをプロジェクト跨いで行うことで、メンバーのスキル向上やコミュニケーションの活発化、ビジネスロジックの俗人化を避ける動きが取れた。
    • CircleCI の利用して PHP コードのリントなどを行なった。ただ、テストコードを書けていなかったので、デプロイの自動化には至らず。
  • マネジメント
    • アジャイル開発手法の導入でカンバン手法を取り入れていたので、チケットの優先度を事業部の擦り合わせたり、こちらから提案したり、密にコミュニケーションを取りながら行なっていた。また、社内でアジャイルの勉強会に参加したり、業務外で アジャイルサムライ を読んでメンバーにフィードバックしたりなど行った。
    • 業務委託やインターンにタスクを渡したり、それに対して進捗を管理したりなどプロジェクトマネージャ的な動きもしていた。

学んだこと・反省

  • 学習・経験したことない言語の現場に入ることは割ときついことを思い知る。ただ MVC の仕組みは Rails の経験より、 Laravel の理解はすんなりできた。(もう少し深いところまで学習したい。)
  • DB については論理設計・物理設計や正規化、SQL、インデックスなど RDBMS に関する理解が深められたし、経験が積めた。
  • 途中からこのプロジェクトに入ったこともあり、開発環境が整備されていなかった。実体験として苦労したことにより、コンテナ化やデプロイの効率化などに課題を持つことができた。

toB 業務系システム開発

技術スタック

  • 言語
  • データベース:DynamoDB, S3
  • インフラ:Docker, AWS( ECS, Lambda, CloudWatch, API Gateway ), Terraform
  • CI/CD:CircleCI

担当したこと

  • 設計(のお手伝い・レビュー)
    • カッコで書いているようにメインで担当していたわけではない。スタンスとしては「こんな思想の元設計する」ということを業務をこなす中で教えてもらった。個人的には、Web API についての本を読んでまとめたりしてベストプラクティスを叩き込んだ。
  • 開発
    • 静的型付け言語の Go の採用、またしても初めての言語。アーキテクチャもモダンで Lambda 関数で実装するサーバレスアプリケーションDynamoDB を利用した NoSQL でのデータ管理ESC Task を使った cron ライクなバッチアプリケーション
    • Go は以前使っていた PHP とは結構異なる点が多く、スライスや構造体など理解に苦しみながらも業務外で勉強しつつ、仕事ではペアプロしたりという期間だった。

学んだこと・反省

  • Go が好きになったし、「どんなものを作る際にこれは便利なんだろう?」と考えることが楽しかった(言語ごとで向き不向きを考えて、それに合わせて技術選定すると言うのを今後やりたい)。
  • テストコードを書いて頑強なシステムにできたことで、精神的にも自信を持てたし、追加開発も楽だということを身を以て知ることができた。
  • AWS のマネージドサービスを利用しての開発することで、運用をかなり楽にできることができることを体験した。( ただ、ECS でバッチを運用する上で不具合が発生したりしたので、事前調査がもう少し技術選定に時間をかけても良かったと思う。 )

SaaS 向けのラッパー

技術スタック

担当したこと

  • 設計
    • 社内のシステムの多くが SaaS に依存した形になっており、API のアクセスを必要とする状況だったので、それをラップするようなパッケージなりAPI があったら嬉しいんじゃね?みたいな感じで始まったプロジェクト。
    • Go 言語で SaaS を経由する時のためにはパッケージを go get 、PHPRuby などの他の言語から経由する時のために API を用意する構成。
    • 1 つ前のプロジェクトと同じチームでだいたい役割も同じ。
  • 開発
    • 引き続き Go での開発となり、前回からだと幾分書けるようになっていたので、任せてもらえる範囲も大きくなった。

学んだこと・反省

  • 社内のシステム構成を大きく左右するようなプロジェクトにアサインされたのは大きな経験になったと思う。責任範囲も大きく、インフラ構成からしっかりと設計していないといけないので考慮することが多かった。

おわりに

今年の振り返りを活かして年明けには来年の頑張りたいことについても書いていけたらなと思います。
最後まで見てくださりありがとうございました。

それじゃ良いお年を🙋‍♂️