こんにちは、これからプログラミングを始めようと考えているあなたの目標達成まで手助けができれば幸いです。
もしかしたら家電量販店でパソコンを購入し、書店で初心者向けのプログラミング本を買って始めようと考えていたら、その方法はおすすめしません。
そのパソコンはプログラミングに向いていますか?その本の言語や内容は自分に合っていますか?
プログラミングを始める前に次のことを考えておくと、きっと順調に学習が進められます。
1.目的の明確化
まず、プログラミングを学ぶ目的を明確にしましょう。Web開発、ゲーム開発、データ分析、AI、モバイルアプリ開発など、目指す分野によって学ぶべき言語やツールは異なります。
また、IT専門職ではなく大学受験のためや、IT系資格取得のため、仕事で必要になった、ということもあるでしょう。
当サイトは大学受験対策(情報Ⅰが解ける)を目安としています。まずは自分がどこを目標にするのか明確にする必要があります。
※ITパスポート:基本的なIT知識とスキルを認定するための国家資格
※情報Ⅰ:高校で情報科学の基礎を扱う科目
※基本情報処理:情報処理技術の基礎を評価するための国家資格試験
※プログラミング基礎:初心者が学ぶ基本的なIF文やFOR文など単体処理を理解している(想定基準)
※プログラミング応用:1人もしくは少人数で使用するDBやネットワークを使用しないアプリなど
※システム開発:小規模~中規模程度のWebアプリケーションやサイトなど
なぜプログラミング(Java、PHP、Python等)の勉強をしたいだけなのに「情報Ⅰ」や「ITパスポート」の勉強が必要なのか?
それは、プログラミングがパソコンやサーバ(ハードウェア)、WindowsやLinux等(ソフトウェア)で動作する前提だからです。
この動作環境についての知識がないと絶対につまずきます。
プログラミング学習は、ダイエットのように忍耐と英会話と同じように継続した学習と実践が必要です。
初心者向けのプログラミング本を片手に独学で進めても、本の通りに動作しないことは多々あります。その原因がタイピングミスなのか動作環境(バージョン違い等)なのか、初心者では判断できません。そして聞ける相手も居なく挫折してしまうことは多いと思います。
ですのでプログラミングはもちろんですが、ハードウェアやソフトウェア、ネットワーク、セキュリティなどのコンピュータの基礎についても学ぶ必要があります。
今は遠い目標に感じられるかも知れませんがこれが近道です。
例え、それが途中で挫折したとしても学んだことは決して無駄にはなりません。また時間を置いて再開しても構いません。
初心者の目標は、
・情報処理の最低限の知識を身につけること
・自分で小さくてもアプリが作成できること
です。
目的例
- とりあえずプログラミングを初めてみたい
ITパスポートの範囲とプログラミングの基礎を同時に勉強することをお勧めします。基礎が理解できたら応用で何か1つアプリを作成してみてください。必ず基礎で学んだ処理を使うことになると思います。また、機会があったらITパスポートも受験することをお勧めします。資格の難易度は高くないので自分を客観的に評価するうえでもお勧めです。 - 大学受験対策でプログラミングを勉強したい
プログラミング基礎から応用までと情報Ⅰを中心に勉強することをお勧めしますが、初心者が情報Ⅰをいきなり始めると途中で挫折するかも知れません。分野によっては難易度が高い分野があり、1人で理解できない場合は誰かのサポートが必要になると思います。 - 仕事でプログラミングを使えるようにしたい
プログラミング基礎から応用までとITパスポートを中心に勉強することをお勧めします。大学受験対策に比べて、実務重視でプログラミングを中心に勉強した方が良いでしょう。合わせてITパスポートの受験もお勧めします。会社によっては資格手当が貰える場合もあります。 - プログラミングを勉強してIT系に転職したい
こちらもプログラミング応用まで学習し他人に見せられるようなアプリを作成すること、ITパスポートを勉強して合格することです。これが転職として必要最低限の条件です。
理想としては、中学生時代に「ITパスポート」の取得、「プログラミングの基礎」が終わっていると良いですし、欲を言うを「プログラミングの応用」が終わって簡単なアプリが作れると、高校で情報Ⅰに専念でき、大学受験も心配ないでしょう。
2.学習リソースの準備
プログラミングは習得に時間がかかるので継続して勉強が必要になります。
そこで最大の敵になるのは自分自身です。先にも述べたようにプログラミング学習はダイエットや英会話と同じように自力で継続が困難なカテゴリに入ります。「今日は疲れたから明日に…」「なかなか結果が出ないから…」「やっぱり今の職場でいいや…」など自分に甘えや妥協が出てしまいます。
これはほとんどの人に当てはまることなので外部からのサポートが必要になります。
自分に合った学習リソースは環境や状況によって違います。
- 時間と予算の準備ができる人
お金と時間の準備が出来る人は専門学校やプログラミングスクールに通うことをお勧めします。
お金は掛かりますが、確実にプログラミングを習得することが出来るでしょう。
専門学校だと年で100万円くらい、プログラミングスクールだと数十万円(コースによる)掛かると思います。専門学校やプログラミングスクールの最大の利点は就職先も視野に入るところです。
専門学校ならほぼ就職先が用意されていると思います。未経験者前提で就職先の情報も多いです。
※就職先紹介はプログラミングスクールによって行っていないところもあるので確認してください。 - 時間は取れるけど予算をできるだけ抑えたい人(学生)
中学生、高校生なら学校の授業(情報)や部活を活用することが出来ると思います。学校に環境がない場合は、学習塾でプログラミングコースや情報Ⅰのコースが用意されていたりすので、プログラミングスクールを利用するより金額は抑えられると思います。またインターネットでも無料・有料のスクール(サービス)もあるので、それを活用することが出来ると思います。 - 予算をできるだけ抑えたい人
自宅で独学が対象になると思います。この場合、勉強を継続することに意味があります。週に何日、1日に何時間・何ページなど始める前に目標とスケジュールを作成しましょう。「プログラミングの基礎」は成果が見えづらいので、ITパスポートの範囲が終わったら過去問を解いて試験を受けましょう。合格が継続のモチベーションにつながります。プログラミングの基礎が終わったら応用で小さなアプリを作ってみましょう。
3.パソコンの準備
プログラミングを始めるにはパソコンが必要になります。よく聞かれるのはWindowsとMACのどちらが良いか?良いパソコンを選んでほしい。
結論から申し上げるとPCスペックもOSも何をしたいかによって選ぶものが違います。
車に例えると、
・何人乗りが良いのか?
・近所で買い物用に使いたいのか?
・よくキャンプで山に行くのか?
・降雪地域か?
・荷物をいっぱい運びたいのか?
・耐久性はどれくらい必要か?
・予算はいくら?
人の要望によって、加速やデザイン重視のスポーツ車だったり、経済的な軽自動車だったり、悪路も大丈夫なオフロード車だったり、乗り心地重視の高級車だったり。
画像や動画編集をする訳ではないので、初心者がプログラミングを勉強したいだけなら必要最低限のスペックPCでWindowsでもMACでも、ノートパソコンでもデスクトップでも良いと思います。
ただ、例外はありますが基本的に中古のノートパソコンは買わないほうが良いです。
ノートパソコンはデスクトップPCに比べて耐久性が低く、修理にお金と時間が掛かるからです。同じ予算ならデスクトップの購入をお勧めします。
作業スペースや持ち運びの関係でノートパソコンが良い、予算的にも中古となる場合はWindowsよりMACの方が良いです。私は両方使用していますがMACの方が壊れづらい印象です。
Windows/MAC共通でスペックは、メモリ8GB以上、HDD(SSD)256GB以上が良いでしょう。(CPUはそれほど優先しなくて大丈夫です)これより低いとプログラミング以前に普通に使っていても動作が重いです。
推奨としてはメモリ16GB以上、SSD512GB以上でしたら故障しない限り長く使えると思います。
勉強だけならWindows/MACのどちらでも問題ありませんが、将来IT系で働きたいと思っているなら、業務システムやWebシステムを請け負っている大手~中小ITベンダーはWindowsが多いです。仕事で使うサーバOSはLinuxやUNIXで、業務でやり取りする資料はMicrosoft製品(ExceやWord)がほとんどなのでWindowsを選ぶと良いでしょう。
ホームページ制作やフロントエンジニア(Web系)などのクリエイター、Web系広告代理店、最近起業したスタートアップ企業はMACが多い印象なので、MACを選ぶと良いと思います。
ときどき一般企業(Windows)から、ホームページ制作やWeb系広告代理店(MAC)に仕事を発注して、資料やデザインイメージをやり取りすると、両者のOSの違いからフォントが崩れたり資料をPDFに変換する手間が発生したりと考慮が必要になる場合があるので注意してください。
最近は小・中学生にChromebookが無料貸与されているところが多いと思いますが、詳細なスペックや利用規約が学校ごとに違うと思うので、それを使用してプログラミング学習をすることは避けたほうが良いでしょう。高校生だと入学時に自分で購入したり、学校から配布されるところもあると思います。前者は自分の持ち物なので問題ないと思いますが、後者だと学校に確認する必要があると思います。
また、プログラミングスクールは教室に用意されていてWindowsやMAC、他詳細なスペックが選べないと思いますので、自分の希望と合っているかも確認しましょう。
4.プログラミング言語について
プログラムに使用するプログラミング言語はそれぞれに特徴があり、Java、PHP、Pythonなどは有名ですが、他にRuby、C++、C#、Swift、Go、Rなどもあります。
プログラミングの基本的な考え(アルゴリズム)に大きな差はないので、まずはどれか1つ習得することをお勧めします。
1つ習得すると他の言語も習得しやすくなります。
おすすめの言語として4つ紹介します。
Java
【特徴】
- オブジェクト指向プログラミング言語
- 「一度書けばどこでも動く」(Write Once, Run Anywhere)が特徴
- 自動メモリ管理(ガベージコレクション)
- 豊富なライブラリと大規模なコミュニティ
【使用分野】
- エンタープライズアプリケーション(金融、保険など)
- Androidアプリの開発
- Webアプリケーション、サーバーサイドアプリケーション
- ソフトウェアツール、中規模から大規模システムの開発
PHP
【特徴】
- ウェブ開発に特化したスクリプト言語
- HTMLに埋め込んで使用することが可能
- データベースとの連携が容易
- 初心者にとって学びやすい
【使用分野】
- ウェブサイトやウェブアプリケーションの開発
- コンテンツ管理システム(CMS)の開発(WordPressなど)
- オンラインショップやフォーラムの構築
Python
【特徴】
- 読みやすく、書きやすいシンプルな構文
- 高い拡張性と多様なライブラリ
- オブジェクト指向、手続き型、機能型プログラミングをサポート
- データサイエンス、機械学習、AIに強い
【使用分野】
- データ分析、機械学習、AI開発
- ウェブ開発(Django、Flaskなどのフレームワーク利用)
- スクレイピングやオートメーション
- 教育、科学計算、ソフトウェアプロトタイピング
C言語
【特徴】
- 高性能で効率的なプログラミングが可能
- ハードウェアに近い低レベルの操作が可能
- 汎用性が高く、プラットフォームに依存しない
- 手続き型プログラミングに基づいている
【使用分野】
- システムプログラミング(オペレーティングシステム、組込みシステム)
- アプリケーションソフトウェアの開発
- パフォーマンスが重要な場合(ゲーム開発、リアルタイムシステム)
本サイトではPythonで学習を進めていきます。理由として習得しやすく将来性もあり、ライブラリが多くアプリも作りやすいから初心者に向いているという理由です。
よく初心者にHTML/CSSとJavaScriptを勧めていたりしますが、JavaScriptはぎりぎりプログラミング言語と呼べるかも知れませんが、HTMLとCSSはちょっと違う気がします…。
5.まとめ
まとめですが、
まずはプログラミングを始める目的を明確にしましょう。
次に自分にあった学習リソースを確保しましょう。
上記の準備が決まったら予算と使用用途に合わせてパソコンを準備しましょう。
これでプログラミングを始める準備が整いました。
スタートラインに立ったあなたの新しい旅立ちが良いものとなりますように。
最後に・・・
困ったこと、解決できないことがあれば、プログラム言語やサービス内でコミニュティーで質問すると誰かが答えてくれたりします。分からないことを質問することは恥ずかしいことではないので、積極的に聞いても良いです。
私が新人の頃はインターネットに情報は少なかったし、社内でも知見を持っている先輩が居ない場合は、外資系の大手ソフトメーカーや大手サーバメーカーのサポートに連絡することは少なくなかったです。納期も決まっているし、解決しないと他の作業や全体スケジュールに影響が出るので…
知っている人にとっては簡単なことでも、知らいない人にとっては全然わからないことなんて、IT業界では良くある話です。勤続年数や役職なんで関係ありません。その分野について詳しいか詳しくないかの違いです。何時間、何日も悩んで解決しない、一歩も進まないというのは時間も体力ももったいないで自分なりに調べて行き詰まったら、誰かに質問するのも解決方法の一つです。
ただ、プログラミングを自力で書けるようになるまではAIにプログラミングを書いてもらうことは絶対にやめてください。なぜなら小学生が電卓を使って計算問題を答えるようなもので、全くプログラミングの学習にはならないからです。
私は仕事柄、生産性を上げるためにChatGPTもCursorも使っていますが、初心者のうちは頑張って自力でコーディングするようにしましょう。