はじめに:それは「無理では?」から始まった
こんにちは、web系を目指して就職活動中の修士1年です。
先日、とあるベンチャー企業の長期インターン選考で、こんな課題が出されました。
「2週間で、学生と企業を繋ぐスカウトサービスのプロトタイプを開発してください」
当時の私のスキルは、PythonのフレームワークであるFlaskで簡単なWebアプリを作ったことがある程度。課題で指定されたRuby on RailsやNext.jsは、正直名前を聞いたことがあるくらいで、RubyもJavaScriptも触ったことがありませんでした。
「……これ、無理では?」
絶望から始まった2週間の挑戦でしたが、結果として多くの学びを得ることができました。その全記録と、私なりのAIを使った学習スタイルについてお話します。
生存戦略:AIを教師に、未経験からモダンな技術をキャッチアップする
残り時間は2週間。情報系の学部で様々な言語の基礎に触れていた経験から、「文法は走りながら覚えよう」と腹を括りました。
Ruby/JSの基礎固め (1日目)
まずは基本文法のキャッチアップから始めました。
- Ruby: Web上の入門サイトでざっと基本文法を確認しました。
- JavaScript: YouTubeの入門動画を見て学習しました。
最大の壁、Next.jsとの対峙 (2~4日目)
Next.jsの学習は、多くの教材がReactの知識を前提としており、初学者の私には茨の道でした。
そこで、ChatGPTに「Next.jsを最短で学ぶためのロードマップ」を作成させ、それを"教師"として対話形式で学習を進めました。
わからないことはその場で質問し、サンプルコードを書いてもらい、レビューしてもらう。まさにAIとペアプログラミングをしている感覚で、効率的に知識を吸収することができました。
光が見えた、ドンピシャの教材 (アウトプット期)
基礎学習を終えた頃、YouTubeで「プログラミングチュートリアル」さんの
「Next.jsとRuby on Railsを使ってフルスタックブログ開発を体験してみよう」
という、まさに天啓のような動画を発見。これを参考に、一気にアウトプットの解像度を高めることができました。
開発記録:1週間で作ったスカウトアプリのすべて
学習に1週間を費やし、残された実装期間は1週間。ここからは気合で実装を進めました。
技術スタックと選定理由
-
フロントエンド: Next.js (v15)
-
バックエンド: Ruby on Rails (v8)
-
データベース: SQLite3
理由:とにかく2週間で完走させることを最優先し、環境構築が最もシンプルなSQLiteを選びました。 -
API通信: REST
理由: こちらも実装のしやすさを重視し、Railsの標準的な構成に沿ってシンプルに設計しました。
こだわった機能(ユーザー視点での+α)
最低要件に加え、「自分がユーザーならこれが欲しい」という視点で以下の機能を追加しました。
-
企業の学生情報閲覧:
学生が企業情報を見れるなら、企業も学生の強みを見たいはずだと考え、双方向の情報閲覧機能を実装。 -
アカウント削除機能:
自分の情報は自分で管理・削除できるべきだと考え、学生・企業ともに自身でアカウントを削除できる機能を実装。 -
UI/UXへの配慮:
「どんなに良い機能も使いにくければ意味がない」と考え、ホバーアクションやシンプルなCSS設計で直感的な操作性を心がけました。
ぶつかった壁と大きな学び:失敗から得た3つの教訓
もちろん、順風満帆だったわけではありません。大きな壁にぶつかり、そこから多くのことを学びました。
教訓1:DB設計のミスがサービスの価値を左右する
メッセージ機能のDB設計で考慮が漏れ、「企業→学生」の一方通行のメッセージしか実現できませんでした。
本当は双方向のやり取りを実装したかった...
→ messages
テーブルにsender_id
とreceiver_id
をしっかり設計し、送信者と受信者を明確に区別することの重要性を痛感しました。
教訓2:セキュリティは「あとで」では済まされない
実装を急ぐあまり、パスワードを平文でDBに保存してしまいました。
これはエンジニアとして絶対にあってはならない設計です。
この失敗のおかげで、セキュリティへの意識が格段に高まりました。次回は必ずbcrypt
などを用いたハッシュ化を実装します。
教訓3:AIは思考の壁打ち相手。鵜呑みにはしない
課題ではAIの使用が許可されていたので積極的に活用しましたが、時に遠回りもしました。
「Railsのコードは全部AIに書かせろ」という指示がだされたり、AIを使っても全く解決できないと場面に陥りました。ちなみにRailsはちゃんと学習して、AIの補助もありましたが自分で実装しました。
またAIで解決できな場合は、AIが予測した問題を理解しと「解決策を5つ提案せよ」などと指示をだしそこから導き出せる問題や解決方法を使用することで突破しました。
AIはあくまで「優秀なアシスタント」。
最終的な意思決定は自分で行い、アーキテクチャ全体を俯瞰する視点が不可欠だと学びました。
まとめ:2週間で得たもの
「無理だ」から始まった2週間でしたが、終わってみれば想像以上のものが得られました。
- フルスタックアプリは、意外となんとかなる。
- AIを使いこなせば、学習速度は劇的に向上する。
- 完璧なプロダクトより、まず動くものを作り、そこから学ぶ姿勢が大切。
この経験は、私にとって大きな自信になりました。そしてこの自信が、先日初めてのハッカソンに出場するきっかけにもなりました。
これからもたくさんの壁にぶつかりながら、ユーザーにとって価値のあるサービスを作れるエンジニアを目指して学習を続けていきます。
実は、この記事で書いたインターン選考、最終的にはご縁がありませんでした。
それでもこの記事を書いたのは、悔しさ以上に大きな自信と、次の挑戦への意欲をこの2週間が与えてくれたからです。この経験をさせてくれた企業の方には、今でも心から感謝しています。
最後まで読んでいただきありがとうございました。