今やプログラミングは小学校の必修科目でもあり、仕事でも趣味でも役に立つ人気の習い事の一つです。
しかし一言でプログラミングといっても、HTML・CSS・Python・Javascript・C#など言語は多岐にわたり、初心者には「なにが違うのか」、「なにができるのか」を区別するのは難しいところです。
「プログラミングはやってみたいけど、何から手を付けたらいいか分からない」
そんな悩みを抱えた方に、趣味プログラミング歴約8年の私から、初心者おすすめのプログラミング入門手順をお教えします!
趣味プログラマーと言っても、仕事でも社内向けの「タスク効率化アプリ」や「ウェブページ」は作成していました。
私もインターネットや本から独学で始め、スクールに通ったことはありません。
プログラミングを趣味で行う分には、独学でも十分楽しめる・使えるようになることは断言します!
この記事には、次のようなことが書かれています。
- プログラミングで何ができるの? ⇒ 機械でできることは、だいたいなんでも出来る!
- プログラミングはしたいけど、やりたいことはない ⇒ 自動化から始めよう!
- なんの言語を選べばいいかわからない ⇒ やりたいことがない人に言語はいらねぇ!ノーコード・ローコード開発だ!
- プログラムを組むときは、何から考えればいいの? ⇒ 「開始条件」・「目的」・「手段」の3つ!
プログラミングの第1歩に悩んでいる方は、この記事を読んで、ぜひ「プログラミングの世界」に踏み出しましょう!
あわせて読みたい!
プログラミングを始める流れ
プログラミングでなにがしたいかを決めよう!
初めてプログラミングを行う場合、順番として初めに「勉強する言語」から考えるのは間違いです!
まず初めに考えることは、「プログラミングでなにがしたいか?(作りたいか?)」です。
そう言われても、「プログラミングで何ができるか」のイメージが分かないと「なにがしたいか?」は思い浮かばないですよね。
ここで一つ意識を変えてましょう!
プログラミングでは、【機械でできることは、(だいたい)何でもできる!】と思ってください。
プログラミングは、機械でできることは(だいたい)何でもできる!
やりたいことによって、コード記述だけでできることもあれば、電子工作・機械工作が必要になることもあります。
またやりたいことによっては、コード記述が全く不要という場合もあります。(後述)
作るものによって難しくも簡単にもなりますが、例え簡単なものでも「試行錯誤の末にできたとき」の嬉しさは格別です!
なので、まずは「したいこと(作りたいもの)」を見つけることから始めましょう!
したいことが決ったら、「どの手段で作るのが、簡単そうか?」と、ここで初めて使用する言語やツールを考えます。
プログラミングの目的がなければ、処理の自動化から始めよう!
もし、プログラミングはやってみたいけど作りたいものが見つからない場合は、「自動化」のプログラミングから始めることをおすすめします!
例えば次のような、「毎日行うちょっとした手間」を自動化出来ます。
- 気に入った複数のネットショップから、特定の商品名で一括検索し、値段一覧を取得する
- 仕事終わったあと、帰宅時に家族へ送るLINEメッセージをワンボタンで送信
- 毎日寝ている間に、各サイトのポイント活動を終わらせる
自動化プログラムは、プログラミングの楽しさや便利さが実感できます!
さらに「自動化」の分野は、ノーコード・ローコード開発の得意分野でもあるので、かなり広い範囲でコードを書かずに始めることができます!
「ルールに則ったコード記述」というつまづきやすい点を省略できるので、プログラミングのいいところが手軽に体験できます!
「作りたいものがない」人は、ノーコードやローコードからでも、まず「プログラミングの楽しさ」を知るべきです。
ノーコード開発・ローコード開発から始める!
プログラム作成といえば、画面にひたすら文字(コード)を打つ姿をイメージするかもしれません。
しかし最近は、「パーツ(ブロック)を繋ぎ合わせてプログラムを作成する」、ノーコード・ローコード開発というものが広がってきています。
ノーコード開発とは、その名の通り「コードを全くかかずに、プログラムが作成できる開発環境」のことです。
ローコード開発は、「ノーコードと同じような手法でプログラムを組みつつ、コード記述もできる開発環境」です。
初心者にはノーコードの方が向いているように見えます。
しかしノーコード開発は、裏を返せば「全くコードを書くことができない開発環境」ということになります。
この特徴には、以下の2つの大きなデメリットがあります。
- コードを書けば数行で済む処理も、用意されたパーツを組み合わせて作成する必要がある
- やりたいことが実現できるパーツが用意されていなければ、手の打ちようがない
プログラミングに興味がないが、事情があってしかたなくプログラミングに手を出すのであれば、ノーコード開発をおすすめします。
しかしプログラミングに興味があり、少しでもコードを書いてみたいという気持ちがあるならば、コードを書くこともできるローコード開発をおすすめします!
「コードが書きたいんだ!」という初心者のあなたへ
- 挑戦したい言語がある!
- やってみたいことがあって、それにはこの言語がよさそう!
という「すでにやりたいことがある初心者」は、初めてでもコード記述に挑戦してみましょう!
苦労しながらでも、少しずつ目的の実現に近付いていくのは、楽しいものです。
「作りたいものがない」初心者が、目的なくいきなりコードの勉強をすることはおすすめしません。
「作りたいものがない」ない状態で言語を勉強しても、「書いてある通りのものが作れるようになって終わり」で挫折しやすいのです。
書いてある通りやっても「初めてプログラミングが動いた感動」はありますが、「まぁ書いてある通りやったし…」で感動の持続力が弱いし、次の目標が見えにくいんです…
作りたいものがない初心者は、まずローコード開発で自動化処理を作成して、「自分にプログラミングの適性があるか?」を確認することがおすすめです!
試行錯誤しながら自分がほしいものを作って、作ったもので少しでも生活が変われば、その後は作ったものの改良案や他に作ってみたいもの・やってみたいことは自然に見えてきますよ!
プログラミング処理の基礎
プログラムには「目的」があり、それを機械的に「達成」するために作られます。
そのため、まず「なにを作りたいか(目的)考えろ」とよく言われるわけですね。
プログラムを作るというと難しいイメージがあるかもしれませんが、端的に説明すると次のことを行っているにすぎません。
「開始条件(きっかけ)」から始まり、いくつかの「条件分岐」を繰り返しながら、「目的の達成」を目指す一連の流れ。
この「開始条件」、「条件分岐」、「目的の達成」について、もう少し掘り下げてみましょう!
開始条件
開始条件は、その名の通り「プログラムが始まる条件」です。
例えば、次のようなものがあります。
- プログラムを起動した
- 指定の日時になった
- 指定のメッセージを受け取った
- ひとつ前の処理が完了した
- 指定の処理がまだ完了していない
プログラムには必ず開始条件があります。
「何が起きたときに、どんな処理をしたいか?」、これを考えることがプログラミングの第1歩かもしれません。
処理の条件分岐
処理の条件分岐は、「進行中の処理を状況によって分岐させる方法」です。
処理の条件分岐には、大きく分けると次の2つのパターンしかありません。
- IF条件(IF分岐)
- ループ条件(ループ分岐)
IF条件は、「(要素A)と(要素B)を比べて、(条件)を満たしているか?」というものです。
「財布の中身(要素A)と商品代金(要素B)を比べて、所持金が上回っている(条件)か?」といった感じです。
ループ条件は、「(要素)が(終了条件)を満たすまで、(処理)を繰り返す」というものです。
「腹筋回数(要素)が10回を超える(終了条件)まで、腹筋(処理)を繰り返す」といった感じです。
プログラムは、この「処理の条件分岐」を使い、処理の現在の進行状況を判断します。
どれだけ適切な「処理の条件分岐」を設定できるかは、プログラマーの腕の見せ所と言えるでしょう。
目的の達成
目的を達成すると、プログラムは停止します。
ただし開始条件と違い、「目的の達成」は存在しない場合があります。
いわゆる「無限ループ処理」というものです。
例えば「時計プログラム」を作った場合、時計は常に動き続けることが目的なので、終わりはありませんよね。
しかし、何らかの異常で処理が停止することはよくあります。
時計であれば「電池切れ」や「時計が戻ってしまった」場合などが考えられます。
そういった異常のパターンも踏まえ、「処理を再開するときは、どのような状況であれば正常に開始できるか?」を考えてを処理は作成するようにしましょう。
プログラミング処理を考える流れ
概念的な話だけではイメージがつきにくいと思いますので、具体的に1つ処理を考えてみましょう。
今回は例として、「目覚ましの処理」を作る場合を考えます。
「開始条件」と「目的の達成」について考える
夜に寝て、「午前7時」に起きるとしましょう。
この場合、「開始条件」と「目的の達成」は次の通りです。
【開始条件】午前7時になった
【目的の達成】起きた
プログラムを作るときは、「開始条件」から始まり、「目的の達成」を果たすためにどのような「手段(処理)」を取るかを考えます。
分かりやすいよう、ここまでをフローチャートにしてみましょう。
目的を達成する「手段」を考える
今回は起こすための「手段」として、シンプルに目覚まし時計をセットしましょう。
このままでは、目覚ましがなっただけで、無条件に「起きた」と判断されてしまいます。
起きたかどうか、「処理の条件分岐」で確認しましょう。
だからといって、次のような条件分岐を作成してはいけません。
「起きた?」⇒「Yes/No」で分岐したいところですが、プログラムは具体的な「動き(変化)」が無いと状況を判断することができません。
「起きた」ことで処理を終了するのであれば、こんな「動き(変化)」があれば「起きた」と判断できることを条件にしなければなりません。
この条件分岐の考え方がプログラミング最大のポイントで、「動き(変化)」をいくつ思いつくかが、1つのプログラマーとしての腕の見せ所であり、プログラミングの最も面白いところといっても過言ではありません。
今回であれば、次のような「行動(変化)」が考えられます。(ほかにもたくさんあります、考えてみてください)
- 目覚まし時計を止めた
- 上半身を起こした
- ベッドから離れた
今回は処理の例なので、シンプルに「目覚まし時計を止めた」で起きたと判断しましょう。
これで「目覚まし」プログラミングが完成しました。
これはシンプルな例ですが、どれだけ大きいプログラムになっても、「開始条件」から始まり、「条件分岐」をいくつも繰り返して「目的の達成」を目指すという本質は変わりません。
慣れないうちは、まずこういったシンプルなものを作り、そこから必要に応じて機能を追加していきましょう。
作ったプログラムを改変する
例えば、ただ鳴り続けるだけで起きるとは限らないので、時間が経つごとに音量を大きくしたり…
ちなみにこの通り作ると、一瞬で音量がMAXまであがっちゃいます!
「なぜ一瞬で音量MAXまで上がるか?」、理由と対処方法を考えてみてから次をご覧ください!
このままだと停止ボタンが押されるまで鳴り続けてしまうので、期限を設けたり…といった感じです。
なお1つ前のチャートでは、停止ボタンが押されるまで無限ループで音量アップを実行してしまうので、一瞬で音量がMAXになってしまいます。
「停止ボタン」の処理、「60秒制限」の処理、「音量アップ」の処理を並列で同時に実行するよう変更してみました。
「自分で作った処理のミスに気付く瞬間」って、めっちゃ気持ちいいですよ!
プログラミングに慣れてきたら、初めから使う機能も踏まえて作成するといいでしょう。
しかし「使うかもしれない」程度の機能を始めから作成することは、無駄に処理が複雑になるためおすすめしません。
処理はシンプルに作成し、必要なときは簡単に追加できるプログラミングを目指しましょう!
自動化プログラミングを作成するツール
プログラムの組み方を説明したところで、私が使っているノーコード開発・ローコード開発ができるツールをご紹介します。
Automate
手軽に開発を試してみるならば、Androidスマホでノーコード開発ができるアプリ「Automate」がおすすめです。
Androidの自動化を行う、Tasker系と呼ばれるアプリの一種です。
Androidでの自動化系アプリには珍しく、フローチャート形式でグラフィカルに処理を組むことができます。
英語にしか対応していないため言語的ハードルがやや高いですが、それを補って余りあるほど「フローチャート的にプログラムを組める」という利点があります。
私はこのAutomateを使い、次のような処理を作っています。
- 電源ボタン2度押しで、マナーモード有効⇔無効切り替え
- イヤホンを挿しているときにLINE通知が来たら、通知内容を読み上げる
- 画面オフで長時間経過したら、Home画面に戻す(
エロ機密画面うっかり放置対策)
上記は簡易的なものばかりですが、以下のような膨大なプログラムも組むことができます。
Automateでは一般的なプログラミング言語を使用することはできませんが、専用の簡易記述を使うことができます。
そのためAutomateは、ノーコードといいつつ、実質ローコードなアプリです。
スマホ操作は日常の中でも多くの時間を占めているため、上手くプログラムを組めば、大幅な時短ができます。
また古いスマホに入れれば、メール受信や通知受信をきっかけに動き出す簡易的なサーバーとしても応用ができるでしょう。
Node-RED
Node-REDは、主にLinux環境で使われている「Javascript」をベースにしたローコード開発環境です。(一部動作が異なる可能性がありますが、Windowsでも使えます)
「ノード」と呼ばれるパーツを組み合わせることで、初心者でも処理の流れを簡単に理解しながらプログラムを作成することができます。
また、「Javascript」のコードが使用できるため、「ノードでは煩雑になりそうなときは、コードを書いて1つのノードで済ます」といったこともできます。
Node-REDは初期状態では簡易的なことしかできませんが、インターネット上から簡単にさまざまな機能を持ったノードを追加することができます。
私はスマートスピーカーのアレクサを使用しているので、Node-REDからアレクサが操作できるノードを追加し、以下のことを実現しました。
- 同じ「電気をつけて」の発声でも、時間帯によって電気の明るさを調整して点ける
- 自宅に雨雲が近付いたら、アレクサ&LINEで通知
- アレクサから声でChatGPTに質問し、回答を聞く(個別記事あり)
また、Node-REDが起動しているパソコン内にある、全く別言語のスクリプトファイルを実行することもできます。
得意な言語に得意な処理を行ってもらい、結果だけをNode-REDでまとめる……といった使い方もありでしょう。
まとめ:まずは1つ、調べながら作ってみよう
「趣味(独学)プログラミングの始め方」を説明しました!
繰り返しになりますが、「プログラミングをやってみたいけど、やりたいことはない」という方は、自動化のプログラムを作ってみることをおすすめします!
そしでコード記述にばかりとらわれることなく、ノーコード開発やローコード開発から試して、「プログラミングとは、どういったものか?」をまずは体験してみてください!
自作のプログラムが初めて思い通りに動いたときは、叫びたくなるくらい嬉しいですよ!
この記事を読んで、プログラミングの1歩を踏み出す人が居てくれれば嬉しいです!
余談:プログラミングを「趣味」から「仕事」にする場合
今回の記事は、あくまでも「趣味(独学)」でプログミングに挑戦したい方を対象に書いています。
仕事で使うのであれば、ある程度の「コードの書き方」を勉強した方がよいです。
仕事の場合、作成したコードは何年も使い続けることになります。
自分以外の人がコードを編集することもあるため、我流の書き方では、「コードの解読」に費やす時間が多くなってしまいます。
前いた会社の課長が独学タイプで、コード解読にめちゃくちゃ時間かけました…
仕事で使うのであれば、スクールや本で「効率の良いコードの書き方」を勉強しましょう!
自分で書いたコードでも、数か月後には細かい部分は忘れてしまいます。
自分のためにも、「効率の良いコード」はマジで覚えましょう!
「コードの書き方」を本で勉強するならこの1冊!
おすすめの記事
\ バイノーラル録音のASMRで存在を感じよう♪ /
『ぼっち・ざ・ろっく』後藤ひとり 役 青山吉能さん出演のASMR。
自分だけに話しかけてくれる吐息に耳がゾクゾクします。