0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

長期インターンで学んだことについて

Last updated at Posted at 2024-10-11

はじめに

2024年6月から、大阪のベンチャー企業で週1,2回のペースで開発系のアルバイトに参加している。
これまでにPHP8系への改修プロジェクトに参加し、自動修正ライブラリや公式ドキュメントをしながらPHP7系で動いているサービスをPHP8系に移行させた。現在は、リリースされているサービスに新機能を加えるプロジェクトを中心に業務の一部を担当している。

これまでの業務

① PHPのバージョンアップ(調査・開発)

  • PHP7系で動いているシステムを8系に移行した際にブラウザ上でエラーが発生するため、バージョンを変更しても問題ないようにErrorメッセージとWarningメッセージのデバッグを行なった。
  • 最初はPHPCodeSnifferとPHPCompatibilityを使って、ソースコード内でコーディング基準に違反している箇所を洗い出し、自動修正を試みた。
  • しかし、自動修正された内容を細かくチェックした結果、正しく修正が行われているか不透明であったため、公式ドキュメントを見ながら「廃止される関数」「仕様が変更になる関数」「非推奨になる関数」の3つにグループ分け、それらがソースコード内で使われているか確認する方針に変更した。
  • また、他のプロジェクトの改修作業にもコマンド等を再利用できるよう、調査記録をチケットに書き残したり、git grepコマンドを使ってソースコード内で使われている関数のうち、変更がある関数を洗い出せるよう.shファイルを作成した。

② 部活MaaS デバッグ(開発)

  • 特定の条件下でDBエラーが発生するバグが見つかったため、ソースコードを修正した。
  • 具体的には、2日前の日付で配車予約するとDBエラーが発生してしまうという内容で、原因は予約idが空であるにも関わらずAPI側がDBに配車予約情報を登録しようとしていたためエラーが起こっていた。
  • 当然、今日より前の日付で予約できない仕様になっているため、API側から送られるレスポンスオブジェクト(res)にorder_idという配車予約情報の一部があるかないかで判定し、order_idが存在しなければDBにデータを送信しないようif文で分岐させた。resにはgo、backという行きと帰りの予約情報が含まれる配列のなかに、order_idをはじめとする配車予約情報が入っていた。
  • 工夫したことは、if文を2回使わずに実装するために、配列の先頭だけをチェックすることで1回のforループで判定できるようにしたこと。特にresオブジェクトのデータは膨大であったため、2回もループ処理を行うとメモリを消費してしまう。
  • 最終的に4つのテストケースで正しい挙動になっているか確認した。
行きの予約 帰りの予約
×
×
× ×

③ 部活MaaS ユーザー画面(開発)

  • 2台の車両が同じタブレットを使っていて、ユーザー画面で車両の位置情報を取得したときにどっちの車両かわからないという課題があった。
  • 例えば、車両Aを予約していたユーザーが車両位置情報を検索したときに、全然関係ないもう一つの車両Bが表示されどっちがどっちかわからないという状態だった。
  • そのため、ユーザー画面は次のような仕様に変更した。まず、ユーザーが車両の位置情報を取得したときにuuidをlocalStrageに保持する。その後、APIリクエストを送信する関数でlocalStrageからuuidを取得し、API側に送信するようにした。私はこのフロント部分を担当した。
  • 最終的にDBにuuidカラムを追加して、該当する送迎車両のみを表示するようにした。API側の処理とDBについては社員の方が対応した。

④ 決済システムの導入(調査)

  • お客様から、チャットボットのサービスに決済システムを導入したいという依頼があったとのことで「安く、簡単に」導入するという要件のもと、決済システムを提供しているSaaSを調査した。

  • 具体的には、チャットボットとのやり取りが最初の5分間は無料、5分間を超えると60分または120分のチケットを購入することを求められるような仕様にしたいとのことだった。

  • 最終的にStripeを導入することを提案し、導入までの流れについてWordにまとめてクライアントに提出した。

  • Stripeに決めた理由は、APIを使った開発もノーコード・ローコードでの導入もどちらも対応していたところが決め手となった。 価格的にも他のSaaSと変わらなかった。

  • また、公式ドキュメントも充実していて、決済システムの導入に関しては幅広いニーズに対応しているところが魅力的だった。

  • ECサイトであれば、BASEやSquareもいいかもしれない。


⑤ リリース前動的テスト(テスト)

  • Excelシートのチェックリストに従って動的テストを行なった。
  • 地味な作業かつ一日中動的テストを行なっていたためしんどかったが、エンドユーザーが目にする部分なので、責任がある仕事だと認識し、モチベーションをうまく維持しながら取り組んだ。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?