プログラミング未経験からプログラマーになるための方法




    

みずき
現役プログラマーとして奮闘中のみずきです。
今日もブログをみていただき、ありがとうございます。
プログラミングを始めたいけど、何を勉強すればいい?
各プログラミング言語の特徴は?
プログラミング言語の開発環境は?
プログラミング学習のコツは?
挫折しない為には?

こんな疑問を持つ方の悩みを、解決できる記事になっています。


「何を開発したいのか?」で使用言語を決める

プログラミング言語は、たくさん存在し、「どの言語をどのような開発を行うときに使用するのか?」という事を理解しないと、学習を始める事が出来ません。

この記事を通して、各プログラミング言語の特徴を知り、自分に合った言語を見つけてください。


使用するプログラム言語を選択

Java言語

Javaは、Androidアプリ開発などに使用されていて、とても人気が高く、かつメジャーな言語です。
Javaの特徴は、JVM(Java Virtual Machine:Java仮想マシン)というもので動作している事です。
Javaの為に疑似的に作成されたマシンで、このマシン上でJavaが動作しています。

JVMの役目は、プログラマーが入力したコードを機械語に翻訳する事です。

なので、JVMをインストールする事ができる環境であれば、WindowsやMacなど、どの環境でも使用する事が可能です。

Javaのもう1つの特徴は、オブジェクト指向というものがあります。

📃オブジェクト指向とは?
✒「モノ」を組み立てるようにして、物事を考え、コーディング(コードをPCに入力)をする事

例えると、プラモデルを作る時に、腕や胴体のパーツを作ってから、最後に腕と胴体をつなげるのと、同じ意味です。(それぞれのパーツをコードで作成する事です。)


Javaを学ぶメリットは、2点あります。

📃メリット
✒多くの企業がJavaを推薦しているので、仕事に直結しやすい
✒人気が高いので、参考書や勉強法を教えるスクールが多い

業務アプリの開発でも、Javaは活躍しています。
なので、面接の際に、「Javaができ、○○を開発した事があります。」などと言うと、必ず欲される人材になるくらい、Javaは仕事に直結しやすいです。


更に、プログラミング学習は一人で行うと、中々難しく挫折する事が多いですが、有益な参考書やプログラミングスクールがあるので、挫折をする可能性が低く、学習が捗る言語でもあります。



📃デメリット
✒オブジェクト指向を理解するのに時間がかかる

プログラミング初心者の最大の敵は、オブジェクト指向です。
上記にも記載をしていますが、この考え方については、実際にプログラムをコーディング(コードをPCに入力)して、理解していかないと、オブジェクト指向の実態を理解する事は難しいからです。



📃こんな方にオススメ
✒Android端末などのアプリ開発(モバイルゲームなど)
✒業務システムの開発

Javaはゲーム開発などにも特化しています。
有名なゲームだと、Mine Craft(マインクラフト)がJavaで開発されています。
他にも、みずほ銀行の銀行システムもJavaで開発されています。



💻開発環境
Android Studio(アンドロイド スタジオ)
Eclipse(エクリプス)

※開発環境の名前をクリックすると、ダウンロードサイトに行きます。

どちらの開発環境でもJavaでプログラミングを行うことができますので、お好きな開発環境をお使い下さい。
開発環境のインストールは、無料ですので、ご安心下さい。

私情になりますが、私は学生時代の時に、Android Studioで開発を行い、Google Storeにアプリをアップしたりしていました。

佐藤瑞希の詳細プロフィールで記載していますので、ご参照ください。



C言語

C言語もメジャーで、知名度が高い言語の1つであり、コンパイル型(機械語に翻訳する)の汎用プログラミング言語です。
他のプログラミング言語と比べると、抽象度が低く、アセンブリ言語(機械語)に少し近いかもしれません。

📃抽象度が低いとは?
✒Javaなどの言語は、継承という他のクラスの機能を使用する事ができる方法があり、明確に1つの機能にしか対応できないという事はないのですが、C言語の場合だと、継承というものが存在しないので、1つの機能にしか対応しません。
つまり抽象度が低いという事は、明確に1つの機能にしか対応しないコーディング(コードをPCに入力)を行う為、具象的にコーディングをするという事です。


C言語を学ぶメリットは、2点あります。

📃メリット
✒OS(Windowsなど)の仕組みを知る事ができる
✒メモリの使用量を意識したロジックの考え方が身に付く

C言語をより深く理解する事ができると、OSの仕組みが分かるだけでなく、ハードウェア領域やIoTなどの分野にも役立つ知識を身につける事ができます。

メモリの使用量を意識してのコーディングも重要になりますので(OSの場合だと、使用率が高いと問題なので)、効率的なロジックの考え方が身につける事が出来ます。


📃デメリット
✒オブジェクト指向が存在しない為、オブジェクト指向言語の理解が難しい

上記でも記載していますが、抽象的な考え方ではなく、具象的な考え方の言語な為、抽象的な考え方のプログラミング言語を勉強する際に、少し理解が困難になります。


📃こんな方にオススメ
✒ロボット制作や電子工作がしたい方
✒ソフトウェア開発
✒OS開発

ロボット制作などの場合は、絶対と言っていいほどC言語ですので、電子専門学校に入学する際などは、事前に勉強しておくと良いでしょう。
理由は少し難易度が高い言語ですので、、


💻開発環境
Visual Studio

※開発環境の名前をクリックすると、ダウンロードサイトに行きます。

Visual StudioはMictosoft社が提供しているIDE(統合開発環境)です。
こちらも開発環境のインストールは、無料ですので、ご安心下さい。


C#言語

Javaと同様にオブジェクト指向型のプログラミング言語の1つです。(オブジェクト指向については、Javaのページを参照ください。)

IDE(統合開発環境)ですので、事前にボタンやテキストボックスが用意されており、Windowsフォームにボタンなどを貼り付けて、コーディング(コードをPCに入力する)だけで、割と容易にWindowsフォームアプリの開発を行う事が出来ます。


📃Windowsフォームとは?
✒Visual Studioでプロジェクトの作成を行うと、デフォルトでWindowsフォームというものが生成されます。(下画像を参照ください。)

✅Windows フォーム
このWindows フォームに対して、ボタンの配置やテキストボックスの配置を行い、アプリの開発を行います。



C#言語を学ぶメリットは、2点あります。

📃メリット
✒多彩なプラットフォーム向けのアプリ開発などが行える。
✒求人数が多いので、就職に有利

C#言語をマスターするだけでも、Windowsアプリ、iPhoneアプリ、Androidアプリ、Webアプリなどの開発が行えますので、ある意味万能言語かもしれません。


📃デメリット
✒オブジェクト指向を理解するのに時間がかかる

プログラミング初心者の最大の敵は、オブジェクト指向です。
Java同様ですが、この考え方については、実際にプログラムをコーディング(コードをPCに入力)して、理解していかないと、オブジェクト指向の実態を理解する事は難しいからです。


📃こんな方にオススメ
✒Windowsフォームアプリ開発
✒Unityでのゲーム開発

Unity(ゲーム開発環境)を使用すれば、C#で本格的なゲーム開発も可能です。
ほとんどのiPhoneなどの携帯ゲームは、C#で開発されています。


💻開発環境
Visual Studio
Unity

※開発環境の名前をクリックすると、ダウンロードサイトに行きます。

Unityはライセンスがあり、Personal版は無料なのですが、Pro版などは年間で1万5千円の使用料が掛かります。
ですが、Personal版でも充分に開発可能です。
まずは、Personal版を使用して、それからPro版などの仕様を検討する事をオススメします。

C#を使用して、現在、DOAXVVのパズルゲームを作成していますので、C#だと「こんなアプリが開発できる!」の参考になりますので、ご参照ください。
DOAXVVのパズルゲームを開発します!(part1)


C++言語

この言語は、C言語にオブジェクト指向を追加した言語になります。
なので、C言語より拡張機能(プラグイン)が追加されて、多彩な開発が可能になっています。

C#と同様にIDE(統合開発環境)である、Visual Studioで開発が可能です。


C++言語を学ぶメリットは、1点あります。

📃メリット
✒ゲーム会社に就職する際は、圧倒的に有利

コーエーテクモゲームスやSEGAなどの大手ゲーム会社のゲームは、ほぼC++言語で開発されています。
なので、「ゲーム会社 = C++」と考えてもいいくらいです。


📃デメリット
✒C言語の知識も必要になる

C言語をオブジェクト指向型の言語にした言語ですので、C言語の学習をしてから、C++言語の勉強に取り組む必要がありますので、難易度が高いです。


📃こんな方にオススメ
✒Webアプリケーション開発
✒Unreal Engineでのゲーム開発

上記に記載してある通り、コンシューマーゲーム(PS4など)は、ほぼこの言語で開発されています。なので、ゲーム会社を目指す方は、必ずこの言語を理解しておく事をオススメします。
CAPCOMのBIOHAZARD(Resident Evil)やAQUARE ENIXのFF(ファイナルファンタジー)などもこの言語で開発されていますので、、



💻開発環境
Visual Studio
Unreal Engine

※開発環境の名前をクリックすると、ダウンロードサイトに行きます。

Unreal Engineは高機能なゲームエンジン(開発環境)にもかかわらず、なんと、無料です。
実際に自分が開発したアプリを公開して、収益を得る事も可能です。
細かな仕様を変更する場合は、C++の知識が必須ですが、大まかな仕様はデフォルトで存在するので、初心者にも優しい開発環境になっています。
Visal Studioと組み合わせて、使用する事が可能ですので、Visual Studioで拡張機能(プラグイン)の開発を行い、それをUnreal Engineに組み合わせる事も可能です。


HTML

HTML(エイチティーエムエル、HyperText Markup Language)といいます。
Webページを作成するために開発された言語で、インターネット上で公開されてるWebページのほとんどが、HTMLで作成されています。
Webデザイナーを目指す場合は、必須言語の1つです。


HTMLを学ぶメリットは、1点あります。

📃メリット
✒Web知識があると、個人ブログなどの開設が容易になる

HTMLの知識があると、Word Pressなどを使用したブログの開設が容易になったり、企業のサイトの仕組み(どのようなコードが入力されているのか)などが理解できるようになります。


📃デメリット
何もありません

この言語のデメリットを考えたのですが、正直、、何もないです。


📃こんな方にオススメ
✒Webデザイナーやサイト作成が行いたい方
✒個人ブログを開設したい方

実際に、この記事もHTMLを使用して書いています。
なので、私のブログの他の記事も見ていただければ、「HTMLでこのようなWebページが作れるんだな!」と理解する事が出来ますので、ご参照下さい。


💻開発環境
✒メモ帳(Windowsの標準アプリ)
サクラエディタ
Word Press

※開発環境の名前をクリックすると、ダウンロードサイトに行きます。

メモ帳でも開発を行う事が可能ですが、サクラエディタで開発する事をオススメします。
理由は、メモ帳だと改行数などの表示が全くないので、正直不便です。
それに対して、サクラエディタは改行数だけでなく、様々な機能があるので、Webページ作成の大きなサポートとなります。
ブログを開設する際は、Word Pressして下さい。






プログラミングの楽しさを知る事

まずは、プログラミングの楽しさを知る事が大事です。
初心者は、早く理解しようとするばかり、プログラミングの楽しさを理解しようとせずに、勉強に取り組んでしまう為、「プログラムを理解する事は、自分にはできないかも..」と思ってしまい、そのまま挫折して、プログラミング学習をやめてしまう事が多いです。

なので、楽しさを知る事は、学習の継続にも大きく繋がる事なので、とても重要です。


学習したい言語の文法を理解する


基本中の基本ですが、まずは日本語や英語と同じく、文法を覚えないとコーディングする事ができません
なので、焦らず確実に学びたい言語の文法を、理解していきましょう!

もう1人の僕
文法を覚えるコツは、参考書などのサンプルコードを1つ1つ理解しながら、コーディングすると、早く覚える事ができます。

もし分からない事があったら、考え込み過ぎずに分からなかった部分にメモなどを残し、次のStepに進んでしまいしょう。
そして次回勉強をする時に、再度分からなかったっ部分の学習をしてみましょう。
意外に理解できたりしてしまいます!!

この学習方法が一番最初は、ベストだと思います。


ロジックの考え方を理解する



ロジックという言葉を聞いた事はありますか?
ロジックとは、アプリなどを開発する際に、どのようにプログラムをコーディングする事で、その仕様が実現できるか!、という考え方になります。

いくら文法を覚えても、ロジックを組み立てる事ができなければ、自身で考えてコーディングする事が出来ません!
なので、ロジックは、文法と同じくらい重要な知識になります。

もう1人の僕
ロジックを覚えるコツは、ネットで「(例)オープンソース C#」と検索してみてください。

これだけで、他の方がコーディングしたコードを、無料で入手することができます。

そのコードを解読するだけでも、大いにロジックの仕組みを理解する事が可能です!

なので、人のオープンソースをたくさん見て、学習に活用しましょう!!



簡単なコーディング(コードをPCに入力)をする



プログラミング学習を始めたばかりだと、「大手○○会社の格闘ゲームのようなものを開発したい」というような要求が強く、いきなり規模の大きい物を開発しようとしてしまいます。
すると、必ず途中で挫折をしてしまいますので、簡単なコーディング(コードを書く)を行い、プログラムが動く感動を覚えましょう。

実際に、自分がコーディングしたコードで、アプリなどが動くのは嬉しいものです。

📃ワンポイント・アドバイス
✒足し算などのアプリは、簡単に作成する事が出来ますので、挫折をする可能性が低いので、オススメです。


一気に知識を身に着けようとしない


どんな事でも早く知識を身につけようと急ぎすぎると、知識が乏しいまま、次のステップ、次のステップへと進んでしまい、結果的にあまり理解しないまま、半端な知識のみが付いてしまいます。

早く知識を身に着けることも大事ですが、それ以上に大切な事は、プログラミングの楽しさを忘れない事 + 確実に理解する事ですので、焦らず1つ1つ知識を身に着けていきましょう。

📃ワンポイント・アドバイス
✒より良い知識を身につける為には、オンラインのプログラミングスクールやオンライン学習を活用する事をオススメします。

学習後は、簡単な復習を行う



1日の学習後は、簡単でよいので、その日にやった事の復習を行いましょう。
少しめんどくさいと思うかもしれませんが、より確実にプログラムを理解する為に、復習を行う事も重要な事なので、欠かさず行いましょう。

復習の有無で、知識の身に付く期間も大きく変わります。
更に、プログラミングの楽しさを忘れない様にする為の防止にもなります。

📃ワンポイント・アドバイス
✒復習を行う際は、その日に勉強した箇所全てを行うと、頭がパンクしてしまいますので、全ての復習ではなく、自分の不安な箇所又は、再確認したい箇所を復習しましょう。

勉強会やセミナーに参加をする



勉強会やセミナーに参加する事で、他のプログラミング学習を頑張っている方にも合う事ができ、自分では思いつかないようなロジックや学習のコツを知っている方達に会える可能性が高いです。

なので、勉強会などは頻繁に行っている事が多いので、どんどん参加して知識を身につけていきましょう。

もう1人の僕
オススメの勉強会の形式は、ワークショップ形式です。
ワークショップ形式とは、少人数制なので、実際にコーディング(コードをPCに入力する)という事ができる為、話を聞くだけではなく、プログラミング学習で一番大事なコーディングを行うという事ができます。

自分の知識をSNSなどに情報発信する



人にものを教えるという行為は、大変難しい行為です。
なので、自分の身につけた知識を「どう伝えれば相手に伝わるか?」という事を念頭に置き、SNSなどに自分のプログラミング学習で得た知識を発信して行きましょう。

これを行うだけでもかなりの勉強になります。
更に自分の知識に間違えがあれば、指摘をしてくれるので、再学習にもなるので、一石二鳥です!

もう1人の僕
情報発信をする際は、専門用語を多用するのは控え、初心者に伝える気持ちで情報発信を行いましょう。
そのほうが自分の勉強にもなり、相手にも関心を持たれるでしょう。

論理的思考を身につける



プログラミングを行う上で更に重要なのは、物事を論理的に考えられるかどうかです。

📃論理的とは?
✒論理的とは、「問い + 質問」を同時に表すことができる考え方を指します。
もっと簡単に言うと、その解答は筋が通っているかどうという事です。

プログラミングを行う際に、論理的思考がないと、ロジックを考える時に「○○の部分のロジックで、このツールが動作している理由が分からない..」となってしまったりしてしまいます。

なので、論理的思考能力を養いましょう。
論理的思考を身につければ、プログラミング学習がさらに捗り、楽しくなるはずです!

もう1人の僕
論理的思考能力を身につける為には、「結論」から物事を話し、その後にその結論に至った過程を話せるように意識をして、トレーニングを行いましょう。

結論から先に述べる事で、ゴールを示したので、残りはそこに行くまでの過程というルートが出来上がりますので、そこまで論理的思考を身に付けるのは難しい事ではありません。


プログラミング学習でやってはいけない事

参考書を読むだけ。(コーディング(コードを書く)をしない)


Low angle view of a mid adult doctor reading a book by the window.


この行為は、プログラミング学習で一番NGな行為です。

読んだ時点では、覚えていますが、1~2日後には、せっかく勉強した事も忘れている事が多いです。なので必ず参考書を使用する際は、「参考書+コーディング」をセットにしましょう。

参考書を使用する際は、イラストが多い参考書をオススメします。
イラストが少ない参考書は理解がしづらいので、イラストがあるだけで、大幅に理解がしやすいからです。


📃ワンポイント・アドバイス
✒参考書に記載してあるソースコードを自分なりにアレンジしたりすると、知識を早く身につける事が出来ます。

分からない事で悩みすぎない事


Tired Asian businessman standing in side of the big window in office

分からない事を放置しない事は、とても素晴らしい事ですが、悩みすぎて学習のモチベーションを下げてしまうのは、本末転倒です。

なので、どうしても分からない時は、一度保留にして、次にやるべき学習に取り組みましょう。

以外にも、後日やってみれば、「問題を解決できた!」という事がよくあります。

それでも問題を放置したくないという方は、プログラミング学習を一緒に取り組んでいる友達に相談する or yahoo知恵袋に相談するなどもありますので、悩みすぎないようにしましょう。

停滞していては、先に進みませんので、前進する事を考えてポジティブに勉強を取り組みましょう。

📃ワンポイント・アドバイス
✒分からない箇所があった場合は忘れない様にする為に、ノートなどにメモをして置き、次回に取り組めるようにしておきましょう。






フローチャートとは?



フローチャートとは、コードの流れを図で視覚的に描く事で、コードの流れを理解しやすくする方法です。

なので、初心者プログラマーだけでなく、コードのみで理解する事が難しい方にも、理解する事ができる、とてもオススメな図です。。

もちろん初心者だけでなく、上級者も使用しているので、コードの流れを理解する時は、どんどんフローチャートを描いて、理解していきましょう!


フローチャート図

フローチャートのメリット


Close-up of a smiling little girl


ここでは、フローチャートのメリットをまとめます。

もう1人の僕
フローチャートのメリットをより詳しく知る事で、上手にフローチャートを活用できるようになりましょう!

プログラム言語を理解していない人にも、コーディング手順を説明できる



簡単にいうと、自分が実現したい仕様を誰かに伝える時に、その方がプログラム言語を理解していない人だった場合でも、コードの流れを図で描いているので、意思疎通が容易にできます。

プログラム言語を理解している方でも、他の人のコードを理解したりするのは、困難だったりするので、フローチャート図はとてもオススメです。

もう1人の僕
フローチャートを作る際のポイントは、専門用語を使用せずに、作成できたほうが意思疎通がより良くなります。

プログラミング速度の向上に繋がる



フローチャートの設計図が正しく描けていれば、その内容に沿って、コーディングをすればよいので、コーディング中に、ロジックを考えたりする事がなくなります。

なので、プログラミング速度が上がり、バグなどが発生した場合でも、バグ回収をする時間を設ける事が可能になります。(※納期が存在していた場合)

なにより、ロジックを考えながらのコーディングは、とても面倒なので、フローチャート図を使用する事により、効率が良くなる事はとても良い事です。

仕様を修正する際に、フローチャートを参照する事で、容易に修正箇所を把握できる



もし自分が開発したアプリが、「仕様が変更になるので、コード修正をしたい!」となった時の事を考えてみてください。

フローチャートがないと、一から仕様内容を見直しコードの内容を把握しなければならないという、手戻りが発生しますね。

ですが、フローチャートがあれば、一から仕様内容を見直す必要がなくなるので、手戻りが発生しません。

なので、時間を無駄にロスする事が無くなります

フローチャートの書き方

まずは、この3つだけでも十分に、フローチャートを描く事が 可能ですので、ぜひ覚えてください!


開始 or 終了


処理


条件分岐






まとめ

初心者の方は、挫折してしまい学習をやめてしまう事が多々あるので、挫折しない為にも、焦らずに知識を身につけ、確実に前進をして行きましょう。

プログラミング学習を早く覚え、実用的にできる力を手に入れるために、「文法 + ロジック」をセットにして、学習をしていきましょう。

後は良いモダンプログラマーは、フローチャートを上手に描く事ができますので、良いプログラマーになるために、面倒くさがらずに、フローチャートを活用していきましょう!

最後に、 プログラミングの楽しさを忘れず、学習に取り組んでください!



記事を読んでくださり、ありがとうございます。
ぜひ、次記事も読んでください。
分からない事がありましたら、お問い合わせ下さい(^^)




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

佐藤 瑞希

皆さん、はじめまして。佐藤瑞希です。 ブログを見ていただき、ありがとうございます。ここでは主に、プログラミング学習などの事をつぶやく予定です。たくさんの人に見てもらえると嬉しいです。 職種:プログラマー(主にC#)。 趣味:ギター、ゲーム、英語、アウトドアなど。 DOAのMarie Roseが大好きで、毎日を必死に生きています。(笑)