こんにちは!SiiD代表エンジニアのセイトです。
エンジニア転職のポートフォリオは、作れば評価されるものではありません。書類選考を通り、面接で技術的な会話が続くところまで持っていける作品だけが、選考であなたを助けてくれます。逆に言えば、面接官が5分で質問を切り上げてしまうポートフォリオは、時間をかけて作っても評価にほとんど貢献しません。
採用する側・エンジニア組織を預かる側として選考に関わってきた立場から、実際に評価が分かれるポイントだけを書きます。まずは、送られてきたポートフォリオを採用側がどう見ているかから。
採用側がポートフォリオを見る3つの軸
ポートフォリオが送られてきたとき、採用側は作品を鑑賞しているわけではありません。「この人を採ったとして、現場で戦力になるか」を短時間で見積もるために見ています。判断に使っている軸は、大きく次の3つです。
<画像:ポートフォリオの評価3軸の図解。中央に「ポートフォリオ」、そこから「①技術的に偏っていないか」「②本人が本当に作れるレベルか」「③ユニークさ(技術/テーマ)」の3方向に矢印。3つの下に共通のゴールとして「面接で技術的な会話が続くか」を置く>
1. 片側だけで完結する作品は、扱える範囲が狭いと見なされる
Webアプリケーションは、画面(フロントエンド)だけでも、サーバー側の処理(バックエンド)だけでも成立しません。どちらか片方で完成してしまう作品は、それだけで評価の上限が決まります。
たとえば見た目のきれいなWebサイトを提出しても、それがHTML・CSS・JavaScriptだけで作れてしまうものなら、データベースを設計した経験もサーバー側のロジックを書いた経験も伝わりません。次章で扱うCRUD・認証・外部API連携の3点セットは、この偏りを埋めるためのものです。
2. 説明できない機能は、載せないほうが有利
採用側は、実力とアウトプットが釣り合っているかを見ています。疑っているわけではなく、面接で何をどこまで聞けるかを見極めているのです。
学習期間が3ヶ月と書かれているのに、大規模な決済機能やリアルタイム通信を備えた作品が出てくると、面接では必ず「どこをどう実装したのか」を細かく聞かれます。そこで答えられなければ、作品の完成度が高いほど印象は悪くなります。技術的に背伸びをするより、自分が中身を全部説明できる範囲で作るほうが選考では有利です。
3. 他の応募者と見分けがつく一点を用意する
ここでのユニークさは、技術面とテーマ面のどちらかで構いません。使っている技術の組み合わせが珍しい、題材が身近で具体的、どちらでもいい。求められているのは独創性そのものではなく、他の応募者と区別がつく手がかりです。
学習教材をなぞっただけのToDoアプリやブログ風アプリが弱いのは、機能が足りないからではなく、この手がかりがまったく無いからです。
3つの軸が向かう先は「面接で話が続くか」
3つの軸は独立して並んでいるように見えますが、行き着く先は同じです。技術的に幅があり、自分で説明でき、他と違う点があるポートフォリオは、面接で質問が続きます。
面接官にとって、技術の話が具体的に展開できる応募者は評価しやすい相手です。逆に「頑張って作りました」で終わってしまうと、質問の糸口がなく、人物面の話に切り替わります。技術職の選考で技術の話ができないまま終わるのは、それ自体が大きな機会損失です。
ポートフォリオを作るときは、完成させることをゴールにせず、面接でこの作品について30分話せるかを基準に設計してください。以降の章は、そのための具体的な手順です。
CRUD・認証・APIの3点セットを外さない
技術的な偏りを避けるために、最低限おさえておきたい機能が3つあります。CRUD、認証、外部APIとの連携です。この3つが揃っていれば、Webアプリケーション開発のひととおりの流れを扱えることが伝わります。
<画像:Webアプリの3点セットの構成図。左に「ブラウザ(画面)」、中央に「サーバー(アプリケーション)」、右に「データベース」を配置し、中央から上方向に「外部API」への矢印。中央とデータベースの間に「CRUD(作成・参照・更新・削除)」、ブラウザと中央の間に「認証(ログイン・権限)」のラベルを置く>
CRUD:データを扱えることの最低条件
CRUDはCreate(作成)・Read(参照)・Update(更新)・Delete(削除)の頭文字で、データベースに対する基本操作をまとめた呼び方です。投稿する、一覧で見る、編集する、消す。この4つが動くということは、画面・サーバー処理・データベースが一本の線でつながっているという証明になります。
見落とされがちなのは更新と削除です。作成と一覧表示だけで止まっている作品はかなり多いのですが、更新・削除には「他人のデータを勝手に操作されないか」「削除したデータに紐づくデータをどうするか」といった設計判断が必ず伴います。面接で聞かれやすいのもここです。
認証:他人のデータと自分のデータを分ける
認証(ログイン機能)は、ユーザーごとにデータを分けるために必要です。逆に言えば、認証がないアプリは全員が同じデータを見る前提で作られているということで、設計としてかなり単純になります。
自前で実装してもいいですし、Firebase AuthenticationのようなIDaaS(ID管理をサービスとして提供する仕組み)を使っても構いません。大事なのは、ログインしているユーザーが誰かをサーバー側でどう判定しているのか、自分の言葉で説明できることです。「ライブラリを入れたら動きました」で止めないでください。
API:外部と通信する経験があること
APIは、他のサービスの機能やデータをプログラムから呼び出すための窓口です。天気、地図、決済、生成AIなど、実務のアプリケーションはほぼ必ず外部と通信します。
外部APIを1つ組み込むだけで、通信の失敗をどう扱うか、キー(認証情報)をどこに置くか、レスポンスをどう画面に反映するかといった、実務そのものの論点に触れることになります。自作の機能を1つ増やすより、はるかに費用対効果が高いので必ず入れておきましょう!
やりがちなNG例:HTML・CSS・JavaScriptだけのWebサイト
企業サイト風のページや、アニメーションの効いたランディングページ。見た目のインパクトはありますが、これらはHTML・CSS・JavaScriptだけで完成してしまいます。
デザイン職やマークアップ職を志望するなら適切な作品ですが、Webアプリケーションエンジニアの選考ではフロントエンドに偏った作品と受け取られます。すでにこの手の作品を持っているなら、そこにログインと投稿機能を足してアプリケーション化するだけでも評価は変わります。
なお、3点セットが揃っていても、公開されていて実際に触れる状態になっていなければ選考では読まれません。動くURLと、何をどう作ったかが書かれたREADMEはセットで用意してください。
コードを置くGitHubリポジトリも公開設定にしておきます。採用側はコードそのものだけでなく、コミットの粒度やメッセージも見ています。1回のコミットに全ファイルをまとめて入れているようなリポジトリは、チーム開発の経験がない印を自分から出しているのと同じです。



