「ポートフォリオを作って応募したのに、書類で落ち続けている」
一番つらい状態だと思います。何が悪いのか、企業は教えてくれないからです。
僕は現役エンジニアとして未経験の方の作品を添削していますが、
落ちる理由は驚くほど同じところに集中しています。
添削していて、いちばん多いパターン
正直に書きます。送られてくる作品で多いのは、この3つです。
- 教材どおりの箇所が多い
- AIで作ったんだろうな感があふれている
- 「これ、どうやって実装したんですか?」と聞くと答えられない
3つ目が本丸です。
教材を使うのは悪くありません。AIを使うのも悪くありません。僕も実務で使っています。
ただ、出てきたコードを説明できないなら、それは自分で作ったことになりません。
そして採用する側は、そこを必ず突いてきます。
僕が面接で答えられなかった話
偉そうに書いていますが、僕自身がここで落ちています。
当時のポートフォリオは、自問自答クイズアプリでした。
彼女が管理栄養士を目指していて、間違えた問題だけを集めた問題集をスマホで作れたらいいな、というところから作ったものです。
面接で何が起きたか。
まず、コードは軽く見られただけでした。じっくり読まれてはいません。
そのあと、あちら側のサイトでテストを出されて、最後に作品について質問されました。
その質問がこれです。
このボタンを押したら、どうなっているんですか?
あとから振り返ると、あれは画面読み込みのぐるぐる(ローディング)について聞かれていました。
非同期でデータを取りに行っている部分です。そこが説明のポイントでした。
でも僕は答えられませんでした。
「ルートからコントローラーで…」という話しかできなかったんです。
作ったのは自分です。動いてもいました。
それでも「押したときに何が起きているか」を言葉にできなかったんですよね。
ここから学んだことが2つあります。
- 面接官はコードを全部読まない。その代わり、動きについて質問してくる
- 聞かれるのは「画面で何が起きているか」。ファイルの名前ではない
だから今、僕が教えるときは「非同期処理を必ず1か所は入れて、そこを説明できるようにしておくこと」と伝えています。
自分が答えられなかった場所だからです。
結論:落ちる理由の大半は、技術力ではない
- 教材のコピー・AI任せだと分かってしまう
- そもそも動く状態で見られていない
- 何のためのアプリか伝わらない
この3つで大半です。どれも技術力の問題ではありません。伝え方と完成度の問題です。
裏を返せば、ここを直すだけで通過率は大きく変わります。
落ちる理由7つ
理由1:教材のコピー、またはAI任せだとバレている
見る側は現役エンジニアなので、有名な教材やチュートリアルはほぼ全部知っています。
- 変数名が教材と同じ
- 画面構成が完全に同じ
- 「タスク管理アプリ」で機能まで教科書どおり
- 自分のレベルに対して、急に整いすぎているコードが混ざっている
最後のがAI感です。他の部分は初学者らしい書き方なのに、一部だけ妙にきれいだと目立ちます。
直し方
- 題材を自分の経験や、身近な人の困りごとに置き換える
- 機能を1つ以上、自分で企画して追加する
- AIに書かせた部分は、必ず自分の言葉で説明できるまで読む
AIを使うなとは言いません。使ったなら、そのぶん読んでください。
理由2:URLを開いても動かない
見る側は忙しいです。URLを開いてエラーが出た時点で終わりです。
- サーバーが落ちている
- ログインできない(テストアカウントの記載がない)
- スマホで開くとレイアウトが崩れて操作できない
直し方
- 応募前に、別のブラウザ・スマホから必ず確認する
- READMEの最上部にテスト用アカウントを書く
- 無料枠のサーバーはスリープすることがあるので注意
理由3:READMEがない、または不十分
コードだけ置いてあると、見る側は「何のアプリか」を推測しなければなりません。
その手間を惜しんだ時点で、読まれません。
- アプリの概要(1〜2行)
- 誰のどんな課題を解決するか
- 使用技術
- 主な機能
- テスト用アカウント
- 工夫した点・苦労した点
理由4:セキュリティ上の問題がある
これは即アウトになる項目です。実際の添削でよく見つかります。
| よくある問題 | 何が起きるか |
|---|---|
| パスワードを平文で保存している | 論外の扱いになる |
| 他人のデータが見えてしまう | 権限チェック漏れ。実務では重大事故 |
| SQLを文字列連結で組み立てている | SQLインジェクションの危険 |
| ユーザーの入力をそのまま画面に出している | XSSの危険 |
| .envやAPIキーをGitHubに上げている | 一発でアウト |
直し方
- パスワードは必ずハッシュ化(Laravelなら標準機能でOK)
- 編集・削除の前に「そのデータは本当にログイン中のユーザーのものか」を確認
- SQLはプレースホルダを使う
.gitignoreに.envが入っているか確認
独学ではまず気づけない部分なので、ここは誰かに見てもらうのが確実です。
理由5:機能を盛りすぎて、どれも浅い
「たくさん作ったほうが評価される」と思って、機能を10個以上入れる方がいます。
- 一つひとつが作り込まれていない
- 面接で全部は説明できない
- コードが散らかって読みにくい
機能は4つほどに絞って、そのぶん丁寧に作るほうが評価されます。
ただし、そのうち1か所は非同期処理を入れてください。理由は上に書いたとおりです。
理由6:コミット履歴が不自然
GitHubの履歴も見られています。
- コミットが3件しかない
- 全ファイルが1回のコミットで追加されている
- コミットメッセージが「update」ばかり
これだと「どこかからコピーしたのでは」と疑われます。
✕ update
○ ログイン後のリダイレクト先を修正
○ 投稿一覧にページネーションを追加
理由7:「押したら何が起きるか」を説明できない
書類は通っても、面接でここで落ちます。僕が落ちたのもここです。
よく聞かれるのは、こういう質問です。
- このボタンを押したら、どうなっているんですか
- なぜLaravelを選んだのか
- なぜこのテーブル設計にしたのか
- 他にどんな方法を考えたのか
答えられないと、「自分で作っていない」と判断されます。
直し方
作品の中で、よく使うボタンを3つ選んでください。
そして、押してから画面が変わるまでを声に出して説明できるか試してください。
- ボタンを押すと、どこに情報が飛ぶのか
- そこで何を判断して、何を保存または取得しているのか
- 結果が画面のどこに、どう返ってくるのか
詰まったら、そこが弱点です。面接官も同じ場所を突いてきます。
応募前チェックリスト
- スマホと別ブラウザで開いて、問題なく動く
- READMEに「誰の何を解決するか」が書いてある
- テスト用アカウントを書いてある
.envをGitHubに上げていない- 他人のデータが見えないか確認した
- 機能は4つほどに絞ってある
- 非同期処理が1か所あり、その動きを説明できる
- AIに書かせた部分も、自分の言葉で説明できる
まとめ
- 添削で多いのは「教材どおり」「AI感」「実装を説明できない」の3つ
- 面接官はコードを全部読まない。動きについて質問してくる
- 聞かれるのは「このボタンを押したらどうなっているか」
- 機能は4つほど。ただし非同期処理は1か所入れて説明できるようにする
- AIは使っていい。ただし使ったぶんだけ読む
僕は、自分で作ったアプリなのに「押したら何が起きているか」を説明できずに落ちました。
技術が足りなかったのではなく、自分の作品を分かっていなかっただけです。
ここは、作る前から意識していれば防げます。
次に読む記事
ポートフォリオの無料添削をしています。LINEから送ってください。営業は一切しません。