Taro Essence
| taro.

AI時代に未経験からエンジニアになり、最短で収入を4倍にする方法

はじめに

この記事を見てくださっているあなたは、おそらく今、人生の岐路に立たされていて道に迷っていることだろう。

キャリアの折り返し地点が見え始める年齢。20代のように「まだ若いから」という言い訳は使えない。かといって「もう遅い」と諦めるには早い。

私はかつて飲食店で7年ほど働いていた。

フレンチレストラン、都心のカフェ。朝から晩まで立ちっぱなし。休みは週1日あればいい方。給料は手取りで25万円ほど。体力的にも精神的にも限界が近づいていた。

奥で作業しているのが私

朝9時には店に行き、終わるのは夜11時半頃で家に帰るのは深夜。風呂に入って寝るだけの生活だった。そしてまた朝が来る。

こんな生活をしていると、何かを学ぶ余裕もない。ただ、体力を回復させて、また翌週の労働に備えるというその繰り返しだ。

ある日、「このまま飲食業でやっていくのか?この給料で?ずっとこの働き方はさすがにキツい…」と冷静になってしまった。

体力は確実に落ちていくし、給料が大幅に上がる見込みはない。かといって、飲食業界で「管理職」になっても、劇的に楽になるわけではない。店長になった先輩を見ても、相変わらず現場に立っているし激務だ。

「このままでは、何も変わらない」
「何かしないとマズいのではないか」

その問いから、私の人生を変える旅が始まった。

そして今、私はエンジニアとして月収100万円以上稼げるようになった。リモートワークで、自宅から一歩も出ずに仕事ができる。PayPayやチームラボといった大企業のプロジェクトに携わった経験もある。

飲食店時代の月収25万円から、約4倍

リモートワークができるようになった

これは特別な才能があったからではない。全くITが分からない状態からスタートしたし、情報系の大学や専門学校に行ったわけでもない。

ただ正しい方向に、正しい努力をしただけだ。

この記事は、かつての私と同じように悩んでいるあなたのために書いた。

「AI時代にエンジニアを目指すなんて、意味ないのでは?」
「30代未経験で、本当に転職できるのか?」

そんな不安を少しでも抱えているなら、最後まで読んでほしい。

この記事では、AI時代だからこそエンジニアを目指すべき理由、30代未経験から最短でエンジニアになるロードマップ、そして実際に収入を2倍以上にするための具体的な方法をすべて包み隠さず伝える。

読み終わった後に「自分でもできそう」「やるしかない」と思えることが目標であり、他では話さない踏み込んだ戦略・具体的な企業名・リアルな数字を公開する。

さらに、購入者限定で1対1の直接質問できる権利も付けている。学習で詰まった時、キャリア相談、ポートフォリオのレビューなど、記事を読むだけでは解決しないモヤモヤを私に直接ぶつけてほしい(詳細は記事末尾に記載)。

私が飛び越えられた崖を、あなたにも体験してほしい。そして、あなたの人生を好転させるお手伝いができれば私も嬉しい。


【TIMELINE & EXPECTATIONS】

総文字数:約30,000字
想定セットアップ:目安6ヶ月〜1年(学習開始〜ポートフォリオ完成〜副業案件獲得〜就職活動)
期待できる変化(例)
・月収20万円 → 3〜5年で月収60〜100万円のレンジへ
・「何者でもない自分」→ 市場価値のあるスキルを持つ人材へ
・通勤・拘束時間の多い働き方 → リモートワーク・時間の自由
・「AI時代に不安」→ AIを使いこなす側へ
・飲食・営業・事務など異業種 → IT業界へのキャリアチェンジ
得られるものの具体例
・未経験から最短でエンジニアになる6ヶ月ロードマップ
・環境構築から実践までの教材Prompt
・学ぶべき言語の選び方(Web系 or ネイティブ系)
・クラウドワークスで最初の案件を取る具体的な方法
・私がオススメするSES企業(実名公開)
・自社開発・受託・SESの正直な比較
・よくある質問への回答
【購入者限定】筆者のSlackで直接質問できる権利付き

※適宜情報はアップデートされます


[[info]]

01. 「エンジニアは終わった」という嘘

AI時代の恐怖と、その正体

2022年にChatGPTがリリースされてから次々と新サービスが出始め、AIが世界の構造自体を変えた。

文章を書く、コードを生成する、データを分析する、戦略を立案する——かつて「人間にしかできない」とされた認知作業を、AIが実用レベルでこなし始めた。ホワイトカラーの「代替不可能性」という神話が崩れてきたのだ。

そして、ある言説がSNS上に溢れ始めた。

「AIがコードを書く時代に、プログラマーは不要になる」
「エンジニアは真っ先に置き換えられる職業だ」
「今からプログラミングを学ぶのは時間の無駄」

あなたも、こうした言葉を目にしたことがあるだろう。

しかし私は断言する。これらは嘘だ。

いや正確に言えば、「半分だけ正しくて、半分は間違っている」

確かに、AIはコードを書ける。人間よりも速く、正確に生成できる。これは事実だ。

しかし、ここで多くの人が見落としている真実がある。

AIが生成したコードを「評価」し、「ビジネスに適用」できるのは人間だけだということ。AIは道具であり、その道具を使いこなす人間が必要なのだ。

包丁が料理を作れないのと同じように、AIだけでは価値を生み出せない。包丁を握るシェフがいて初めて、料理という価値が生まれる。AIを操るエンジニアがいて初めて、ソフトウェアという価値が生まれる。

むしろ、AIの登場によって「使える側」の人間の価値は上がっていて、技術的格差が広がっていることを実感している。

米国と日本の決定的な違い

「でも、アメリカではエンジニアが大量解雇されているじゃないか」

そう反論する人もいるだろう。確かにAIが台頭してから現在にかけて、Meta、Google、Amazon、Microsoftといったテック大手が数万人規模のレイオフを実施した。

しかし、ここには日本とアメリカの決定的な違いがある。

アメリカでは、レイオフは「日常」だ。好景気のときに大量採用し、不景気になれば大量解雇する。これが当たり前のビジネス慣行として定着している。解雇された人々も数ヶ月以内に別の企業に好条件で転職していくケースがほとんどだ。

アメリカのエンジニアは、常に転職を前提にキャリアを考えている。一つの会社に長くいることの方が珍しい。レイオフされても、スキルがあれば次の職はすぐに見つかる。それが当たり前の文化だ。

一方、日本では解雇のハードルが極めて高い。労働法の違いにより、企業は簡単に社員を切ることができない。フリーランスでさえも一方的に切るということがしづらい風潮である。

だからこそ、日本企業は採用に慎重だ。正社員であれば、一度採用されれば長く働けるだろう。

さらに重要なのは、日本のIT人材不足は深刻化の一途を辿っているという事実だ。

経済産業省の試算によれば、2030年には最大79万人のIT人材が不足するとされている。AIの普及で効率化が進むからこそ、会社側は仕事をどんどん増やしていくため、結局エンジニアの仕事は無くならないという未来が見える。

AIを使いこなせるエンジニア人材への需要は高まる一方だ。

開発現場の空気も知らないのに、SNSやニュースの反応を見て「エンジニアは終わった」と結論づけるのはあまりにも浅い。

日本という市場で戦うなら、日本の現実を見なければならない。

なぜ「終わった」と言われるのに、私の収入は4倍になったのか

理論はわかった。でも、本当にそうなのか?

私自身の経験を少し話したい。

私がエンジニアとしてのキャリアをスタートさせたのは、AIが台頭し始める少し前の時期だった。エンジニアスクール流行のバブルが弾けた頃でもあった。

周囲からは「今からエンジニア?」「もう遅いんじゃない?」とも言われた。

それでも私は周囲の意見を振り切り、イバラの道を進んだ。

そしてSESから現場スタートし、大手案件に参画して経験を積み、フリーランスに転身し、月収を25万円から100万円まで伸ばせた。

なぜか。

1つは、エンジニアという職種の給与水準がいまだに高いからだ。

たとえば、日本の正社員の平均年収はおよそ450万円前後と言われている。一方、ITエンジニアの平均年収は約550〜800万円。フリーランスになればさらに上がり、実務経験3年以上なら月単価60〜90万円はごく普通のレンジだ。上流工程やPM寄りの役割ができれば、月100万円を超えることも珍しくない。

これは営業職、事務職、販売職、飲食業どの職種と比べても明らかに高い水準にある。

2つめは、AIを「武器」として使ったということ。

AIの登場で、確かに「コードを書くだけ」のエンジニアの価値は下がった。単純作業、定型的なコーディング、そういったものはAIに任せられるようになった。

しかし、エンジニアとしての知識がある上でAIが使えると「倍速で価値に変換」ができる。

自分のキャパ以上の課題があったとしても、知識とAIをMIXして導き出せるし、自分のリソース以上の案件が降ってきたとしても対応できる。

AIは自己拡張ツールだと考えている。

生産性が上がれば同じ時間でより多くの価値を生み出せるし、より多くの価値を生み出せる人材はより高い報酬を得られる。

「エンジニアに転職しなくても、自分でサービスを作って利益を上げればいい」という声も聞くが、起業が向いているのはほんの一握りだ。

やはり少なからず安定していた方が精神的にも楽である(家族がいればなおさら)。実際の現場の人たちを見ても、家庭持ちのエンジニアが圧倒的に多い。

「AIに仕事を奪われる」と怯えるのではなく、「AIが使えるエンジニアになって価値を上げる」と考えよう。この発想の転換ができるかどうかで、すべてが変わる。

怯えている人間は、行動しない。
自分を正当化する言い訳をする。
そして行動しないから、何も変わらない。
何も変わらないから、取り残される。

私は怯えなかった。だから、行動した。
行動したから、結果が出た。それだけの話だ。

02. 30代未経験でも遅くない理由

フレンチレストラン、都心カフェ、7年間の現実

ここで、私自身のストーリーを詳しく話させてほしい。

私は高校卒業後、美容専門学校に通い美容師になった。しかし1ヶ月もせず退職。その後飲食業界に入った。特にやりたかったわけでもなく「バイトで料理経験があるし、なんかカッコいい」という幼稚な理由で、たまたま受かったフレンチレストランに入社した。

フレンチレストラン。響きは華やかだ。しかし、キッチンの現実は過酷そのものだった。

朝9時に出勤して仕込みを始める。仕込み、ランチの準備と営業。休憩は1時間のみで、その後はすぐにディナーの仕込み。22時にラストオーダー。そこから片付け。店を出るのは深夜0時を回ることもザラ、そんな日常だった。

休みは週1日。それも、月曜日など「世間が動いている日」に休むから、友人と予定が合わない。

3年ほどで、フレンチレストランを辞めた。ある程度経験したという自負があったのと、もう少し落ち着いた場所で働きたいという思いだ。

次に働いたのは、都心の有名カフェ。レストランより楽だろうと思っていたが、実際、労働時間は増えてしまった。

週1休みで土日は忙しすぎてタバコ休憩しか取れない状況だった。給料は手取り25万円ほど。

飲食業界に約7年いて得たものは?接客スキル、調理スキル、チームワーク。確かに、社会人として必要な基礎力は身についた。しかし「市場価値のあるスキル」という意味では何も積み上がっていないということに気付いてしまったのだ。

「何かしないと」と思っていても怠けて行動してこなかったツケが回ってきた。

「このまま続けても、何も変わらない」
「今から動かなければ、本当に手遅れになる」

その危機感が、私を動かした。

「若くないと無理」は本当か?

「30代からエンジニアなんて、無理でしょ」

転職活動する前に、ネット上で検索していてこの言葉を何度も聞いた。

確かに、会社側からしたら若い方が伸び代があり、30代より給与が低いので好都合だ。

しかし、実際に現場へ出て思ったのが「30代以降にエンジニアへ転職した人」がかなり多いこと。40代で転身した人もいた。

職種は教員や公務員、営業など多種多様である。

なので「無理でしょ」と言っているのは結局、挑戦すらしていない人か憶測で言っているだけなのだ。

30代からの転職は「無理」ではない。ただし、「簡単」でもない。

私や彼らに共通しているのは、「無理だ」という声を無視して、正しく行動したこと。ただそれだけだ。

20代と比べれば体力や記憶力は若干劣るだろう。しかし、30代には圧倒的な強みがある。

20代にはない、30代以降の武器

エンジニアリングは、技術だけでは完結しない。

クライアントの要望を聞き取る。チームメンバーと調整する。納期と品質のバランスを取る。予期せぬトラブルに対処する。上司への報告、後輩への指導、他部署との連携。

これらすべてにおいて、社会人経験は圧倒的なアドバンテージになる。

私は飲食店で7年間働いた。その間に身につけたスキルは、エンジニアになってからも役立っている。

お客様の言葉の裏にある本当のニーズを読み取る力。業者との交渉。「〇〇が欲しい」と言われたとき、本当に欲しいのは〇〇なのか、それとも△△なのか。

飲食店で何千もの人と接する中で、この「察する力」は自然と身についた。

オーダーピーク時に優先順位をつけて動く判断力。何を先にやるか、瞬時に判断する。この「優先順位をつける力」は、複数のタスクを抱えるエンジニアにとって必須のスキルだ。

それぞれの職業で、専門的に身につけた絶対的スキルがあるはず。それらは、プログラミングスクールでは絶対に教えてもらえない。だから価値がある。

さらに、AIが台頭する前は現場に入ると純粋な技術力では新卒エンジニアに負けることもあった。しかし今はAIを使えば技術力の差はそこまで生まれない。

だからこそ社会人経験のある30代以降の私たちの方が「仕事」としてのアウトプットで高評価を頂けるのだ。

ソフトウェア開発は「チームスポーツ」に例えられる。一人で黙々とコードを書く時代はAIが出てきて終わりつつある。人と関わり、調整し、合意を形成していく。その力は長年の社会人経験でしか培えない。

PayPayの現場で働いたとき、チームの8割は外国人だった。英語でのコミュニケーションが求められる環境。技術的なスキルは周りよりも劣っていたが飲食店での経験をもとに、相手の意図を汲み取り自分の意思をなんとかして伝えた。

30代だから遅いではなく30代だからこそ持っている武器がある。

03. 目指すべき場所を決める

Web系か、ネイティブか、インフラか

ここからは実践編に入っていく。

ここまで読み進めてくれているということは「エンジニアになる」と決心がついている。

では、無数にあるプログラミング言語で何を学ぶべきか?

代表的なものをいくつかピックアップし、私の実経験も踏まえてそれぞれの特徴を解説する。

【Web系】

Web系はさらに「フロントエンド」と「バックエンド」に分かれる。

フロントエンドは、ユーザーが直接目にする画面を作る領域だ。使う言語はHTML、CSS、JavaScript。この3つは必須で、ここを避けてフロントエンドは成り立たない。

そしてJavaScriptの上に乗るフレームワークとして、React、Vue.js、Next.jsなどがある。

React:現場での求人数が多い印象。スタートアップから大手まで幅広く採用されており、迷ったらReactを軸にしておけば間違いない。

Vue.js:日本企業での採用が比較的多く、学習コストがReactより低いと言われている。

Next.js:Reactをベースにしたフレームワークで、SSR(サーバーサイドレンダリング)やSEO対策が必要なプロジェクトで重宝される。

フロントエンドの強みは、学習の「手触り感」。コードを書けば画面が変わる。色が変わる、ボタンが動く、アニメーションがつく。プログラミング初心者にとってモチベーション維持に直結するのではないか。

ただし、フロントエンドは技術の移り変わりが激しいことも頭に入れておくべきだ。

バックエンドは、ユーザーの目には見えない裏側の処理を担う領域である。データベースとの連携、API設計、認証、セキュリティ、システムの「心臓部」を作る仕事だ。

言語の選択肢は広い。Python、Ruby、PHP、Java、Go、Node.js(JavaScript)。それぞれに特徴がある。

Python:文法のシンプルさと汎用性の高さが強み。Web開発だけでなく、データ分析やAI・機械学習にもそのまま展開できる。私自身もShopifyのEC管理システムをPythonで開発している。バックエンドの構築、データの自動処理、API連携、バックエンドで迷ったらPythonにしておけば間違いないと思う。

Ruby:日本での採用実績が豊富で、学習コストが低く、短期間でWebサービスのプロトタイプを立ち上げられるのが強みだ。近年は新規案件で採用するケースが減りつつあるという声もある。既存サービスの保守・運用案件は多いが、将来性という観点では怪しいかもしれない。

PHP:WordPressをはじめとするCMS開発で圧倒的なシェアを持つ。案件数はトップクラス。ただし、「PHPは古い」という印象を持たれがちで、単価はPythonやGoと比べるとやや低めになる傾向がある。

Java:大手企業の業務システム、金融、官公庁で圧倒的に強い。堅牢性と保守性が重視される現場では今も主流だ。ただし、学習コストは高く、文法も冗長で、初心者にとってはハードルが高い。

Go:Googleが開発した言語で、高速な処理性能と並行処理の強さが特徴。バックエンドの中でも「次世代のスタンダード」として注目されている。案件単価も高め。ただし、日本国内の案件数はまだPythonやJavaほど多くはない印象。

Node.js:フロントエンドと同じJavaScriptでバックエンドも書けるという利点がある。フロントエンドからキャリアを始めた人が、バックエンドにも領域を広げたい場合に選ばれやすい。

Web系全体の強みは、圧倒的な案件数とキャリアの柔軟性だ。フロントからバックエンド、さらにはデータ分析やAI開発まで、横展開がしやすい。

【ネイティブ系】

スマートフォン向けアプリケーションを開発する領域。大きく分けて「ネイティブ開発」と「クロスプラットフォーム開発」2つのアプローチがある。

ネイティブ開発は、各プラットフォーム専用の言語で開発する手法だ。iOSならSwift、AndroidならKotlin。それぞれのOSに最適化されたパフォーマンスとUXを実現できる。

Swift:私はSwiftでiOS開発をずっと行ってきた。PayPayやチームラボでの現場経験もこの領域で積んでいる。Swiftの強みは、Appleエコシステムとの親和性だ。iPhone、iPad、Apple Watch、Mac、すべてのAppleデバイス向けアプリをSwiftで開発できる。iPhoneを昔から使用していて、Appleに思い入れがあり、「なるならiOSエンジニアだ」と最初から決めていた。

Kotlin:Android開発の公式推奨言語で、Javaとの互換性を持ちながらモダンな文法で書ける。日本はiPhoneのシェアが高いためSwiftの需要が目立つが、グローバルに見ればAndroidのシェアが圧倒的でKotlinの需要も大きい。

ネイティブ開発の最大のメリットは、希少性の高さだ。Web系と比べて開発者の数が圧倒的に少なく、需要に対して供給が追いついていない。結果として、単価が高くなりやすい傾向がある。

そしてもう一つ、「目に見えるプロダクト」を作れるという体験の強さがある。自分が作ったものがApp Storeに並び、何万人もの人がダウンロードする。

エンジニアになる前にポートフォリオで開発したものを実際にリリースした時の感動は忘れられない。バックエンドやインフラエンジニアには得られない、この手触り感がモチベーションに直結する。

クロスプラットフォーム開発は、1つのコードベースでiOSとAndroidの両方に対応するアプリを作る手法だ。

代表的なフレームワークとしてFlutter(Dart言語)とReact Native(JavaScript/TypeScript)がある。

Flutter :Googleが開発したフレームワークで、Dart言語を使う。UIの描画エンジンを独自に持っており、iOSでもAndroidでも同じ見た目・同じ動きを実現できる。スタートアップを中心に採用が増えていて、1つのコードベースで両OSに対応できるため、開発コストを抑えたい企業にとっては魅力的な選択肢だ。

React Native:Meta(旧Facebook)が開発したフレームワークで、JavaScriptまたはTypeScriptで書ける。Web系のフロントエンド経験がある人にとっては、学習コストが比較的低い。

クロスプラットフォームの弱点は、「両方できる」が「どちらも中途半端になりうる」というリスクだ。OS固有の機能やデザインに深く踏み込むなら、結局ネイティブの知識が必要になる。なので、クロスプラットフォーム言語+ネイティブ言語という経験が問われるパターンが多い印象だ。

ネイティブ系全体のデメリットとしては、案件数はWeb系より少なく、東京・大阪などの大都市圏に集中しがちだ。リモートであっても都市に住んでいる方限定という場合もあるので地方で探すなら選択肢は限られる。

希少性が高い分、入り口は狭い。だが、入った先の見返りは大きいと感じる。

インフラ系

サーバー、ネットワーク、クラウド環境の設計・構築・運用。アプリケーションが動く「土台」を作る領域だ。

インフラ系はさらに「オンプレミス」と「クラウド」に分けられる。

オンプレミス:物理的なサーバーやネットワーク機器を自社で管理する手法だ。企業のサーバールームやデータセンターに実機を置き、ハードウェアの選定・設置・保守まで行う。金融機関や官公庁など、セキュリティ要件が厳しい環境では今でも主流だ。Linux、Windows Serverの知識に加え、ネットワーク(TCP/IP、DNS、ファイアウォール)、ストレージ、仮想化技術(VMware、Hyper-V)などの知識が求められる。

クラウド:AWS、GCP、Azureといったクラウドサービス上にインフラを構築する手法だ。現在の主流はこちらで、多くの企業がオンプレミスからクラウドへの移行を進めている。

AWSは市場シェアトップで、案件数も圧倒的に多い。まずAWSを押さえておけば仕事に困ることはまずないだろう。GCPはGoogleのサービスとの親和性が高く、データ分析やAI/ML基盤として強い。AzureはMicrosoft製品との統合が強みで、エンタープライズ領域で存在感がある。

インフラ系のメリットは、安定感と需要の底堅さだ。クラウド移行の波はまだ続いており、インフラエンジニアの需要は高い。Web系やネイティブ系と比べて「流行り廃り」に左右されにくく、基盤技術は簡単には変わらないと思う。また、セキュリティやネットワークの知識は業界を問わず必要とされるため、転職時の選択肢が幅広い。

デメリットは成果が目に見えにくいことだ。アプリのように「これが自分の作品」と見せられるものがない。障害が起きなければ誰にも気づかれず、障害が起きれば真っ先に呼ばれる。地味だが責任は重い。

また、緊急のトラブルシューティングが発生しやすく、夜間に作業が発生する現場も見てきた。「安定した技術」を扱う仕事ではあるが、「安定した働き方」とは限らない点は覚悟が必要。

私のオススメ

独断と偏見でいうと、下記になる。

  • 早く案件を取りたい、リスクを抑えたい → Web系(Python)
  • 高単価を狙いたい、差別化したい → ネイティブ系(Swift/Kotlin)

私は結果的に両方を経験した。最初はSwiftでiOSアプリ開発を学び、その後Pythonにも手を広げた。複数の言語を扱えることで選択肢が大きく増えた。

この「対応幅の広さ」は、フリーランスとして活動する上で大きな武器になっている。

ただ、転職時はまずは1つに絞って「実務ですぐに通用するレベル」まで到達すること。それが最優先だ。

2026年現在の現場で必須なスキル(言語以外)

実際の現場で使われている技術スタックを紹介する。

言語スキルに関しては変化が激しいので、ツール等を主にピックアップしてみた。

  • バージョン管理:Git(必須中の必須)
  • コミュニケーション:仕様書を読む力
  • AIツール:Claude Code, Devin

直近で大きく変わったのが、AIツール使用だ。使いこなすスキルは「必須」である。

主流はClaude Code, Devinで、転職前に1度触っておくのが良い。

Gitは依然として必須。これがわからないと、チーム開発に参加できない。基礎的な操作(clone, commit, push, pull, branch, merge)は、必ず身につけておくこと。

年収レンジと、それぞれの働き方

これは私の経験と、周囲のエンジニアからのヒアリングに基づく目安である。

SES(正社員)

  • 未経験〜1年目:年収300〜400万円
  • 2〜3年目:年収400〜550万円
  • 4〜5年目:年収500〜650万円

自社開発(正社員)

  • 未経験〜1年目:年収350〜450万円
  • 2〜3年目:年収450〜600万円
  • 4〜5年目:年収550〜750万円

フリーランス

  • 実務経験1〜2年:月単価40〜60万円(年収換算480〜720万円)
  • 実務経験3〜5年:月単価60〜90万円(年収換算720〜1,080万円)
  • 実務経験5年以上:月単価80〜120万円(年収換算960〜1,440万円)

フリーランスの数字を見ると、「いきなりフリーランスになりたい」と思うかもしれないが、実務経験なしでフリーランスになるのはほぼ不可能だ。

まずはSESか自社開発で実務経験を積み、その後フリーランスに転身する。これが王道ルートになる。

重要なのは「実務経験」がすべてのステージアップの鍵になるということ。正しく経験を積めば、3〜5年でこのレベルに到達できる。これはAI時代になっても変わっていない。

「今の収入を2倍以上にする」のは、着実に続ければ確実に達成できる目標であるということだ。

04. 6ヶ月で「作れる人」になるロードマップ

プログラミングスクールをオススメしない理由

ここで、多くの人が検討するであろう「プログラミングスクール」について、私の正直な意見を述べておく。

結論、スクールはオススメしない。理由は3つある。

1. 高額すぎる

プログラミングスクールの相場は、50万円〜100万円。中には150万円を超えるものもある。

これだけの大金を払って得られるものは何か。「カリキュラムに沿った学習」と「質問できる環境」と「転職サポート」だ。

しかし、今の時代なら無料または格安で手に入る。

50万円〜100万円があれば半年分の生活防衛資金にもなるし、AIを使い倒す費用にもなる。

あなたの貴重な資産をスクールに払うのは勿体無い。

2. AIに聞いた方が早い

スクールの売り文句の一つに、「現役エンジニアに質問し放題」がある。

数年前までは価値があったが、AIが出てきた今はほぼ価値がないと言っていいだろう。

AIの回答は全てが正しいわけではないからこそ、それを検証することも必要になってくる。それがエンジニアとして最も重要なスキルなのだ。

スクールで「正解」を教えてもらう学習スタイルでは、この力は身につかない。自分で調べ、自分で検証し、自分で判断する。このプロセスを経験すること。

3. 採用担当からの印象が悪い

現場で見聞きした現実としては、採用担当によってはマイナス評価になることが多い。

それは「カリキュラム通りにやれば卒業できる」「言われたことをやればエンジニアになれる」のような受け身の姿勢と取られるからだ。

一方、独学で学んだ人は、自分で調べ、自分で解決し、自分で実務を取った経験がある。この「自走力」を採用担当は評価してくれる。

AIを最強の教材として使用する方法

昔であればProgateやUdemyなどが教材として良かったが今はAIが最強の教材である。

下記がプロンプトだ。

※使用言語欄にはSwift/Python/JavaScript等、自分が学んでいる言語を指定

Prompt 1:環境構築〜基礎文法編

# 前提条件
使用言語:[]
対象者:プログラミング完全初心者
最終目標:6ヶ月後に実務レベルのポートフォリオ完成、副業案件獲得または転職

# このプロンプトで生成する範囲
第1章〜第6章(環境構築〜外部ライブラリまで)

---

## 第1章:環境構築(Environment Setup)

### 1-1. 開発環境のインストール
- OS別(Windows/Mac/Linux)の詳細手順
- IDE/エディタのインストールと初期設定
  - 推奨エディタ名と理由
  - 必須プラグイン/拡張機能リスト
  - フォント・テーマ・ショートカットキー設定
- 言語本体のインストール
  - バージョン管理ツール(pyenv, nvm, rbenv等)の導入
  - 推奨バージョンとその理由
- パッケージマネージャーのセットアップ
  - Python: pip, poetry
  - JavaScript: npm, yarn, pnpm
  - Swift: CocoaPods, Swift Package Manager
  - 各コマンドの実行例を記載

### 1-2. SourceTree(Gitクライアント)のセットアップ
- SourceTreeのダウンロードとインストール(OS別手順)
- GitHubアカウント作成手順
- SourceTreeとGitHubアカウントの連携設定
  - SSH鍵の生成と登録(SourceTreeのGUI操作で説明)
  - 認証設定の確認
- SourceTreeの基本画面説明
  - ワークスペース、ステージング、コミット履歴の見方
  - 各ボタン・パネルの役割

### 1-3. SourceTreeで初回リポジトリ作成の実践
- 新規リポジトリの作成(GUIでの操作手順)
- ファイルの追加とステージング(ドラッグ&ドロップ操作)
- 初回コミット(コミットメッセージの書き方)
- GitHubへのプッシュ(リモートリポジトリ追加とプッシュボタン操作)
- .gitignoreファイルの設定(言語別テンプレート)
- [スクリーンショット推奨: ステージング→コミット→プッシュの流れ]

### 1-4. 最低限のターミナル/コマンドライン知識
- 開発に必要な基本コマンド10選のみ
  - cd(ディレクトリ移動)
  - ls / dir(ファイル一覧)
  - mkdir(フォルダ作成)
  - code .(VSCodeでフォルダを開く)
  - python/node(プログラム実行)
- 各コマンドの実行例と出力結果
- パスの概念(相対パス・絶対パス)
- **注記:Git操作は全てSourceTreeで行うため、git コマンドの暗記は不要**

---

## 第2章:言語の基礎文法(Syntax Fundamentals)

**重要:各項目で必ず以下を含めること**
1. 概念の説明(中学生でも理解できる日常の例え)
2. 実際に動くソースコード(10行以内)
3. コード実行方法(ファイル名、実行コマンド)
4. 実行結果の出力例
5. よくあるエラーとその対処法

### 2-1. 変数とデータ型
- 変数の宣言方法(let, var, const等、言語により異なる)
- 基本データ型(数値、文字列、真偽値、配列、辞書/オブジェクト)
- 型推論と明示的型指定
- ソースコード例(3-5行)
- 実行方法と出力結果

### 2-2. 演算子
- 算術演算子(+, -, *, /, %)
- 比較演算子(==, !=, <, >, <=, >=)
- 論理演算子(&&, ||, !)
- ソースコード例とその実行結果

### 2-3. 条件分岐(if/else, switch)
- if文の基本構文
- else if, else の使い方
- switch/case文(言語によっては該当なし)
- 三項演算子
- 実践例:「年齢判定プログラム」の完全なソースコード

### 2-4. 繰り返し処理(ループ)
- for文(範囲指定、配列の要素ループ)
- while文
- break, continue
- 実践例:「九九表を出力するプログラム」の完全なソースコード

### 2-5. 配列とコレクション
- 配列の宣言、要素の追加・削除・アクセス
- 配列操作メソッド(map, filter, reduce等)
- 辞書/オブジェクト/ハッシュ(key-value)
- ソースコード例:「生徒の成績を管理するプログラム」

### 2-6. 関数
- 関数の定義方法
- 引数と戻り値
- デフォルト引数、可変長引数
- スコープの概念
- 実践例:「税込価格を計算する関数」の完全なソースコード

各セクション末に「まとめ」(学んだことの要点3-5個)を追加

---

## 第3章:オブジェクト指向(OOP)

### 3-1. クラスとオブジェクト
- クラスの定義方法(class キーワード)
- インスタンスの生成
- コンストラクタ(初期化メソッド)
- 実践例:「Personクラスを作る」完全なソースコード
  - 名前、年齢のプロパティ
  - 自己紹介メソッド

### 3-2. 継承
- 親クラスと子クラス
- オーバーライド
- 実践例:「動物クラスを継承して犬・猫クラスを作る」

### 3-3. カプセル化
- アクセス修飾子(public, private, protected)
- ゲッター・セッター

### 3-4. ポリモーフィズム
- インターフェース/プロトコル
- 実践例の完全なソースコード

---

## 第4章:エラーハンドリング

### 4-1. 例外処理の基本
- try-catch構文(言語により異なる)
- finally句
- 実践例:「ファイル読み込み時のエラー処理」完全なソースコード

### 4-2. エラーメッセージの読み方
- スタックトレースの見方
- よくあるエラー10選と対処法
  - SyntaxError
  - NameError / ReferenceError
  - TypeError
  - その他言語特有のエラー

---

## 第5章:ファイル操作とデータ処理

### 5-1. ファイルの読み書き
- テキストファイルの読み込み
- テキストファイルへの書き込み
- CSVファイルの操作
- JSONファイルの操作
- 各操作の完全なソースコード例

### 5-2. パス操作
- ファイルパスの取得・結合
- ディレクトリ操作
- 実行例とコマンド

---

## 第6章:外部ライブラリ/パッケージ管理

### 6-1. パッケージのインストール
- パッケージマネージャーの使い方
  - Python: `pip install [package]`
  - JavaScript: `npm install [package]`
  - Swift: Podfile/Package.swift
- requirements.txt / package.json の作成

### 6-2. よく使うライブラリ5選
- 各ライブラリの用途
- インストールコマンド
- 基本的な使い方のソースコード例

---

# 出力形式の指定

1. **全セクションで必ずソースコードを含める**
   - コードブロックには言語指定必須
   - コメントを日本語で記載
   - 実行方法を明記
   - 実行結果の出力例を記載

2. **Markdown形式**
   - 見出しレベルを統一
   - 目次を冒頭に自動生成

3. **各章末に「まとめ」**
   - 学んだことの要点3-5個

このPart 1で環境構築から基礎文法、外部ライブラリまでをカバーしてください。

Prompt 2:実践スキル編

# 前提条件
使用言語:[]
対象者:プログラミング完全初心者
最終目標:6ヶ月後に実務レベルのポートフォリオ完成

# このプロンプトで生成する範囲
第7章〜第12章(API連携〜セキュリティ基礎まで)

---

## 第7章:API連携とHTTP通信

### 7-1. HTTP基礎
- GET, POST, PUT, DELETEの違い
- ステータスコード(200, 404, 500等)
- リクエストとレスポンスの構造

### 7-2. APIリクエストの実装
- HTTP通信ライブラリの使い方
  - Python: requests
  - JavaScript: fetch/axios
  - Swift: URLSession
- 実践例:「天気APIから情報を取得するプログラム」完全なソースコード
  - APIキーの取得方法
  - リクエスト送信
  - レスポンス処理

### 7-3. JSON操作
- JSONとは何か
- JSONのパース(文字列→オブジェクト)
- JSONへのシリアライズ(オブジェクト→文字列)
- ソースコード例

---

## 第8章:データベース基礎

### 8-1. データベースとは
- RDBとNoSQLの違い
- SQLite/PostgreSQL/MySQL/MongoDB等の選択基準

### 8-2. SQL基本操作
- CREATE TABLE(テーブル作成)
- INSERT(データ挿入)
- SELECT(データ取得)
- UPDATE(データ更新)
- DELETE(データ削除)
- WHERE, ORDER BY, JOIN
- 各操作の実行例

### 8-3. 言語からのDB接続
- ORM/クエリビルダーの使い方
  - Python: SQLAlchemy
  - JavaScript: Prisma, Sequelize
  - Swift: Core Data, Realm
- 実践例:「ユーザー情報をDBに保存・取得するプログラム」完全なソースコード

---

## 第9章:テストコード

### 9-1. テストの基礎
- 単体テスト(Unit Test)とは何か
- なぜテストが必要なのか
- テストフレームワーク
  - Python: pytest
  - JavaScript: Jest
  - Swift: XCTest

### 9-2. テストコードの書き方
- テストケースの作成
- アサーション(assert)
- テストの実行方法
- 実践例:「税込価格計算関数のテストコード」完全なソースコード

### 9-3. テスト駆動開発(TDD)の考え方
- Red-Green-Refactorサイクル
- 簡単な実践例

---

## 第10章:SourceTreeでのGit実践

### 10-1. 日常的なGit操作(全てSourceTreeのGUI操作で説明)
- ファイル変更の確認(変更ファイル一覧の見方)
- ステージング(変更をコミット対象に追加)
- コミット(変更を記録、良いコミットメッセージの書き方)
- プッシュ(GitHubに反映)
- プル(最新版を取得)
- [スクリーンショット推奨: 各操作のボタン位置と画面遷移]

### 10-2. ブランチ操作(全てSourceTreeのGUI操作で説明)
- ブランチとは何か(作業の「枝分かれ」の概念)
- 新しいブランチの作成方法
- ブランチの切り替え
- マージ(ブランチを統合)
- コンフリクト(競合)が起きた時の解決手順
  - SourceTreeでのコンフリクト表示
  - ファイルを開いて手動修正
  - 解決後のコミット
- [スクリーンショット推奨: ブランチ操作の画面例]

### 10-3. GitHubでの協業
- Issue(課題管理)の使い方
- Pull Request(変更提案)の作成方法
- レビュー文化とコメントの書き方

### 10-4. SourceTreeのトラブルシューティング
- よくあるエラーと対処法
  - 「プッシュできない」
  - 「コンフリクトが解決できない」
  - 「間違えてコミットしてしまった」時の取り消し方法

---

## 第11章:デバッグ技術

### 11-1. print文デバッグ
- 変数の中身を確認する方法
- どこにprint文を入れるべきか
- ソースコード例

### 11-2. ブレークポイント
- IDEでのデバッガ使用方法
- ブレークポイントの設定
- ステップ実行(step over, step into, step out)
- 変数の監視

### 11-3. ログ出力
- ロギングライブラリの使い方
- ログレベル(DEBUG, INFO, WARNING, ERROR)
- ログファイルへの出力

---

## 第12章:セキュリティ基礎

### 12-1. 認証と認可
- 認証(Authentication)と認可(Authorization)の違い
- パスワードのハッシュ化
- JWTトークンの基礎

### 12-2. 脆弱性対策
- SQLインジェクション
  - 攻撃の仕組み
  - 対策コード例
- XSS(クロスサイトスクリプティング)
  - 攻撃の仕組み
  - 対策コード例
- CSRF(クロスサイトリクエストフォージェリ)
  - 攻撃の仕組み
  - 対策コード例

### 12-3. 環境変数とシークレット管理
- APIキーやパスワードをコードに書かない
- .envファイルの使い方
- .gitignoreでの除外設定

---

# 出力形式の指定

1. **全セクションで必ずソースコードを含める**
   - コードブロックには言語指定必須
   - コメントを日本語で記載
   - 実行方法を明記
   - 実行結果の出力例を記載

2. **Markdown形式**
   - 見出しレベルを統一
   - 目次を冒頭に自動生成

3. **各章末に「まとめ」**
   - 学んだことの要点3-5個

このPart 2でAPI連携からセキュリティ基礎までをカバーしてください。

Prompt 3:ポートフォリオ制作〜演習問題編

# 前提条件
使用言語:[]
対象者:プログラミング完全初心者
最終目標:6ヶ月後に実務レベルのポートフォリオ完成

# このプロンプトで生成する範囲
第13章〜第16章+付録(ポートフォリオ制作〜演習問題+次のステップ)

---

## 第13章:ポートフォリオ制作

### 13-1. 企画の立て方
- 解決する課題の発見方法
- ターゲットユーザーの設定
- 機能要件の洗い出し
- 最低限実装すべき機能リスト

### 13-2. 技術選定
- フレームワークの選び方
- データベースの選び方
- なぜその技術を選んだのかを説明できるようにする

### 13-3. 設計
- ディレクトリ構成の例
- データベース設計(ER図の簡単な書き方)
- API設計(エンドポイント一覧)

### 13-4. 実装の進め方
- MVCアーキテクチャの基礎
- コーディング規約
- 段階的な実装(まず動くものを作る→機能追加→リファクタリング)

### 13-5. README.mdの書き方
- プロジェクト概要
- 技術スタック
- セットアップ手順
- 使い方
- スクリーンショット
- テンプレート例

---

## 第14章:デプロイ

### 14-1. Web系のデプロイ
- Vercel/Netlify/Herokuの使い方
- 環境変数の設定
- カスタムドメインの設定
- GUI操作での手順説明

### 14-2. アプリ系のデプロイ
- App Store/Google Playへの申請手順
- 証明書・プロビジョニングプロファイル
- スクリーンショットとアプリ説明文の準備

---

## 第15章:初心者が躓くポイントTOP10

各ポイントについて:
1. 何が起きるか
2. なぜ起きるか
3. 解決方法(コード例付き)
4. 予防策

例:
- ポイント1: パスが通っていない
- ポイント2: インデントエラー
- ポイント3: 変数のスコープ
- ポイント4: 非同期処理の理解
- ポイント5: データ型の不一致
- など

---

## 第16章:実務想定演習問題

### 初級問題(5問)
各問題に以下を含める:
- 問題文
- ヒント
- 解答例(完全なソースコード)
- 別解
- よくある間違い

### 中級問題(3問)
(同上)

### 実務レベル課題(1問)
- ポートフォリオとして提出できるレベルの課題
- 要件定義
  - ユーザーストーリー
  - 機能要件
  - 非機能要件
- サンプル解答
  - ディレクトリ構成
  - 主要なコード例
  - README.md例

---

## 付録A:よく使うコマンド集(最小限)

開発に必要な10コマンドのみ:
1. cd(ディレクトリ移動)
2. ls / dir(ファイル一覧)
3. mkdir(フォルダ作成)
4. code .(VSCodeでフォルダを開く)
5. python / node(プログラム実行)
6. pip install / npm install(パッケージインストール)
7. その他言語固有のコマンド

**注記:Git操作はSourceTreeで行うため、gitコマンドは含めない**

---

## 付録B:エラー解決チートシート

エラー名で検索できる形式:
- SyntaxError → 原因と対処法
- NameError / ReferenceError → 原因と対処法
- TypeError → 原因と対処法
- その他言語特有のエラー10-15個

---

## 付録C:次に学ぶべきこと

この教材を終えた後のロードマップ:

### 1. フレームワーク学習
- Web系
  - Python: Django, Flask, FastAPI
  - JavaScript: React, Vue, Next.js
  - Swift: SwiftUI
- 学習方法と参考リソース

### 2. インフラ・クラウド
- Docker基礎
- AWS/GCP/Azure入門
- CI/CDの概念

### 3. アルゴリズムとデータ構造
- なぜ必要なのか
- 学習すべき基本的なアルゴリズム
- 競技プログラミングの活用

### 4. チーム開発スキル
- コードレビューの受け方・やり方
- ドキュメンテーション
- コミュニケーション

---

# 出力形式の指定

1. **全セクションで必ずソースコードを含める**
   - コードブロックには言語指定必須
   - コメントを日本語で記載
   - 実行方法を明記
   - 実行結果の出力例を記載

2. **Markdown形式**
   - 見出しレベルを統一
   - 目次を冒頭に自動生成

3. **各章末に「まとめ」**
   - 学んだことの要点3-5個

4. **初心者フレンドリーな表現**
   - 専門用語は必ず平易な言葉で解説
   - 「なぜそうするのか」の理由を常に説明

AIに生成してもらった教材で、大枠を掴んでいく。

初期段階は概念の理解に苦しむので、なるべく簡単な言葉でインプットしていくこと。

それとは別に、基礎的な書籍は買っておくことを推奨する。それは国語であれば広辞苑のような存在であり基礎になるものだ。概念が理解できたら内容もスッと入ってくる。

実践入門シリーズがうまくまとまっていてオススメである。

さらに、学習計画もAIに出力してもらうと便利。

【6ヶ月学習ロードマップ生成プロンプト】

使用言語:[]
目標:実務レベルのポートフォリオ完成と副業案件獲得

以下の形式で24週間の学習計画を生成してください:

各週の構成:
- Week X: [学習テーマ]
- インプット内容(何を学ぶか)
- アウトプット課題(何を作るか)
- 理解度チェック項目(3-5個)
- つまづきポイントと対処法

マイルストーン:
- Month 1-2: 基礎固め
- Month 3-4: 実践的な開発
- Month 5: ポートフォリオ制作
- Month 6: 副業案件獲得・就職活動準備

最終週(Week24)には「ポートフォリオ完成+初案件獲得または内定」を設定すること。

ポートフォリオは「収益化できるレベル」を目指せ

ここが最重要ポイントだ。

未経験からエンジニアになる際、ポートフォリオは必須。しかし、多くの人が「ポートフォリオの作り方」を間違えている。

よくある失敗例

・ToDoアプリを作って終わり
・Twitterのクローンを作る
・教材の模写をそのまま見せる
・技術的にはできているが、誰が使うのかわからない

これらのポートフォリオはありきたりで誰が作っても同じだし、AIだったら秒速で作れる。

正しいポートフォリオとは

面接官が見ているのは、「この人は、実際の業務で使えるか?」という点だ。

実際の業務では、「誰のために」「どんな問題を解決するか」を考えながら開発する。その思考プロセスをポートフォリオで見せる必要がある。

私は「収益化できるレベル」くらいが必要だと考えている。

課金やサブスク機能の実装や、ユーザーへの価値提供など、1つのビジネスとして成り立つくらい。実際にお金を稼ぐ必要はないが、それくらいの規模感だ。

具体的には、以下の要素を含めてほしい。

  1. 明確なターゲットユーザー
    • 「このアプリは、〇〇で困っている人のために作った」と言えること
  2. 解決する課題
    • ユーザーが抱える具体的な悩みと、それをどう解決するか
  3. 実際に使えるレベルの完成度
    • バグがない、UIが整っている
  4. 技術レベルの完成度
    • 使用した技術(フレームワークなど)はモダンか?など

大事なのは、「なぜこれを作ったか」を語れること。自分の経験や課題意識から出発していれば、面接で説得力のある説明ができる。さらに作ることに熱中することで学習という枠組みからも抜け出せる。

「エンジニアになりたいけどポートフォリオが必要なのでとりあえずToDoアプリを作りました」

「飲食店で働いていたとき、シフト調整がめちゃくちゃ面倒だったんです。だから、これを解決するアプリを作りました」

では、後者の方が圧倒的に採用されやすいのは確実だ。

朝の2時間が人生を変える

ここは学習・作成の際の時間捻出方法について軽く触れておきたい。

私は最初、夜に学習の時間を設定していた。仕事が終わるのは19時過ぎ、そこから勉強をしても頭が働かない感覚があり、集中力も持たない。

そこで、「朝早く起きてやる」という発想に変えた。

早朝は、誰にも邪魔されない。スマホの通知も来ない。頭がクリアで、集中力が高い。同じ2時間でも、夜と朝では生産性が全く違う。

フリーランスになった今も、朝の時間を最も重要な作業に充てている。この習慣は、プログラミング学習時代に身についたものだ。

なのでもしあなたが「作業する時間がない」と感じているなら、朝を試してほしい。

05. 実務経験ゼロは話にならない

なぜ「完全未経験」では落とされるのか

「ポートフォリオはありますが、実務経験はありません」

これだと、今では書類選考も通らないだろう。

エンジニアを採用するには、コストがかかる。給料だけでなく、教育コスト、マネジメントコスト、失敗のリスク。業界未経験者を迎えるのは、企業にとって大きな投資だ。

その投資に見合うリターンがあるかどうか、企業は見極めようとする。

「ポートフォリオを作りました」だけでは足りないのだ。

・この人は、本当にプログラミングが好きなのか?
・困難に直面したとき、逃げずに向き合えるのか?
・自分で学び、成長し続けられるのか?

これらの疑問に答えるには「実績」が必要だ。

お金にならなくてもいいから

「自分でサービスを作り、誰かに使ってもらった」
「副業案件にジョインして、複数人で開発した」

このような経験が必要なため、スクールを卒業しただけでは不十分なのだ。それが、就職活動のスタートラインである。

クラウドワークスで最初の1件を取る方法

「でも、未経験で案件なんて取れるの?」

取れる。ただし、戦略が必要だ。

クラウドワークスで未経験者が案件を取るための具体的な手順を教えよう。

ステップ1:プロフィールを徹底的に作り込む

アイコンは清潔感のあるものであればOK。経験者であればキャラクターのアイコンでも問題ないが、スキルが低いうちは顔がわかる方が相手は安心する。そして自己紹介文には以下を含める。

  • 何ができるか(スキルセット)
  • どのくらい時間を使えるか(稼働可能時間)
  • 作ったもののリンク(ポートフォリオ)
  • 意気込み

プロフィールには「実務未経験ではあるが、誠意を持って取り組む姿勢」ということも書いておこう。

ステップ2:最初は「実績作り」と割り切る

最初は相場より安く、極論タダに近い値段でも構わない。目的は「実績を作ること」だからだ。

2,3件こなせたら徐々に報酬を上げていけばOK。

ステップ3:案件選びの基準

未経験者が狙うべき案件の特徴はこうだ。

  • 小規模(予算が5万円以下)
  • 明確な仕様(何を作ればいいか具体的に書いてある)
  • 納期に余裕がある(1週間以上)

知人の案件を無料でやる価値

クラウドワークスがハードルが高いと感じるなら、別の方法がある。

知人や友人から仕事をもらうことだ。

「無料でもいいから、何か作って欲しいものはないか?」と聞くと意外と案が出てくることがある。個人事業主の友人がホームページを必要としているかもしれない。親戚が経営する店のメニュー表示システムを作れるかもしれない。

この段階では「お金」より「経験」の方がはるかに価値があるので無料で引き受けよう。

  1. 実務に近い経験が積める
    • 実際のユーザー(知人)からフィードバックをもらえる
    • 「動けばOK」ではなく「使いやすいか」を意識せざるを得ない
  2. ポートフォリオに載せられる
    • 「実際に使われているもの」は、教材の模写より1000倍価値がある
  3. 口コミで次の案件につながる可能性
    • 「知り合いが作ってくれたシステムめっちゃいい」→ 紹介が生まれる
  4. プレッシャーが少ない
    • ミスしたり、最悪完成しなくても問題ない場合が多い

私はクラウドワークスで数件実績を積んだあと、たまたまTwitterで知り合ったエンジニアの方に誘われ小規模開発に参加した。会社規模でやってるわけではないので報酬はゼロだった。

しかし、その経験が自信になり、スキルになった。そして実際の転職へつながった。

06. 就職活動の現実と攻略法

自社開発・受託・SESの正直な比較

エンジニアとして働く形態は、大きく3つに分けられる。

自社開発企業

自社でプロダクトやサービスを持ち、それを開発・運用する企業。メルカリ、サイバーエージェント、LINEなどが代表例だ。

メリット:

・一つのプロダクトに長く関われる
・福利厚生が充実していることが多い
・企業ブランドが履歴書に残る

デメリット:

・未経験での入社は極めて難しい
・技術スタックが固定される傾向
・「プロダクトに縛られる」感覚を持つ人も
・給与が上がりづらい

正直なところ、未経験から自社開発企業に入るのは、かなりハードルが高い。ポートフォリオはもちろん、ある程度の実務経験がないと書類選考すら通らない。知人が未経験で大手に内定をもらった事例もあったが稀である。

受託開発企業

クライアントから依頼を受けて、システムやアプリを開発する企業。SIer(システムインテグレーター)と呼ばれることもある。

メリット:

・多様な業界・技術に触れられる
・案件ごとに新しい経験ができる
・会社で案件を請け負うので、社内で相談しやすい

デメリット:

・納期のプレッシャーが強い
・クライアントの都合に左右される
・残業が多い傾向

受託開発は、未経験者にとって現実的な選択肢の一つ。ただし、企業によって労働環境の差が激しいと聞くので、慎重に選ぶ必要がある。

SES(システムエンジニアリングサービス)

エンジニアを客先に派遣(常駐)させるビジネスモデル。技術者派遣とも呼ばれる。

メリット:

・未経験でも採用されやすい
・大手企業のプロジェクトに参加できる
・案件を通じて実務経験が積める
・合わない現場は変えられる

デメリット:

・「派遣」という立場に抵抗を感じる人も
・基本1人で案件に入るので相談する相手がいない
・悪質な企業も存在する(後述)

SESはネット上では批判されることも多い。しかし、正しい道に向かえば未経験からエンジニアになる最短ルートとしてこれ以上の選択肢はないと私は考えている。

未経験者が最初に選ぶべき選択肢

結論、「とにかく早くエンジニアになって収入を上げたい」なら、SES一択だ。理由はシンプルで、SESが最も採用ハードルが低い。

自社開発企業は即戦力を求め、未経験者を育てる余裕はほぼない。

受託開発もある程度の経験が必要とされる。

一方、SESはビジネスモデル的に「人を派遣してその対価を得る」ことが重要であり、未経験から育て優秀なエンジニアに成長させて会社の売上を増やす手法があるからだ。

「でも、SESって搾取されるイメージがある」

確かに、悪質なSES企業が存在するのは事実。しかしすべてのSES企業が悪質なわけではない。良い企業を選べば、未経験から実務経験を積むための最高の環境になる。

私自身、SESからキャリアをスタートした。選んだ理由は採用ハードルが低いこともあるが、それ以上に私が飽きっぽい性格という事があり1つの場所で長くやるより色々な案件を転々としたかったからだ。

そして、PayPayやチームラボといった有名企業のプロジェクトに参加できた。これはSESという形態のおかげである。

SESを「ゴール」ではなく「ジャンプ台」として考えること。2〜3年の実務経験を積んだら、自社開発に転職するもよし、フリーランスになるもよし。キャリアの選択肢は実務経験を積んでからグッと広がる。

面接で伝えるべきこと、伝えてはいけないこと

面接は、あなたを「商品」として売り込む場である。

何を伝え、何を伝えないか。これが合否を分ける。

伝えるべきこと

  1. なぜエンジニアを目指すのか(ストーリー)
    • 単に「稼ぎたい」「手に職をつけたい」ではNG。あなた自身のストーリーを語ろう。
    • エンジニアに適性があるということを盛り込む(下記が例)
      • 「非効率を放置できず、自分で仕組みに変えて解決してきた経験がある」
      • 「問題を分解し、原因を特定して再現性のある解決に落とし込むのが得意だ」
  2. 何を作ったか(ポートフォリオ)
    • 具体的な成果物を見せつつ、口で説明しよう。
      • 「このアプリは、〇〇という課題を解決するために作りました。技術的には△△を使い、□□という点を工夫しました」
    • 作ったものについて、熱く語れるようになっておくこと。
  3. どう学んできたか(学習姿勢)
    • 企業が未経験者に求めるのは、「伸びしろ」である。
      • 「独学で〇〇を学び、詰まったときは△△の方法で解決してきました。今は□□の技術に興味があり、並行して学んでいます」
    • 自走できる人材であることをアピールする。
  4. 前職で得たスキル(ポータブルスキル)
    • これまで生きてきた強みを活かそう。
      • 「前職では、お客様対応を通じてコミュニケーション能力を磨きました。チームで働く中で、優先順位をつけて効率的に動く習慣も身につけました。これらはエンジニアとしても活かせると考えています」

伝えてはいけないこと

  1. 前職への不満(ネガティブな転職理由)
    • 「必ずエンジニアになりたい」というポジティブな方向に変換しよう。
  2. 自信のなさの表明
    • 「未経験なので自信がないのですが…」 「できるかわからないのですが…」などはNG。企業は「この人を採用して大丈夫か?」を判断している。自信のなさを見せると、不安材料になる。
    • わからないことは「まだ学習中ですが、キャッチアップします」と言い換える。
  3. 条件面の細かい質問(初回面接で)
    1. 条件の話は、内定が出てから。または「入社を前提に確認したいのですが」と前置きして聞く。
  4. 「すぐに辞めるつもりです」という印象を与えること
    1. 「2年くらいで転職するつもりです」「フリーランスになりたいので」
    2. 本心ではそう思っていても、面接では言わない。企業は長く働いてくれる人を求めている。
    3. 「まずは御社でしっかり経験を積み、技術力を高めたい」と伝える。

07. 私がオススメするSES企業

なぜ〇〇なのか

ここまで読んで、「SESで始めるのがいい」と理解してもらえたと思う。

しかし、いいSES企業の判断は非常に難しい。良い企業もあれば、悪質な企業もある。面接の時点で「これはヤバいな」という会社が数社あった。そういう悪質企業にあなたの貴重な時間を取られて欲しくない。

だから、私が実際に在籍していた企業を紹介する。

株式会社アイビスだ。

なぜこの企業をオススメするのか。3つの理由がある。

1. 研修制度がしっかりしている

未経験者にとって、入社後の研修は極めて重要だ。研修がない、または形だけの研修しかない企業では、現場に放り出されて溺れることになる。

アイビスでは、未経験者向けの研修プログラムが用意されている。基礎的な技術から、現場で必要なスキルまで、段階的に学べる環境がある。

「入社してから何をすればいいかわからない」という不安を、研修制度が解消してくれる。

2. 社長がベテランエンジニア

これは意外と重要。SES企業の経営者が技術者出身かどうかで、会社の方針が大きく変わる。

経営者が技術を理解していないと、エンジニアを「商品」としか見なくなる。技術的な成長よりもすぐに売上になる案件に押し込もうとする。

アイビスの社長はベテランエンジニアだ。技術者のキャリアを理解している。だから、成長を重視した案件に入れてもらえる。私は現場で困ったことや悩み事があった時に直接相談に乗ってもらっていた。人間性という面でも非常に尊敬している。

3. 単価還元率が良い

SESのビジネスモデルでは、「客先に請求する金額」と「エンジニアに支払う給料」の差額が会社の利益になる。この還元率は、企業によって大きく異なる。

悪質な企業では、客先への請求が月80万円なのに、エンジニアの給料は月25万円、ということもある。還元率30%程度だ。

アイビスは、この還元率が良い。具体的な数字は公開できないが、業界平均と比較して、エンジニアに還元される割合が高い。努力が収入に反映されやすい環境だ。

良いSES企業の見分け方

アイビス以外にも良いSES企業は存在する。見分けるためのチェックポイントを教えよう。

1. 単価還元率を教えてくれるか

「客先にいくらで請求していて、あなたの給料はこうなっています」と開示してくれる企業は信頼できる。隠す企業は、何かやましいことがある可能性が高い。

面接で「単価と給料の関係を教えてください」と聞いてみよう。誠実に答えてくれるかどうかで、企業の姿勢がわかる。

2. 案件を選べるか

「この案件に行ってくれ」と一方的に決められるのか、「こんな案件があるけど、どう?」と相談があるのか。後者の企業の方が、エンジニアを大切にしている。

3. 研修制度があるか

前述の通り。未経験者向けの研修がある企業を選ぶべき。HPに記載がないパターンがほとんどなので面接で聞こう。

4. 口コミやSNSはどうか

OpenWork(旧Vorkers)、転職会議などで、実際の社員の声をチェックする。またSNSがある場合、社内の雰囲気などが確認できるので調べよう。

5. 面接で誠実に対応してくれるか

面接官の態度は会社の文化を反映する。質問にはぐらかしたり良いことしか言わない企業は要注意。

逆質問で「御社のデメリットは何ですか?」と聞いて正直に答えてくれる企業は信頼できる。

08. SESからフリーランスへの道

ステップ1:クラウドワークスで副業案件を獲得

プログラミングを学び始めて6ヶ月〜1年。ポートフォリオを作りながら、クラウドワークスで小さな案件を受注した。最初は5,000円〜1万円の案件。報酬は少ないが、「実際にお金をもらって開発する」という経験を積んだ。

この段階で得たもの:

  • 「自分でも稼げる」という自信
  • クライアントとのやり取りの経験
  • ポートフォリオに載せられる実績

ステップ2:SES企業に入社し、実務経験を積む

クラウドワークスでの実績を武器に、SES企業に転職。未経験でも「副業で案件を受注していました」と言えると他の応募者より有利になる。

複数の現場を経験。PayPay、チームラボのプロジェクト。大企業の開発現場で、本格的な実務経験を積んだ。

この段階で得たもの:

  • 大規模開発の経験
  • チーム開発のスキル
  • 「〇〇のプロジェクトに参画」という経歴
  • 現場で出会ったエンジニアとの人脈

ステップ3:フリーランスに転身

SESで3年の経験を積んだ後、フリーランスに転身。エージェントを使って、案件を獲得。

フリーランスになったことで:

  • 月収が大幅にアップ(60万円 → 100万円)
  • 働く場所、時間の自由度が上がった

このルートのポイントは、「いきなりフリーランスを目指さない」こと。

最初からフリーランスはほぼ不可能。案件が取れない。取れても単価が低い。実務経験がないから難易度の高い案件はこなせない。

SESで「実務経験」という武器を手に入れてから、フリーランスに転身する。これが最短ルートだ。

フリーランスに転身するタイミング

「いつフリーランスになればいいですか?」

この質問もよく受ける。理想は3年。

「3年の実務経験」というのが案件のガイドラインになっていることが多いからだ。

09. よくある質問(Q&A)

英語できなくても大丈夫?

大丈夫。私は全くできない。

正直に言うと、私の英語力は中学生レベルだ。

PayPayの現場では、チームメンバーの8割が外国人だった。インド人、中国人、韓国人、アメリカ人。ミーティングも英語だった。

それでも大丈夫だった。

数学苦手でも大丈夫?

大丈夫。私は学生時代、数学で赤点を取っていた。

確かに、一部の領域では数学が必要。機械学習、データサイエンス、ゲーム開発(物理演算)。こうした領域では、数学的な素養が求められる。

しかし、Webアプリ開発やモバイルアプリ開発では、数学の知識はいらない。四則演算ができれば十分だ。

パソコンは何を買えばいい?

基本的には、MacでOK。

これは私の個人的な意見でもある。WindowsでもLinuxでもプログラミングはできる。しかし、Macを選んでおけば、間違いない。

理由は3つ。

1. iOSアプリ開発に必須

iOS開発をするならMacは必須。Xcodeという開発ツールがMac専用だからだ。

2. Web開発でも主流

現場のエンジニアは、圧倒的にMacユーザーが多い。

3. 中古なら安い

「Macは高い」というイメージがあるが、中古なら10万円以下で買える。

何歳までならエンジニアになれる?

確かに、40代は30代よりもさらに未経験からの転職は難しくなるのは事実。しかし、「不可能」ではない。

私が現場で出会ったエンジニアの中に、40代で未経験からエンジニアになった人が複数人いた。

年齢で諦めるよりも、「行動するかどうか」それだけである。

地方でもリモートで働ける?

可能。

コロナ禍でリモートワークが定着するかに思えたが、現在は出社に回帰している。しかし案件を見る限りフルリモートの案件はまだ多い。地方から参画OKという案件も多々ある。ただし、注意点として最初の1〜2年は、都市部の案件がオススメだ。

未経験者がいきなりフルリモートで働くのは難しい。わからないことを聞けない。チームの雰囲気がつかめない。孤立しやすい。

なので最初はできれば出社ありの案件で経験を積むことをオススメする。

もしくはリモートの案件に参画しつつ、SES(自社)の出社がたまにあるというパターンが良い。私はそうだった。

また、案件の選択肢は都市部より少ないのが現状。

フルリモート、高単価の案件、面白いプロジェクト、成長機会。これらは、都市部に集中している。

地方在住でリモートワークをする場合、案件探しに時間がかかることは覚悟しておいた方がいい。

10. おわりに: エンジニアという「手段」で、人生を取り戻す

ここまで読んでくれたあなたに、最後に伝えたいことがある。

エンジニアになることはゴールではない。手段だ。

私がエンジニアを目指したのは、飲食店での日々に限界を感じたから。収入を上げたい。リモートで働きたい。自分の時間をコントロールしたい。

エンジニアという職業が、私の人生を変えてくれた。

収入が4倍になり、毎日の通勤や嫌な上司から逃れられた。

圧倒的に人生の「選択肢」が増えた。それが一番大きな変化である。

しかしゴールではない。その先に自分がやりたいこと、実現したいことの通過点に過ぎない。

だから

「30代、40代だから遅い」
「AI時代だからエンジニアは不要」

という言葉には惑わされないで欲しい。

現実はもっとシンプルで、正しい方向に正しい努力をすれば、人生は変わる。

私がそうだったように、あなたもそうなれる。

このロードマップは、私が歩いた道そのものだ。

1年後、3年後、5年後。「あのとき踏み出して本当によかった」とあなたが思ってくれる日が来ることを願っている。

そして私も、この記事を書いて良かったと思えたら嬉しい。

【購入者限定】Slackで直接質問できます

ここまで読んでくれたあなたに、私のSlackワークスペースに無料で参加できる権利をお渡しいたします。

できること

  • 学習で詰まったとき、キャリア相談、ポートフォリオレビュー、SES企業選びの相談まで、私に直接聞ける
  • 1対1のDMなので、他の人の目を気にせず気軽に質問できる
  • この記事を購入した人だけが参加できる、閉じた環境

対応スピード

2〜3営業日以内に返信いたします。。

参加方法

下記フォーム送信後、2〜3営業日以内にアドレス宛てにSlack招待URLをお送りします。リンクからご参加ください。

参加フォームはこちら

お願い

  • 参加URLや招待メールは、他の人に転送しないこと
  • 同じ質問が多く寄せられた場合、匿名でFAQとして本記事に追記することがあります