エンジニアとして常に最新技術を追い求めながら、海外でもやっていけるスキルを身につけたい。
もともと英語が得意であることや家族と海外に移住することが夢の1つであるから。
本プロジェクトの開発目的としては、ネットワークエンジニアの方々の運用業務効率化のための社内ツールの開発です。開発メンバーは、3〜4名で私の担当としては、フロントエンドメインで時々バックエンドも担当するといったポジションで参画しました。
フロントエンド側として作成する画面としては1画面のみで、ユーザーからの入力値をAPI側へ受け渡したり、非同期通信(ajax)を使用してNW機器検索をさせる機能の実装を行いました。
元々バックエンドメインの開発経験しかなく、慣れないフロントエンド側の開発だったためか非同期通信の実装で扱ったJavascript(JQuery)の知見があまりなく、同じ開発メンバーにもフロントエンドに詳しい人がいなく、1からキャッチアップしながらの開発だったため苦労しました。
慣れないフロントエンド側についてキャッチアップしながらの開発で私はとにかく細かいレイアウトのデザインだったり配置に関しては、後回しにしてとにかく動くものを完成させることを意識しながら取り組みました。
本プロジェクトでは、まず前提としてグループ会社間でお互いのリソースを上手く活用し新規開発に活かしていける共通基盤化していくことが目的であり、今回私が携わることになったことは既存のWebサービスであるキーワード検索ツールの主機能の共通基盤化です。
ソースコードをAPI単位で分割していき、単体実行時に意図した値返ってくるようする。分割したAPIごとの仕様についてエクセルにまとめ、それに伴う発表用資料も作成。また、AWS環境下で誰でも気楽にAPIを実行可能な環境を構築するといった作業内容です。
今回のプロジェクトを通して私は、大変多くのことを学ぶことができました。既存のサービスのソースのAPI1つ1つを切り出して、単体実行させる為にどの機能が必要でどこを削ぎ落としていいのか?意識しながら作業をしていくうちに自分の知らなかった裏側の仕組みだったり、実は思ってたよりもいろんなサーバーが複雑に絡みあってた構造だったことを今回のAPI分割作業を通して理解することができ、初めてAWSを用いての環境構築をさせてもらい
インフラやネットワーク側の知識や動きを理解することができたのが何よりの収穫でした。
また、本プロジェクトに関しては都合上、最後までの完遂することができませんでしたが、とてもいい経験になりました。
本プロジェクトである社内用メンテナンスツールとは、既存のWebサービスで一部手作業を行ってデータの編集や登録をしなくてはいけない箇所を効率化させるための業務効率化ツールです。本プロジェクトのメンバーは私とプロバー社員の方含め2名体制で開発全般は私が担当しました。
今回のユーザーはあくまで社内の方々向けの社内用メンテナンスツールということでUI/UXに関しては、最低限のレベルのもの、実装する機能数に関しても少ない。そこで社内のほとんどのプロダクトがPythonを使用していることから軽量なFlaskでの開発を採用し、DBには使い慣れているMySQLに決定しました。
また、画面側に関しては、フロントエンド担当の方に開発をお願いすることにしました。
開発中に工夫した点についてはユーザーが社内のメンバーであることを意識し、できるだけ少ない画面数で画面の移動を最小源にするよう実装したり、既存の業務フローを詳細に聞き込みをし『こうゆう機能があれば便利』といった機能をその都度つけ足したりとできるだけユーザーにストレスのないもの開発しようと心掛けました。
具体的に追加した機能としては、「検索機能」、「csvエクスポート機能」「csvインポート機能」等です。ビッグデータを元にデータの登録及び編集を行うことからデータの検索機能があった方がユーザーにとって便利であったり、一度に大量のデータを登録する時はあらかじめ用意しておいたcsvファイルをアップロードすることで一括で登録可能にしたり、データ吐き出したりすることを可能にしました。
今回のプロジェクトを通して初めてフロントエンド担当の方と共同で開発することになり、担当の方へ作業依頼をしたところ、自分が思っていたイメージとは若干異なったものが出来上がってきてしまいました。原因としては私自身の知識不足とフロントエンド担当の方が普段使用している技術だったり開発手法に関して私が十分に理解していなかったことが要因でした。
また、私がフロント側へFlaskのテンプレートを用いて画面を作成していたため、フロント担当の方では下手に手を加えられないようにしてしまったことで余計に開発時間がかかってしまいました。
本プロジェクトを通して、私はフロントエンド側の知識の不足であったり、過去の自社プロダクトがどのようにしてフロントエンド側とバックエンド側が共同で開発していたのかをもっとよく把握しとくべきだったなと感じました。
本プロジェクトが私にとって初のWebエンジニアとしてのプロジェクトでした。キーワード検索ツールとは、Webマーケター向けに開発されたWebサービスで某検索エンジンサイトで検索されたキーワードデータを元にユーザーの性別、年齢、趣味嗜好...を分析するツールで、そのすでに開発された既存ツールの新規API開発・運用を行っていくプロジェクトです。
チームメンバーは、私含め2名体制、担当はバックエンド。初のプロジェクトということもあり、慣れないLinuxでの開発環境でPythonで作成されている既存のWebアプリケーションの新規API開発、改修及びテスト業務から携わりました。
##作業の流れ
手始めに担当するWebアプリがどのような意図で作成されたものなのか、またどのようなユーザーをターゲットにしているのか先輩社員に聞くことから始まり、その後は自分が担当する範囲のソースコードを大まかに把握していくためソースコードの紐解き作業から開始⇨新規のAPI開発に着手⇒テストコードの作成⇒Mercurlへpush⇨コードレビュー⇨修正or 完了といった流れで作業を進めていきました。
作業の大半はキーワード検索ツールの管理者画面側の追加APIの開発でした。1つのリクエストに対して返されるレスポンス項目の変更や既存の画面で「代理店一覧画面」と同じような仕様の画面をもう1つ作りたいといった要望に沿って新規でAPIを作成し、テストコードも作成する。といった作業をその都度要望がある度に対応していました。
Webエンジニアとしての初のプロジェクトということで、ソースの理解に苦労したのはもちろんでしたが、初めて扱うLinuxコマンドだったりMercurialの理解にも苦労しました。
本開発を通して、私はあまりのスキル不足で初めは先輩社員の説明の大半は理解できずに苦しんていましたが、日々勉強しながら1歩ずつ前進していけるよう努力していった結果、プロジェクトに携わってからおよそ2ヶ月で開発の流れやアプリの全体像がだんだんと見えてくるようになり、与えられた仕事は全てこなすことができました。
コンテナ技術、CICD、DevOps関係のスキル