はじめに
2024年4月に株式会社シンシアでWEBエンジニアとしてのキャリアをスタートして以来、これまで本当に多くの学びと経験を得ることができました。
このブログでは、これまでに身につけたスキルや取り組んできたことを整理・可視化し、それを踏まえて今後さらに成長していくために必要な学習分野や挑戦したいテーマを明確にすることを目的としています。
次のステップへ進む前に、今の自分がどんな経験を積み、どんなスキルを持っているのかを振り返って整理する機会としてまとめました。
振り返り
(4月) 求人サイト開発 (自社開発) - Rails
4月は自社開発の求人サイトのプロジェクトに参加し、初めて実務のコードに触れる経験をしました。
これまでは自己学習で自分の書いたコードを自分で修正・追加するだけでしたが、実務では他人が書いたコードを理解し、既存のスタイルや設計に沿って作業する必要があり、その難しさを実感しました。
振り返れば、当時担当していた機能の修正や追加はそこまで複雑な内容ではありませんでした。
それでも当時はとても難しく感じ、デバッグの力や、エラーの原因を予測する力の未熟さを痛感しました。
エラーが起きたとき、すぐにエラーメッセージに頼るのではなく、「なぜこのエラーが起きたのか?」を自分なりに考えることの大切さ、そして適切なキーワードでググることの重要性を強く感じました。
最初の半月ほどは、用意されたIssueに従って開発を進めていましたが、やがてIssueを作成してくれる方が他の業務で多忙になったため、自ら足りない機能や不具合を探し出して対応するという動き方に変わっていきました。
不具合の調査・修正から新規機能の開発まで、自発的に取り組む機会を得られたことで、主体的に動く力も身につけられたと感じています。
(5、6月) ある業界の業務効率化WEBアプリ その1 (受託開発) - React + Nestjs
5月と6月は、ある業界向けの業務効率化アプリの受託開発プロジェクトに参加しました。
このプロジェクトでは主にフロントエンドを担当し、React(TypeScript)を用いて各種機能の実装を行いました。
中でも特に力を入れたのが、ドラッグ&ドロップ機能の実装です。Googleカレンダーのように、同じ日付・同じ時間帯の枠に要素を移動・配置できるUIを作る必要がありました。
イベントリスナーの扱いや要素の座標取得、スタイルの動的変更など、思った以上に細かい制御が必要で、かなり苦戦しました。
加えて、配列の操作や状態管理のロジック構築にも時間がかかり、この経験を通じて「自分にはまだロジックを組み立てる力が足りていない」と実感する場面も多くありました。
開発中は、ClaudeなどのAIツールも積極的に活用しました。ロジックの整理や実装のアイデア出し、エラーのヒントなどをAIと対話しながら進めることで、試行錯誤のスピードが上がり、AIを開発のパートナーとして活用する力も向上したと感じています。
また、バックエンドを担当していた方とのやり取りを通じて、API設計やDB操作の流れについても学ぶことができました。
「どのようにデータを取得・更新し、画面に反映させるのか?」といったアプリケーション全体の処理の流れをフロントとバックの両方の視点から理解する機会となり、開発そのものがより一層面白く感じられました。
試行錯誤を重ねながら少しずつ期待通りに動くようになっていく過程はとても刺激的で、フロントエンド開発の難しさと面白さの両方を強く実感した2ヶ月でした。
この経験を通して、イベント処理やDOM操作、状態管理、そしてシステム全体の構造に対する理解も一段深まったと感じています。
(7月 ~ 10月) ある業界の業務効率化WEBアプリ その2 (受託開発) - React + Nestjs + AWS
7月から10月にかけての4ヶ月間、ある業界向けの業務効率化アプリの受託開発プロジェクト(その2)に参加しました。
このプロジェクトでは、要件がまだ固まっていない段階から関わることができ、「ざっくりとこういう機能を作りたい」というレベルの要望に対し、ヒアリングや提案からスタートするという貴重な経験を得ました。
提案資料を作成し、フィードバックを受けながら仕様を詰めていく中で、drawioやmermaidを活用してER図の作成・整理を行うなど、設計面でも積極的に取り組みました。その後はDB設計・実装まで担当し、ひとつの機能をゼロから形にしていく一連のプロセスを経験しました。
この期間は、特にバックエンド開発のスキルアップを意識しており、自ら手を挙げてその領域を多く担当しました。
SQLやDB設計に対しては当初苦手意識があったものの、業務時間外にも積極的にキャッチアップを行い、残業申請をせずに平日夜や土日を活用して学習と実務の両面で力をつけていきました。
実際のコーディング業務では、1000行近いコードを書き上げ、複数テーブルからの情報取得や条件分岐など、複雑なロジックの実装にも多く触れました。
初めはパフォーマンスを意識しない書き方をしてしまい、例えば不要なループ処理や非効率なデータ挿入、非同期処理の最適化不足(Promise.all未使用)などの課題に直面しましたが、AIの助けも借りながらリファクタを重ねることで、効率的かつ可読性の高いコードの書き方を学びました。
また、複雑な処理に立ち向かう際には、まず日本語で処理の流れを整理し、ステップバイステップでロジックを組み立てるという思考プロセスを意識するようになりました。これにより、最初は難しく感じた処理も、徐々に自信を持って対応できるようになりました。
さらに、タスク管理やドキュメントの整備にも積極的に取り組み、次にこのプロジェクトに関わる人がスムーズに作業を進められるよう、情報の可視化や共有の仕組みづくりにも貢献しました。
単に自分のタスクをこなすだけでなく、チーム全体の効率や持続性を意識する視点を育むことができたと感じています。
このプロジェクトでは、提案・設計・実装・ドキュメント整備・タスク管理といった幅広い工程を一貫して経験し、大きな成長を実感しました。
特に、これまで苦手意識のあったバックエンド開発において、確かな手応えと自信を少しずつ積み上げられたことは、今後のキャリアにおいても大きな糧になると感じています。
(11月から現在進行中) 予約機能付きのSNSのようなモバイルアプリの0→1開発 - Expo(react native) + Nestjs( + GraphQL) + AWS + Terraform
11月から現在にかけて、予約機能付きのSNSのようなモバイルアプリの受託開発プロジェクトに参加しています。0→1のフェーズから関わっており、認証まわりの構築、バックエンドやインフラのセットアップ、実機検証、デプロイに至るまで、幅広い業務を経験しています。
特に印象に残っているのが、Firebaseを使ったLINE認証の導入です。Expoでのカスタム認証のセットアップはiOS・Androidそれぞれで設定が異なり、想像以上にハマりポイントが多くありました。「これはコードの問題なのか?それともAndroid StudioやXcodeの設定なのか?」という切り分けを地道に行いながら、原因を一つひとつ潰していくことで、トラブルシューティング力が着実に身についたと感じています。
また、iOSではTestFlightによるテスト配布、AndroidではDeployGateを利用するなど、実機確認のためのビルドや配布の流れも一通り経験しました。
バックエンドではGraphQLを初めて扱う機会となり、最初は戸惑いながらも調べ・試しながらキャッチアップを進めました。Push通知の機能では、バッチ処理をCronで定期実行する仕組みを構築するなど、初めて行うタスクも多く、着実に実力がついている実感があります。
また、DB設計も担当し、予約管理やユーザー管理などを支えるためのスキーマ設計を行いました。特に、予約の登録・変更・キャンセルといった一連の処理だけでなく、それを管理する側の管理画面とのデータのやり取りまで想定して設計することで、「世の中の予約システムはどのように動いているのか」「管理者とユーザーでどのような視点や情報が必要なのか」といったシステム全体の構造や流れをより深く理解することができました。
インフラ面では、まずAWS Lightsail上に仮想サーバーを構築し、Ubuntu環境でバックエンドやアプリのデプロイフローを手を動かしながら習得しました。そこから、最終的には本番環境をECSベースに切り替える構成へと移行し、TerraformによるIaC(Infrastructure as Code)も取り入れています。TerraformやECSの初期構築は別メンバーに依頼しましたが、その後の不具合対応や構成の見直しなどは一緒に進めました。構築内容や手順などのドキュメント整備にも注力し、属人化を防ぐ体制づくりに貢献しました。プロジェクトに関わる誰もが再構築やデプロイを行えるよう、知識の共有と仕組み化を意識して動いています。
また、このプロジェクトではチームリーダーという立場も任せてもらっており、リリースに向けた残タスクの洗い出しや管理、デザイナー・クライアントエンジニアとの連携など、チーム全体を前に進めるための動きもしています。連携がうまくとれない場面もありましたが、そのたびに「自分にできることは何か?」「チームのポテンシャルを最大限に引き出すには?」という視点で試行錯誤し、上司とも密に議論しながら進めてきました。マネジメントの難しさとやりがいの両方を肌で感じられる、非常に学びの多いプロジェクトです。
さらに、このプロジェクトではExpo、Xcode、Android Studio、GraphQL など、新しい技術に多く触れる機会にも恵まれました。最初は不安もありましたが、実際に取り組んでみると「知らないから怖い」と感じることはほとんどなく、新しい技術に対しても適切かつ素早くキャッチアップできる自信がついたと感じています。
キャッチアップの際は、自分なりのスタイルを意識しています。たとえば、まずは公式ドキュメントに軽く目を通し、概要と全体像を把握した上で、Qiitaや海外のYouTubeチャンネルなどのハンズオン動画を参考にしながら簡単なTodoアプリを作成して、実践的に理解を深めるようにしています。さらに、AIツールに公式ドキュメントの要点を要約・解説してもらうことで、理解のスピードを上げる工夫もしています。
こうしたスタイルを確立することで、「新しい技術だから不安」という気持ちよりも、「まずは試してみよう」という前向きな姿勢で臨めるようになりました。今後も未知の領域に挑戦することを恐れず、学びを楽しみながら実力を伸ばしていきたいと考えています。
実務2年目に学ぶこと・取り組みたいこと
約1年間の実務を通じて、フロントエンド・バックエンド・インフラと幅広く携わる中で、開発に必要なスキルの土台を築くことができました。
2年目となる今、より実践的な力を身につけるため、以下の3つのテーマに注力していきたいと考えています。
1. AWSやインフラ構築の知識強化
現在の業務でECSやTerraformに触れる機会を得たことで、インフラへの理解が必要不可欠であることを実感しました。
2年目では、より本格的な運用スキルを身につけるために、以下のような学習を進めていきます。
-
AWSやネットワークの基礎を一から丁寧に学習
→ 書籍やUdemyなどを活用し、サービスの仕組みや設計の原則を体系的に理解します -
現在購入し、学習中または学習予定の教材
-
今後の目標
- ECS/Fargate + Terraform + GitHub ActionsによるCI/CD構築を自走できるようになる
2. マネジメントスキルの向上と提案力の強化
プロジェクトの中でリーダー的な立場を経験し、進捗管理や他職種との連携を通じて、技術以外の力の重要性にも気づきました。
今後は「ただ言われたものを作る」のではなく、ビジネスの視点を持ち、課題を見つけて提案し、改善まで導けるエンジニアを目指します。
-
「この機能があればユーザーの利便性が上がる」「この設計の方がコストを抑えられる」といった視点を持ち、能動的に関われるようになる
-
チーム内でのファシリテーションや、他職種とのコミュニケーションにも積極的に取り組む
3. その他: 新規で学びたい・学ぶ必要があること
- DB設計と複雑なSQLとパフォーマンスを意識したコードの学習
- 単体テスト・ユニットテストの実践とテスト設計の理解
- Redisなどのキャッシュ技術の活用と理解
- マイクロサービスアーキテクチャの理解と実践
終わりに
ここまでお読みいただき、ありがとうございました。
この1年間、目の前の課題に全力で向き合いながら、手を動かし、悩み、試行錯誤を重ねてきました。まだまだ未熟な部分もありますが、「自分にできることは何か?」「どうすればチームやプロダクトにもっと貢献できるか?」を常に問い続け、前向きに挑戦してきた自負があります。
技術面だけでなく、設計・インフラ・マネジメントまで幅広く関わる中で、より広い視野でシステムを見る力が少しずつ身についてきたと感じています。そして、ここで得た学びを次のステージで実践し、より高いレベルの成果を出せるエンジニアへと成長していきたいと考えています。
今後は、より高い技術力と提案力を身につけ、チームや社会に対してより良い貢献ができるよう、引き続き学びと挑戦を重ねていきます。
このブログが、私という人間やエンジニアとしての姿勢を知っていただくきっかけになれば幸いです。
また、株式会社シンシアでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。
※ シンシアにおける働き方の様子はこちら
弊社には年間100人程度の実務未経験の方に応募いただき、技術面接を実施しております。
この記事が少しでも学びになったという方は、ぜひ wantedly のストーリーもご覧いただけるととても嬉しいです!