プログラミングに興味があって学習してみたいと思っても、「文系ではできないのではないか」と感じて学習をためらってしまっているかもしれません。
プログラミング=理系というイメージのせいで、なかなか行動に移せない方も多いのではないでしょうか。
しかし、たいていの場合プログラミングは文系理系問わずできるんです!
本記事は文系でもプログラミングができる理由、理系の方が有利な分野があることや、それらを踏まえたプログラミングの学習についても解説しています。
それでは早速見ていきましょう。
プログラミングでは数学の知識は必要ない場合が多い
冒頭の部分で文系でもプログラミングは可能だと言いましたが、理由はタイトルにある通りで、プログラミングには数学の知識が不要の場合が多いからです。
例えば、プログラミングを始める方の多くはWebサイト制作、Webアプリ開発、スマホアプリ開発ができるようになることを目標にしていると思います。
これらの分野は、基本的に高度な数学の知識は必要なく、四則演算(+-×÷)程度で十分なので安心してください。
数学の知識が必要ないとはいってもイメージがわきづらいと思うので、ここからは具体例を用いて説明していきます。
Webサイト制作の具体例
Webサイト制作の中でも代表的なLP制作をもとに紹介します。LP(ランディングページ)とは広告などをクリックしたときに最初に着地するページのことで、多くの場合1枚の縦に長いWebページとなっています。LPは主に会社の商品やサービスを紹介することを目的に作られます。
ちなみに、弊社が運営するプログラミングスクールCOACHTECHのランディングページはこちらです。
LP制作はテキストや画像、ボタンなどを適切に配置し、画像をディスプレイの横幅何%くらいの大きさで表示するのか、ボタンがホバーされる(カーソルがボタンの上に乗っている)ときにボタンやテキストの色をどのように変えるのか、などを実装しながらページを作っていきます。
画像やボタンの大きさを測る・求めるために計算する場合もありますが、簡単な四則演算程度なので問題ありません。このことから、Webサイト制作に数学の知識は必要ないということがよくわかると思います。
また、実は公開されているWebサイトがどのように作られているか見ることができるんです。やり方は簡単で、Webサイトの任意の箇所で「右クリック→検証」をクリックします。ショートカットキーも用意されていて、MacならCmd+Opt+l、WindowsならCtrl+Shift+lとなります。その中の「Elements」というボタンをクリックするとWebサイトの実際のコードを見ることができます。
この方法でもWebサイトに高度な数学は使われていないことがわかるので、気になる方は確認してみるとよいでしょう。
Webアプリ開発の具体例
そもそもWebアプリとは何なのか、というところから説明しましょう。Webアプリ(Webアプリケーション)とはWebブラウザ上で使用できるアプリのことで、TwitterやInstagramなどもWebアプリと呼ばれます(TwitterやInstagramはスマホアプリ版もあります)。
Webアプリの代表的な機能として、会員登録機能やログイン機能があげられます。これらの機能は、ユーザーが打ち込んだメールアドレスやパスワードなどの情報をデータベースに登録したり、登録されていたデータと一致しているかどうか判断することで実現されます。
このような機能を実現するために、数学の知識は必要なさそうですよね。投稿や削除などの機能も同様に、高度な数学の知識は不要です。
また、スマホアプリもWebアプリとほぼ同様です。
しかし、後ほど紹介しますが中には数学的知識が必要な分野も存在するので注意してください。
プログラミングって難しそうだけど、自分にもできるの?
「プログラミングに数学的知識が必要ないことはわかったけれど、どっちにしろ難しそうだから自分にはできないんじゃないかな…」と思ってしまうかもしれません。
プログラミングを習得するにはどのような能力が必要とされるのか確認してみましょう。
プログラミングで求められる能力は、主に以下の4つです。
- 論理的思考力
- エラーやバグにめげずに取り組む我慢強さ
- 検索力
- (番外編)コミュニケーション能力
それぞれ見ていきましょう。
論理的思考力
プログラミングを行うには、物事を順序だてて、ひとつひとつの処理をつなげていく論理的思考力が必要です。難しい機能を実現するのに必要な多くの処理も、実はひとつひとつは簡単で、どの処理を選んでどのような順番でつなげるかが重要なのです。
特に、複雑な機能を実装するためには論理的思考力が必須になります。
エラーやバグにめげずに取り組む我慢強さ
プログラミングをするうえで、エラーやバグは必ず発生します。しかもエラーやバグは英語で表示されるため、プログラミング初心者で英語が苦手な方はかなりしんどいと思ってしまうかもしれません。
ただ、そこであきらめずに粘り強くエラー・バグ解決に取り組むことがプログラミング習得には欠かせません。エラーやバグに向き合う時間が一番プログラミング能力を高めると言っても過言ではありません。
最初は難解に感じるかもしれませんが、慣れてくるとエラーやバグをパズル感覚で割とスムーズに直せるようになります。
検索力
プログラミングをする中でわからないことがあったり、エラー・バグが発生したりした場合には基本的にインターネットで検索して解決方法を探ります。
検索力と聞くとなんだか簡単に思えるかもしれませんが、やってみると意外とできないものです。インターネット上の膨大な量の情報の中から、自分が求める情報を手に入れるのはかなり難しいのです。
またプログラミングに限りませんが、情報量は日本語より英語のほうが圧倒的に多いです。そのため、英語で検索して内容を理解することも必要になってきます。
もしインターネットで検索してもほしい情報が手に入らなくて、教えてくれるエンジニアの知り合いなどがいない場合、後ほど紹介するプログラミングスクールを検討するのも良いでしょう。
(番外編)コミュニケーション能力
コミュニケーション能力はプログラミングの習得にはあまり関係ないのですが、エンジニアやプログラマーに必要な能力なので取り上げました。
エンジニアやプログラマーは、ひとりでパソコンに向かって作業し続けるイメージがあるかもしれませんが、実は人との関わりが多い職種なのです。
というのも、システムエンジニアはクライアントの要求通りの機能を実現するため相手との正確なコミュニケーションが欠かせませんし、プログラマーもシステムエンジニアや他のプログラマーとうまく連携して作業する必要があるからです。
以上、プログラミングに必要な代表的能力を説明しましたが、特別難しいことは求められていないことがわかりますね。また、これらの能力は「プログラミングに必要な能力」であると同時に「プログラミングを通して高めることができる能力」でもあります。
特に論理的思考力(ロジカルシンキング)は、プログラミングを義務教育に取り入れる理由の一つとしてあげられますので、プログラミング学習を通してかなりの成長が期待できるのではないでしょうか。
理系の知識が必要となる分野
今まで「プログラミングでは数学の知識は必要ない場合が多い」と説明してきました。この表現からもわかるように、全てのプログラミングが数学の知識を必要としない、というわけではないのです。
確かに、みなさんがこの記事を読むまで想像していたような「数学や物理の知識が必要なプログラミングの分野」も存在します。
理系の知識が必要となる分野は、主にこの3つです。
- AI(人工知能)開発
- 統計処理・データサイエンス
- ゲーム開発
以下、詳しく説明します。
AI(人工知能)開発
AI開発に用いられるのは主にPythonと呼ばれるプログラミング言語で、Pythonはライブラリが豊富な事でも知られます。そのため、既存のライブラリを活用すれば簡易的なものなら開発は十分可能で、その場合は数学の知識が不要の場合が多いです。
しかし、自分の作りたいAIを実現したい場合やAIエンジニアとして働きたい場合には数学の知識が必要になります。具体的には微分積分、線形代数、統計学があげられます。
統計処理・データサイエンス
統計処理・データサイエンスの分野では統計学の知識が必須になります。また、データサイエンスに関しては線形代数の知識も必要となる場合が多いです。
これらの分野では、大量のデータを扱いそれらを分析することを目的にしており、ユーザーの傾向や行動の規則性を知ることができるためマーケティングにも活用されます。
ゲーム開発
ゲーム開発には数学の知識や物理の知識が必要となります。Unityという強力なゲームエンジンを使えばゲーム開発をかなり直感的に行えるようになってはいますが、より複雑なゲームを開発する場合にはこれらの知識が必要です。
特に3Dゲームを開発する際には奥行き(Z軸)も考慮する必要があるので、数学に苦手意識がある人は少しつらいと感じてしまうかもしれません。
このように、AI(人工知能)開発・統計処理やデータサイエンス・ゲーム開発には理系的知識が必要とされますが、求められるレベルはそこまで高くありません。実は大学1、2年生で学習するような基礎を学べば十分な場合が多いです。
そのため、「数学があまりできないけど、これらの分野に挑戦したい!」という人なら数学を学習しなおして、ある程度理解できるようになれば十分対応できます。しかし、「とりあえずプログラミングをやりたい!」という人は、前述したWebサイト制作やWebアプリ開発などに取り組むのが良いでしょう。
文系の人におすすめのプログラミング言語
具体的な目標・作りたいものがまだ決まっていないなら、Webサイト制作またはWebアプリ開発から始めるのがおすすめです。
というのも、これらはプログラミングの中でも比較的難易度が低くプログラミング初心者の方にとって親しみやすい上に、数学が不要な分野でもあるからです。
Webサイト制作ならHTML&CSSとJavaScript、Webアプリ開発ならPHPまたはRubyがおすすめです。それぞれどのような言語なのか解説していきます。
HTML&CSS
HTMLはページの構造を決めるための言語で、見出し・テキスト・ボタン・画像などを配置できます。
一方CSSは、ページの構造を装飾(デザイン)するための言語で、フォントの色や大きさ、画像の並び方、ボタンの色などを変えることができます。
これらは厳密にはプログラミング言語ではなく、HTMLはマークアップ言語、CSSはスタイルシート言語と呼ばれるものですが、どちらも広義でプログラミング言語とされることも多いです。そのため今回は、便宜上プログラミング言語として扱うこととします。
HTMLでページの構造を決め、CSSでそれを装飾するため、これらはセットで用いられることが多いです。
また、他の言語をHTMLコードに埋め込んでWebアプリ開発を行ったりと、HTMLはプログラミングの基礎となる部分です。そのため、HTMLを習得することで他のプログラミング言語の習得も容易になります。HTMLコードの中に他のプログラミング言語のコードを組み込むといったことをするので、HTMLを理解しているとよりスムーズに学習を進めることができます。
HTML&CSSはブラウザさえあれば実行可能なのため、初心者の方が親しみやすい言語でもあります。
JavaScript
HTML/CSSに加えてJavascriptを学習すれば、動きのある本格的な見た目のサイトをつくることができます。
見た目を作るフロントエンドの開発には必ずと言ってよいほど使われていて、JavaScriptを使えば動きのあるサイトを作ることや、CSSでは実現しにくい複雑なデザインを実現することが可能になります。
理解しやすい文法で、また先ほどと同様ブラウザさえあれば実行可能なため初心者にも親しみやすいです。
また、ライブラリやフレームワークが非常に豊富で、中でもjQueryというライブラリはJavaScriptより少ないコードで機能を実現できるため非常に人気があります。
PHP
WEBアプリ開発に優れているサーバーサイド言語(バックエンド側)です。
PHPは非常に需要が高い言語で、ブログなどのWEBサイトを簡単に作れるWordPressというソフトウェアのもとになっていて、Facebookなどの有名サービスにも使用されています。
PHPを理解すれば、WEBアプリ開発だけでなくWebサイト制作にも有利になること点も魅力となっています(WordPressはWebサイト制作の案件に含まれるため)。
需要が高い言語を習得できれば、フリーランスエンジニアとして自由な働き方も可能になります。そのため将来のキャリアを考えた場合、最初に学習する言語としてPHPは非常に良い選択と言えます。
Ruby
Rubyは日本人が開発したプログラミング言語ということもあり、日本人になじみのある自然な文法なのが特徴です。日本語のドキュメントが非常に充実しており、わからないことがあっても日本語で検索すれば大体解決できます。
特にRuby on Railsは非常に強力なフレームワークで、簡単にWEBアプリを開発することができます。さらに、Railsチュートリアルという日本語学習サイトもあるので学習の指針を立てやすいこともメリットの一つです。
プログラミング言語についてより詳しく知りたい方や、他のプログラミング言語について知りたい方はこちらの記事をご覧ください。
プログラミングを学習するなら
ここからはプログラミングの学習方法について解説します。
プログラミングの学習方法は、大きく分けて3つあります。
- 書籍
- Webサービス
- スクール
これら3つの学習方法に加えて、それらをどう活用するかについても紹介します。
書籍で学ぶ方法
書籍は一冊で基本的な情報を網羅しているので、そのプログラミング言語の全体像を理解しやすいことがメリットです。
インターネット上にある情報は質、量ともに充実していますが、バラバラの情報ばかりでどこまで学習すれば良いのかわからなくなることも多いです。
一方、書籍は基本構文を一通り説明したうえで、サンプルコードをもとに実際にプログラミングをすることができるため、どこまで学習すればよいのか悩まずに済みます。
ただ注意点として、昔の書籍だと情報が古く、アップデートされたバージョンに対応していない可能性があります。サンプルコードが正常に実行されない場合があるため、書籍が発行された時期はしっかり確認するようにしましょう。
また、書籍によって難易度にばらつきがあり、初心者の方が上級者向けの本を間違って買ってしまい挫折することもあるので注意しましょう。
書籍を使って学習する場合は、以上の2点に注意するようにしましょう。
Webサービスで学ぶ方法
2つ目の学習方法は、Webサービスです。Webサービスで学ぶメリットは、書籍より実践的に学習できる点です。
書籍と違ってWebサービスで学習するには必ず手を動かさなければならないので、インプットとアウトプットを効率的に繰り返すことができ理解度が増します。
プログラミングを学習できるおすすめのWebサービスは以下の記事で紹介しています。
スクールで学ぶ方法
スクールで学ぶメリットは、具体的なカリキュラムをもとに学習を進めることができ、かつ手厚いサポートで挫折しにくい点です。
スクールが考えたカリキュラムによって最短で実力を養えるよう実践的な学習ができますし、わからないことはエンジニアに質問することができます。
書籍やWebサービスで学習する方法はいわゆる独学と呼ばれる学習法ですが、独学で限界を感じたらスクールを検討するとよいでしょう。
ただスクールは独学と比べてお金がかかりますし、学習時間を十分に確保する必要があるため、本当にプログラミングを学びたい方や最短でエンジニアになりたい方以外がスクールで学ぶのはおすすめしません。
さて、3つの学習方法をあげましたが、どういった手順で学習を進めてよいかわからない方も多いでしょう。
おすすめとしては、まずは1つの言語をWebサービスで学習します。その後、言語の全体像がよくわからず理解があいまいだと感じれば、その言語の初心者向け書籍を使って学習します。
Webサービスと書籍を活用し、わからない部分があれば適宜インターネットで検索して自力で問題を解決できるような検索力も養います。
それでも学習が難しい、もっと効率的に学習を進めたいと思った方は、金銭面や学習時間の確保を考慮したうえでスクールを活用することをおすすめします。
まとめ
今回の記事はいかがでしたか。プログラミングは理系にしかできない、難しくて自分にはできないというイメージを払拭できたでしょうか。
今後もプログラミングの需要は増していくでしょうし、たとえエンジニア・プログラマーにならなくてもプログラミングスキルは将来役に立つ能力です。
少しでも興味のある方は、プログラミングをぜひ始めてみてください!