Webアプリケーション開発

OVERVIEW

多くのプロジェクトに参画していたため、細かく記述するよりもまとめてやってきたこと出来ることの記述を行います

携わってたプロジェクト(一部)

  • Eメール送信機能部分(Java/Spring boot)
    • 大規模ECサイトだったため、大量のメールが顧客に送信される事になるため、自前での開発となりました。
      • 仕様策定〜テスト
      • 他チーム向けのAPI開発が主な作業となります。
      • I/F仕様策定や他チームからのメール送信依頼の受付~送信(即時、スケジュール)までの開発になります。
  • メールマガジン送信機能開発(Ruby on Rails)
    • Sendgridからメールマガジン送信していましたが、社内SMTPへ変更となり実装を行いました。
      • Rails -> AWS API Gateway -> AWS Lambdaというアーキテクチャで実装はほぼ全て行いました。アーキテクチャは別の方が考えました
  • toB系のSass開発(Golang、Ruby/Ruby on Rails+React)
    • 人材育成を主眼としたSass、業務効率のUPを主眼としたSass(デスクトップアプリで集計したデータを集計、解析、分析するサービス)に携わりました。
      • 仕様策定〜運用・保守
      • フロント/サーバーサイド、インフラ、データ周りなどサービスに必要な開発は全て携わっています。
  • エンジニア向け学習サイト(プロトタイプ)(Java/Spring boot)
    • エンジニアが学習するSassのプロトタイプ開発に携わりました。
      • 設計〜テスト
      • サーバーサイドのAPI開発をほぼ1人でやり切りました。サーバーサイドについてアーキテクチャ選定から行っています。
  • 企業の社内システム開発(Java/Spring boot Java/Spring MVC)
    • 営業チームが使うシステムや製造業の工場で全般的に使うシステムの新規開発や営業チームが使うシステムのリプレースに携わりました。
      • 設計〜テスト
      • 受託とSESでの経験となります。受託の場合はインフラ構築から保守も作業内となっており、基本的に自分の担当となり構築しました。
      • 官公庁、大企業といった要件が厳しい開発も経験があります。

技術面で出来ること・出来ないこと・やってきたこと

  • フロントエンドレンダリング/サーバーサイドレンダリングにおけるフロントエンド/サーバサイド開発
    • GraphQLについては経験がありません。
    • 色んな組み合わせでの経験もあり、技術選定の経験もあります。
    • 特に認証周りは多くの経験があります。OpenIDを使った認証についてもフルスクラッチでの経験が数回あります(ライブラリ使えない環境だったりない時期だったりです)。
      • 企業向けのサイトにて管理画面のセキュリティ強化としてTOTPの導入を要件定義から運用手順の構築まで実施した経験があります。
  • バッチ開発
    • PythonやRailsバッチを使用しての経験があります。
    • ジョブの実行はcronでやることが大半です。Cloud Schedulerは経験がありますが、CIを使ったりツールを使った複雑なジョブフローの構築の経験はありません。
  • インフラ構築
    • AWS/GCPの経験があります。
    • 中小規模の構築がメインとなるため、複雑な構築は経験がありません。
    • IaCについてはAnsible(少し前なのでかなり怪しい)とTerraformの経験があります。
  • 開発環境構築
    • Dockerを使用した開発環境構築の経験が多くあります。
    • ルール作りについても経験があり、Gitや静的解析といった品質面も含めて行うようにしています。
  • データ周り
    • RDBでの経験が一番ありますが、Elastic Search/MongoDBの経験もあります
    • AWSのS3/Athena/Lambdaを使ったデータについての経験もありますが、事情により本番リリースはされませんでした(開発完了までは作業した)。
      • クライアントから定期的に来るデータをLambdaで受け付けてS3に取り込み、Athenaで使うようにして、各種バッチでアプリケーション側で使用するデータに変更するということをしました。
    • Firebaseの経験もあります。個人開発では楽なのと金額的に安いためよく使用しています。Cloud Functions for Firebaseも使用経験があります。
  • CI/CD
    • CircleCI/AWS Codebuildを使ったCI環境構築の経験があります。Githubにバッチ貼ったりも出来ます。
    • SonarQubeを合わせて品質管理も合わせるといったこともしたことがあります。AWS codeguruに関しては経験がありませんが、これは素晴らしいサービスだと思っています。
    • CDに関してはCapistrano(Ruby on Rails)を使用したリリース環境構築の経験があります。
    • リリースに関しては開発者のタイミングでリリースするようにしていたため、コマンドでの実行でのリリースとしていました。
  • iOS課金
    • Apple Storeの課金については複雑な箇所がありますが、要件定義〜運用までご提案可能となっています。
    • 現在多くのデベロッパーが使用しているwebhook ver1やレシートからの課金確認からアップデートを行う必要がありますが(2024年現在Deplicated)、version upに関しての知識もあります。

Webアプリケーション開発で大事にしていること

ビジネスがあり、その実現のためにアプリケーションという物が用意されているため、そのビジネスの本質を考えるようにしています。

また、ブランディングも大事にしています。一度下がった格を取り戻すのは大変なので、自分たちが開発しているものがブランドを棄損していないかは作る前に気にするようにしています。

技術面では、良いコードを書く良いテストを書くというよりは「整理整頓」を常に意識するようにしています。適当に置いたもの(コード)が積み重なると良くないので、常に意識しなければいけないと思っています。

書いている時も気をつけてはいますが、リリース(完成)した後に全体を見てみるとまた違った思いも出てくるので、その点も意識しています。