はじめに
はじめまして、ibushi007 です。
私は現在、地方の情報系大学に通う2年生です。
都市部に比べてエンジニア向けインターンが少ないことや、物理的に通いにくいこともあり、
「地方からインターンを取るってかなり難易度高いのでは…?」
と最初は本気で思っていました。
実際、18社以上落ちて精神的にきつかった時期もありましたが、
結果的に 業務委託型の長期インターン に参加することができました。
この記事では、
- インターンに受かるまでのリアルなストーリー
- 1ヶ月働いてみて気づいたこと・学んだこと
- 地方からインターンを目指す人へのヒント
をまとめています。
地方から挑戦する人、エンジニア志望の大学生の参考になれば嬉しいです。
対象者
この記事は以下のような人を想定しています。
- プログラミング初学者
- 地方在住の大学生
- エンジニアとしての最初の経験を作りたい人
- 長期インターンをどう取ればいいかわからない人
結論(先に3つまとめます)
- インプットより手を動かす方が圧倒的に成長する
- 個人開発 × GitHub × 行動量 が最強の実績になる
- 地方でもフルリモート狙い+継続応募でチャンスは十分ある
詳しくは本文で深掘りします。
インターンに受かるまでにやったこと
1. Udemy中心のインプット → 手を動かすアウトプット型へ切り替えた
最初の頃は、とにかく Udemy を何本も受講していました。
知識自体は増えていくものの、あるとき気づきました。
「知識を入れるだけでは全然実力になっていない…」
このままではダメだと思い、思い切って学習方針を変更しました。
そこからは “手を動かす比率を最大化する” 学習へ。
- GitHubを開設
- 小さいアプリを作り始める
- エラーと戦いながら進める
- 動くところから積み上げる
この頃から成長の実感が一気に増えました。
2. 学内ハッカソンでリーダー(PM役)を経験
開発経験を積みたくて、学内ハッカソンの リーダー を担当しました。
ここでは、ただコードを書く以上の多くを学びました。
- 技術選定
- 仕様のすり合わせ
- タスクの分解と割り振り
- 進捗管理
- メンバーのサポート
いわゆる PM 的な動き まで体験でき、
チーム開発の難しさと面白さを同時に学べました。
この経験は後のインターン面談でも強く評価されました。
今見ると拙くて恥ずかしくなりますが、一応その時作った物のgithubのrepositoryです。
https://github.com/ibushi007/aizuhack-
3. LLM を活用して実際にアプリを完成させた
ハッカソン後、私は Udemy に長時間使うのをやめました。
代わりに、LLM に相談しながら自作アプリを作る スタイルに移行。
作ったのは Django のアプリで、
CSV を読み込み → グラフとして可視化するツール
https://barabara.pythonanywhere.com/
です。
これを作ったことで、
- 実装の流れ
- エラーとの向き合い方
- 小さく作って動かす大切さ
- フレームワークの本質的な使い方
を深く理解することができました。
4. 地方ゆえに「完全フルリモート求人」に絞って応募
私は車がなく、都市部にも通えませんでした。
そのため、インターン探しは 最初からフルリモートに限定。
使用したサイトは主に以下です。
- Wantedly
- Infra
- Kotonaru
ここで、ひたすら応募しまくりました。
参考までにその時作ったwantedlyのプロフィールです。
https://www.wantedly.com/id/ibuki_hayashibara_a
5. 合計18社落ち、2ヶ月かけてようやく合格
応募開始から合格までにかかった期間は 約2ヶ月。
そして、この2ヶ月で落ちた企業は…
合計18社
メンタルには来ましたが、
今思えば「辞めなかったから勝てた」と本気で思います。
面談も3回目くらいから慣れてきて、
- 学んだこと
- 作ったもの
- GitHub の動き
- なぜインターンしたいのか
を自然に話せるようになりました。
結局、行動量 × 継続 × 小さな成果の積み重ね がすべてでした。
インターン1ヶ月で気づいたこと・学んだこと
インターンでは、主に TypeScript(バックエンド)を書きまくる毎日 でした。
たった1ヶ月でしたが、学びの量は想像以上でした。
1. 変数名がわかりやすいだけで作業効率が爆上がり
特に驚いたことはこれです。
変数名がわかりやすいと、全員の生産性が上がる。
逆に読みづらいと、全員が困る。
自分だけが理解できればいいわけではなく、
「チーム全体が理解しやすい名前」をつける重要性を理解しました。
2. コードジャンプ(3種)でコードリーディング能力が爆上がり
メンターの Yuki さんに教えていただいた、
- メソッド参照
- ソース定義
- 実装へ移動
この3つが使えるようになり、
「コードの流れを追う力」 が急激に成長しました。
これは一生使えるスキルです。
3. TablePlusで“実際のデータを見る”習慣が必須
実務ではコードだけ見ていても絶対に理解できません。
- どんなデータが入っているか
- そのIDは本当に存在するか
- リレーションの繋がりは?
これを見逃すと、
「データ入ってないのにAPI叩いて困惑する」
という初歩的ミスを何度も繰り返すことになります。
(実際にやりました……)
4. Prisma の理解が一気に深まった
特に印象的だった学びは以下:
- 多対一のリレーション → 配列として扱う
- 取得データは少ないほど良い
→ select をもっと使うべき - include 乱用すると地獄
- where の最初は “中心となるテーブル”
- findFirst は1件、findMany は全部
- optional chaining(.?)と null合体演算子(??)が必須
- 戻り値が配列なら、include先も配列になる
- 複合カラムはキーが揃わないと一意にならない
Prismaは使えば使うほど奥が深いです。
5. console.log が最強のデバッグツールだった
- データの流れ
- 意図と異なる箇所
- undefined の原因
これらを追うとき、結局 console.log が最強 でした。
シンプル is ベスト。
6. Docker の基礎理解も深まった
- docker exec -it は毎回必要
- コンテナ内とローカルの差分に気づけるようになった
環境差分によるバグにも少しずつ気づけるようになりました。
🌱 改善すべき点(反省)
1ヶ月で自分の課題も明確になりました。
- リレーションが遠い時のSQLが難しい
- TablePlus確認を怠ってしまう
- openapi.yml の修正漏れ
- include 過多 → select の活用不足
- 変数名が長すぎる癖
- マジックナンバー撲滅
- useCase 層では repository をコンストラクタ注入
- APP Router の動的パラメータ([])の存在を忘れがち
課題がはっきりした分、今後の成長が楽しみです。
おわりに
ここまで読んでいただきありがとうございました!
地方学生でも、行動量と継続があればインターンは取れます。
そして、実務に入った瞬間に世界が一気に広がります。
次回は、この1ヶ月で学んだ技術的なTips(TypeScript / Prisma / Docker / Next.js など)をまとめようと思います。
質問やコメントなどあれば気軽にどうぞ!