# はじめに
何を伝えたいのかということですが、ここでは、技術的なことではなく、自分の経験から「心構えとか、考え方」を中心にまとめています。見出しは、多少教訓めいた言葉になっています。
この内容は、精神面的なこともあるかと思います。以下に、少し、まとめたいと思います。
# 経験から
自分の長年のプログラミング経験とかプロジェクト管理経験とかがベースになっています。
よく言われることは、初期の学習で、挫折する人が多いということです。初めの悪い印象がトラウマになり、やる気を失うことです。
最初の指導方法とか学習方法とかに問題があると、やる気を失ってしまいがちです。
あきらめずに地道に学習して行ける人はうまく行く人だと思います。それと、興味が持てるかが重要な要素になります。
プログラミングの面白さとか、楽しさは初めは、誰にも分らないはずですが、そのとっかかりは何なのかということです。
初心者にプログラミングは楽しいと教えることは難しいでしょう。慣れてきた頃に、それに徐々に気づくのですから。
物づくりの楽しさは、なんでもそうですが、小さなことの達成感からでしょうか。プログラミングも物づくりの一つです。
# プログラムって何なのか、初めての人はそう思うでしょう。
自分は、大学の情報処理という単位を受講したのが、はじまりでした。1966年の頃です。もう、60年も前のことです。当時は大型コンピュータでした。大学では、基礎から学ぶため、コンピュータの中身から教えられます。2進法とかからです。確かに、こういうところからはあまり面白くないかもしれません。
コンピュータには、ハードとソフトという概念がありますが、プログラミングはソフトの方です。プログラミングは言語です。その言語を覚えることから始まります。
しかし、その言語もいくつかに分類されます。CPU(ハード)を動かすプログラムは機械語です。アセンブラ言語です。しかし、プログラミングというと一般的には、アプリケーションプログラミングを言っていますので、もっと上位の言語になります。言語もいくつかの層から構成されていて、ちょうど玉ねぎの皮をむくような感じです。
ここでは、最上位層の言語になる、javascriptやphp、htmlのような言語のことを指しています。
いわゆるWebプログラミングのことで、OSのプログラミング言語である、CやC++とは別の言語になります。
こういう説明をすると、専門用語が頻繁に出てきて、初心者の方は、嫌気がさしてしまうかもしれません。
ここで、大事なことは、「積み重ね」という言葉です。小さなことから一つずつ学習して行くということです。
一速とびに進むことはできません。
# スパイラル方式がよさそう
プログラミングの学習には、このスパイラル方式がよく当てはまります。一直線に進むのではなく、進んでは、後戻りし、また、進んでは後戻りという風にして、少しずつ前進する方式です。
この後戻りが重要な要素になります。けっして侮ってはなりません。よく、学校で学んだあの復習です。子供の頃、家でやる復習が嫌でたまりませんでしたが、これが、重要なのです。
# 最近はAIがヒントを与えてくれるので、進み方が早い
昔は、書籍などの技術書が無ければ、学習が難しかったが、今はネットがあるので、簡単にそのヒントが得られます。ただ、そのサンプルコードを鵜呑みにするのではなく、なぜ、そのようなコードになるのかを理解して使用する必要があります。単なるコピーではいけません。
AIに頼ってもいいですが、コード内容をよく吟味して使用すべきです。
オープンソースというものがあります。今の時代は、それらのライブラリーもよく利用します。著作権なしで使用できます。毎回、一から作るのではなく、すでに実績のあるライブラリーは使用した方が効率がいいです。
あるものは使うということです。ネットで探しながら開発を進めて行きます。
# デバッグ方法に練達
これが大変です。品質を上げるためには、バグは取り除かないといけません。
不具合の原因が中々わからないことはよくあります。この追及に相当な時間を費やすことはしょっちゅうです。
この地道な作業ができない人はプログラマーに向いていないかも知れません。忍耐も必要です。
長年、プログラマーを続けてこれたのは、このあきらめないという精神力のお陰です。あきらめなかったからこそ、たどり着けたところは何箇所もあります。そうした成功例がたくさんあるとプログラミングも楽しくなります。
昔から、「信ずれば通ずる」という格言があります。その通りと思います。
# 不注意や思い込みは結構あります。
それが原因のことが、結構あります。
# 生半可な知識で対処すると怪我のもと
これは、非常に良くないことです。十分理解して進むことです。
どうしても、先を急ぐときは、生半可な状態で、プログラミングを進めてしまいます。吟味が不自由分のままです。それが、結果的には、あとで、原因不明の不具合になっています。大変な時間のロスになります。
# ちなみに今の開発環境は
webプログラミングは、10数年前からはじめました。開発環境は以下の通りです。
パソコン Dell inspiron620
OS windows 10
統合開発IDE Apache NetBeans IDE 26
使用言語 javascript jquery php MYSQL html
ホームページのurl
https://favorite.tecoyan.net/tiny_1/TinyPlayer_test_1.php?dnm=Tennessee%20Waltz#access
現在の開発は、上記のような、youtubeプレーヤーサイトが中心です。主にchromeのプラグインを開発しています。
# 最初は静的ページから入り、その後に動的ページに入ります。
静的ページは、html要素内にボタンなどの動的要素がないページで、クリックなどのイベントは発生しませんが、動的ページになると、ボタンやマウスの操作が入るページになります。そうなると、途端に難しくなりますが、挫折せずに続けると楽しいページが作成できます。ゲームなどのページはまさにそのお化けです。
作成したことはありませんが、大変難しいプログラミングと思います。
#最後にプログラミングのことがわかる簡単な説明をいたします。
まず、プログラムとは、コンピュータへ出す、命令や指示をブログラム言語で記述したものと考えます。コンピュータはその記述した命令(命令はメモリというところにあります。)を1命令づつ読み取って、命令を実行します。
よく例として出されるのが、「hellow」という文字をモニター画面に表示するものです。
これは、"hellow"という文字を画面に表示しなさいという、命令があります。
例えば、その命令は、jquery言語では、
$("body").html("hellow");
となります。
これは、bodyはページの本体をあらわしますので、そのページ(画面)に"hellow"と表示されます。
この$("body").html("hellow");というのが、命令とか指示になります。
プログラムは、このような命令の集まりです。それらの命令で、画面にいろいろな文字や、写真の画像などを表示できます。
簡単に言うと、プログラムはこのような命令の集まりです。プログラマーは日々、このような命令を書いています。
# あとがき
昔から「継続は力なり」と言われています。まさに、そうかも知れません。
プログラミングは、言葉をコンピュータ言語に置き換えたものと言えます。プログラミング言語と言われるものです。その言語もコンピュータが出始めたころから、大分進化しています。様々な言語が生まれました。すべての言語を習得する必要はまずないと思います。自分も知っている言語はほんのわすがです。webプログラミングも、使用する言語はそんなに多くはありません。自分は、html,javascript,jquery,php,MYSQLぐらいの言語しか使用していません。昔はFortran,C,C++,pl言語,アセンブラ...などを使用していました。
面白いことに、ある程度まで、スキルが上がると、後は、自らの力で、問題解決ができることです。知識が知識を生んで、自己解決できるようになります。
そこまで、到達すると、後は楽です。最近は、AIが出てきたので、もっぱら、AIアシスタントから教えてもらっています。年齢を重ねると忘れることが多くなります。覚えたノウハウも忘れます。そのような時はAIアシスタントを使用します。
プログラミングを志向した、初心者の方には、ぜひ、これらのことを記憶にとどめて、チャレンジしていただきたいと思います。