プログラミングの基礎知識・学習目標を行動計画で裏付ける元経営者

学習目標 独学
学習目標

きょうはプログラミングの基礎知識・学習目標について学びます。

目標を達成する確実な方法は、その目標を行動計画で裏づけることではないでしょうか。

プログラムとはコンピューターへの指示で、指示がないと動きません。

きょうはあなたと、基礎知識・学習目標について学習します。

1.そもそも「プログラミング」って何?

岐路
岐路

1.プログラミングには言語がある

プログラミングを習得する上に欠くことのできない必須条件は、ただ1つの目標に向かって意志を傾注することではないでしょうか。でも、多くの人は目標を見失います。これは見えないというのではなく、よく目をあけて道筋の研究をしないためだと思います。

「ゆくゆくはプログラマーになろう」と心に決め、そのための特別な勉強をしてなる人もいるでしょうが、「あれこれやっていたら、なんか勢いでなってしまった」という人が大半だと思います。一歩踏み出せば、そこにたどり着くのです。

プログラマは、プログラムのモジュール構成(どう分割するか)やアルゴリズム(手法)を考え、プログラムを書きます。何かの「仕様」「目的」があり、それを解決するのがプログラミングで、 プログラミングには言語があります。

HTML

ウェブページを作成するために開発された言語です。例えば、リンクは <a> </a> で囲みます。ページから別のページにリンクをはったり、画像・動画・音声などのをリンクで埋め込むことができます。

CSS

ウェブページのスタイルを指定するための言語です。例えば、フォントやサイズなどです。HTML では文書構造のみを定義して、スタイルについてはスタイルシートで指定することが推奨されています。

JavaScript

ブラウザが Web ページにアクセスしたときにダウンロードされ画面上に表示されると、次に実行するべき動作をブラウザに指示します。例えば、メールアドレスをフォームに入力したかどうかをチェックさせるなどです。

Ruby

他の言語と比べると記述量が少なく覚えることも少なくて済みます。環境構築が困難でとっつきにくいのが難点ですが、動的なサイトを作るのにとても役立ちます。まつもとひろゆき氏が開発しました。

PHP

Web システム開発に特化した開発言語です。そのためとてもシンプルなので修得が容易ですし、環境構築も楽にできます。一度習得すれば広範囲に仕事が可能です。

Java

Web システム開発、Android アプリ開発にも利用されています。 環境まわりが複雑になってしまうのと、記述量が長くなるのが難点です。

それぞれの言語にはそれぞれの機能があり役割があります。そして全体として、お互いをうまく捕捉し得るような位置に配置されているのでしょう。

プログラム言語と言ってもいろいろなものがある。そしてそれは、プログラムに用いる言語や、実行する環境などによって違います。旅行に行きたいと思う目的地を定めた上は、道理にかなった手段に訴え、成功する方法を学ばなければいけません。

このような「素材」の重さに頼ることなく、自分の内側から想像力を駆使して「興味のあるある分野」を前面に押し出していけばいいわけです。

2.おすすめの言語はなんでしょう?

とりあえずは、上記のような Web 系がよさそうですね。

  1. 心者でもわかりやすい
  2. 柔軟な働き方ができる
  3. 市場が大きいので仕事が多い

HTML を学べば CSS や JavaScript とも関連づけられ、Ruby を学べば PHP、Java まで覚えやすくなります。1つに絞るより関連付けていくつか並行して学習した方がいいです。

これらの言語は世界共通です。現在もっとも使われているのは  Java でしょう。プログラム言語は道具の1つ。得意な言語はあってもいいですが、適用するシステムの特性や OS などのプラットフォームに応じて、使い分けないと苦労することになります。

ウェブアプリ開発を行うには、HTML CSS JavaScript を最初に習得するべきプログラミング言語といえると思います。Web ページの標準言語は HTML ですが、より拡張性の高い HTML5 に移行しています。2つの違いはソースを見れば一目瞭然です。

あなたが知識を深めれば深めるほど、離れがたいものになって熱がこもるようになってきます。でも実行に移さないかぎり、学んだことを身につけたとはいえません。そこで第3の手段が必要になります。

2.ブログ・ホームページをつくるならCMS

ホームページならCMS
ホームページならCMS

ブログ・ホームページ作りの手助けしてくれるシステムに CMS があります。「コンテンツ・マネジメント・システム」のことで、複雑なプログラミングをしなくても、直接テキストを入力したり、画像をアップロードしたりするだけで、webサイトが構築できる便利なシステムのことです。

手軽にコンテンツが作れるため、「統一性のある Web サイトが作れる」「Web サイトの更新・管理がしやすい」などのメリットがあります。もし CMS の助けを借りずに HP・ブログを作るとなると、以下のような作業手順が必要となります。

  1. HTML ファイルを作る。
  2. 入口である index.html ファイルを作る。
  3. 作った html ファイルをサーバーにアップロードする。
  4. 完了

しかし CMS を利用すれば、ブラウザの画面だけで作業できます。

文章を書いて編集、ドラッグ&ドロップで画像を入れるだけです。CMS の代表的なものに「WordPress」「Jimdo」「はてな」があります。HTMLやCSSのようなWebサイトに必要な知識がいらず、テキストや画像などの情報を入力するだけでサイト構築が自動的にできます。

HTML を学べば CSS や JavaScript とも関連づけられます。HTML はマークアップ言語というのに対し、JavaScript はスクリプト言語といいます。

プログラム作成時に、コンピュータが理解できる形に自動的に変換されるのが C 言語と違うところです。JavaScript は HTML で作られたソースコードの中に埋め込むことで、HTML だけでは表現できない動的な表現を Web サイト上に実現します。

3.Web サイトを作ってみる

習い覚えたことは実行することです。ひとりでできるようになるまで、自分で自分を訓練することです。そして、考えて、反省して、新たな決意を固めることです。夜遅くまで作業をするにはデスクワークに限ります。

やってみたかったら、動画を見ながら概要をつかむ→概要をつかんだら本を読んで理解する→理解したら自分の手で何かを動かしてみる。

Go言語

net/http パッケージを使用すれば、Web サーバーを構築できます。モバイル向けのアプリ制作に使うツール、Go mobile を使えば開発できマルチプラットフォームに対応したクロスコンパイルの機能でアプリの制作がしやすい。

Scratch(スクラッチ)

小学生向けのゲームや教材ダウンロード、インストールする必要がありません。お使いの「Web ブラウザ」というホームページを閲覧するソフトで簡単に使うことができます。

Excel VBA

エクセルブイビーエー:省力化 ※エクセルVBAは、事務作業を自動化して効率アップしたい人向けの言語です。最近の言語に比べ書きにくいのが難点です。

LateX(ラテックス)

数式がきれいに作成できるので理工系学会の論文・教科書作成に向いています。インストールは、ネットで無料でする、もう一つ「LaTeX2ε 美文書作成入門」についてるDVDから行う方法があります。

Python(パイソン)

機械学習機械学習とは、データからパターンを見つけ出し将来を予測することです。 これは予測分析におけるモデル構築の自動化につながり、データサイエンティストの人材不足を補います。

東大無料講座 京大無料講座

Unity(ユニティ)

ゲームを開発するためによく使用する機能を簡単に使えるゲームエンジンの中でも Unity は全世界で100万人の開発者が使用しています。最近では「ポケモンGO」に使用された事でも有名。

スイフト

iPhone や iPad などの端末で使えるアプリ、Mac のアプリを開発することができます。Objective-C に代わる新たな言語として設計され Ruby やPHP などを盛り込んでいて、スクリプト言語のように簡単にアプリを開発することができます。

C言語

C#、C++:情報処理技術者(国家資格) コードを書いて動作させる為にコンピュータが理解できる言葉に翻訳するコンパイルが必要な言語。初心者向けのプログラミング言語ではありませんが、プログラミングに詳しくなりたいという人にはおすすめです。

4.転職とプログラミング:基礎知識

転職
転職

最善の方法は朝早く仕事にとりかかることです。朝のうちにやさしい作業を1つ2つやっておくと、活気が出てきます。作業に弾みがついてトントンと運ぶという心理的な効果があります。

半端な時間の利用も考えておきます。半端な時間にできる作業もあらかじめ考えておきます。プログラミングは、図書、Webサイト、YouTube でも学べます。わずかな時間が生じたら、それを有効に活用できるように考えておきます。

知識を求め、常に好奇心に駆られるほど、熱意を保つ方法はありません。知りすぎて困るということはありません。”冷えさせない方法は温めるに限ります”。熱意を盛り上げていくには8つの方法があります。

1.熱意を盛り上げるためには、

自分が達成したい目標を明確に設定します。A4の紙に目標をいくつも書いて部屋の周りにはることで目標を可視化します。目標に向かって努力することは、熱意を持ち続けるための重要な要素です。

自分が本当に情熱を持てる分野や活動を見つけます。周りの人に目標を語り、逃げられないようにするの方法です。興味や関心があることに取り組むことは、自然と熱意を引き出す助けとなります。

継続的な学びと成長へのコミットメントを持ちます。自己啓発のために本やオンラインコースを活用したり、業界の最新動向やトレンドを追いかけることで、熱意を維持することができます。周囲のインスピレーションを得ることも重要です。成功した人々の物語やモデル、同じ関心を持つ人々との交流を通じて、自分の熱意を刺激します。

自分をポジティブにサポートしてくれる環境を構築します。市場が広くて需要が多い分野をさがします。モチベーションを高めるメンター、サポーター、または共感する仲間とのつながりを築くことで、熱意を維持することができます。

自己肯定感を高めることは、熱意を盛り上げるための重要な要素です。自分の成果や進歩を認め、自信を持つことで、熱意が増し、さらなる成果を出す励みになります。

熱意を維持するには、持続的な努力が必要です。途中で壁にぶつかったり困難に直面したりすることもあるかもしれませんが、それらを克服するための努力を続けることで、熱意を保つことができます。

受講を開始した当初から、「全てのコースの最終課題を絶対に出す」という目標をもち、学習に対するモチベーションを下げないことです。目標を立てていたからこそ、早い段階でカリキュラムを進め、複数のメンタリングを活用してじっくり最終課題を進めるようになります 。

5.プログラミングは独学できる

独学
独学

魚を釣る唯一の方法は、川・海に出かけることです。才能のある人はとかく怠けやすいです。ややもすると自分の才気におぼれて、とかく失敗しがちなんですね。あたりまえのことを熱意をもってやれるかどうかですね。

何も知らなくても始められますか?

何かを知らないとまったくプログラミングができないということはなく、プログラミングしながら学んでいくのです。失敗しながら学んでいきます。良い勉強ができるか否かは準備段階で決まるんじゃないでしょうか。

  • 阻害する要因を整理し、事前に対策を打って学習環境を整えること。
  • 会社依存の勉強では職場の環境や制約に左右されるため体系的に学べない。

体系的に学ぶには図書での独学が効果的です。世の中には「参考図書」とよばれているものが多種多様にあります。数も種類も膨大であるため。人々はどれをどう選んでよいか途方にくれてしまいます。広く読書しない人は、海図を持たずに太平洋をさまよう船乗りのようなものです。専門書は必須の知識を与えてくれます。実践とその成果についての記事が載っています。

6.参考図書で学ぶ

参考図書で学ぶ
参考図書で学ぶ

図書での勉強が効果的だと思います。Web上の情報の方が新鮮ではありますが、体系化が不十分だったり、正確性に疑問があったり玉石混淆です。

その点、図書は、校閲や監修を受けているので、品質は安定しています。ある程度、その分野に習熟すると、図書では十分な情報を得られなくなるので、自分で調べたり、もっと詳しい人に質問したりすることになります。

まず、それぞれの図書が、「学びの道具」としてどのような特性をもっているかを見分けます。その図書をどのように活用するかを考えて、その場合に学習者に生じる「学びの質」を丁寧に考察してゆかねばなりません。

プログラム言語でも、その時々で主流になるものが出てきます。今でいえば Android アプリを作るのに Java のニーズが高まり、最近では機械学習の本が並んでいます。数年すれば、違うプラットフォームがでてくる可能性があります。

AI の Python なんかの参考図書を読む、あまり深く考えないで、「こんなことできないか?」と考えてみる。そして実際にプログラムを組んでみる。勉強はほどほどにしてとりあえず作ってみることです。

  • 実際に作ってみる(現実)。
  • こんなものと作って見たい!(目的)

そうすることで勉強が全て目的に直結するわけです。モチベーションも維持できて周辺知識も身についていくものです。受験勉強のように知識を積み重ねてゆく形だと挫折します。

プログラムは “道具” です。道具なので、いくつかのプログラミング言語を習得した方がいいのです。あるプログラミング言語は細かい作業に向いてる、別のプログラミング言語は大きなものを動かすのに適するという具合です。

1.作り手と使い手の異文化交流

こうすれば分かりやすいと一方が考えることが、他方には全然わからないことがあります。こんなことがなぜわからないかが、相手には分からないのです。

技術者(エンジニア)とシロウトというのは、話す言葉も発想も、価値観すらも異なる別々の文化の住人なのです。この2つの文化が出合い、互いにコミュニケーションを始めるとき、やっとユーザー中心のインターフェース(異なる2つのものを仲介する)が作られます。

まずは「WordPressからスタート」ですね!HTML/CSS はプログラム言語ではないのです。タグは108個ありますが、実際に使うのはその半分くらいです。易しいのですが幅が広いです。JavaScript とも関連づけて覚えていった方がいいです。

自分のペースでできます。
費用もかかりません。
コースを自由にかえられます。
モチベーションを維持するのは難しいですが、「ユックリ」「じっくり」できます。

2.学習の順序は

プログラミングエンジニアは技術的スキルだけではない失敗しない提案!就職して1年目はありがとうといわれ、2年目になるとご苦労さまといわれ、3年目になると、おやめくださいといわれるのでしょうか?エンジニアはプログラミングを書きます。では、なぜ、エンジニアは生き残れないのか、不思議ですね。

7.オンラインスクールで学ぶ

オンラインプログラミングスクール
オンラインプログラミングスクール

WordPressHTML/CSSjQuery→JavaScript→PHP 

この順序で学ぶのが一般的です。独学だと書籍の見本通り制作したものが本当に正しく実装できているのか、またプロの目線で見た時に良いか悪いかがわからないので、不安が残ります。その点、オンラインスクールは専門家が常駐しているのでお任せしやすいところがあります。

1.オンラインスクールでプログラミングを学ぶメリット

  1. 柔軟なスケジュール:オンラインスクールは、通常、生徒のスケジュールに合わせてカリキュラムを進めることができます。これは、学生が自分のペースで学習することができるということです。また、学生が仕事や家族の世話をしながらプログラミングを学ぶことができるように、講義や演習が録画されている場合があります。
  2. 専門的な指導:オンラインスクールは、一般的にプログラミングに特化した専門家から指導を受けることができます。このため、学生は専門的な知識やスキルを習得することができます。
  3. グローバルなコミュニティ:オンラインスクールは、世界中の人々と交流することができるため、多様な文化やバックグラウンドを持つ人々とつながることができます。これにより、学生は異なる視点からプログラミングについて学ぶことができます。
  4. 最新の技術とトレンドに追従:オンラインスクールは、最新の技術とトレンドに追従し、最新の開発環境やツールを使用して学習することができます。これにより、学生は現代的なスキルを身につけることができます。
  5. リーズナブルな費用:オンラインスクールは、一般的に従来の大学や専門学校よりも費用が安く、学生が自分の予算に合わせて学習できるようになっています。また、オンラインスクールによっては、学生が実際にプロジェクトに取り組むための割引クーポンや無料のコースが用意されている場合があります。

これらの理由から、オンラインスクールは、プログラミングを学ぶための優れた選択肢となっています。

スクリプト言語

ソースコードをその場で機械語に翻訳してくれるので、書いたコードをその場ですぐ実行できます。

コンパイラ言語

ソースコードを事前に時間をかけてコンパイルする必要がある言語のことです。動作はスクリプト言語より速くなります。C,C++,C#,Javaなど。

どちらも一長一短あるのですが、初めてプログラミングを学ぶのであれば、書いたソースコードが即実行されて、結果が確かめられる「スクリプト言語」から学習することをおすすめします。

オンライン

プログラミングスクールの受講形式には、オンラインとオフラインがあります。

インターネットを使って受講生と講師がリモートで勉強をするスタイルです。場所や時間を選ばず自分の自由なスタイルで勉強ができます。

オフライン

プログラミング教室に通って学習する受講スタイルです。場所や時間に拘束されますが、わからないことをその場で質問することができます。どの言語を選択するのか、選び方は様々です。言語によって得意な開発の分野や求人需要も異なり、関連する言語の系統も大きく変わります。

最短で Web デザインで稼げ力をつけたい

TechAcademy のWebデザインコースがおすすめです。

TeraTail や StackOverflow といった、分からない所を質問できるサイトもあります。

「分からない→質問サイトに投稿→回答がこない→先に進む→分からないことがなにかのきっかけで解決する」

Progate やドットインストール、といった動画サイト。Udemy や Schoo といったサイト。Skype  などの通話ツールを使ったオンラインスクールで講師と画面共有し、つまづいたところをピンポイントで聞くこともできます。

Google ハングアウトは、無料でメッセージのやり取りが行えるほか、ユーザー同士ならビデオ通話を使って 1:1 やグループでの会話ができます。

2.オンラインスクールのデメリット

  • 集中的に学べるがさぼりやすい。
  • 学習のペースをつかみやすい。学習時間が拘束される。
  • 費用が高くつきやすい。

各教室とも受講生用のテキストをはじめ、学習コースや学習プラン、料金プランがまちまちなので、納得のいく教室を見つけることは難しいかもしれません。「無料体験教室」はどこも用意しているので、「場所」と「予算」がある程度定まったらとりあえず「無料体験」してみることです。

万が一、教室選びでミスった場合、お金は返ってくるのか?

心配が先に立ちますが、プログラミング教室は、「特定商取引法」対象です。受講料5万円以上、受講期間2か月以上の教室で、中途解約時の教室側弁済義務額は最大で5万円です。例え、30万円の教室に申し込んで、たまたまトラブルが発生して中途解約したとしても法的には5万円しか返ってきません。

中には「全額返金保証」を謳っているところもありますが、それには「スキルの上達をまったく実感できなかった場合」や「申し込みから8日以内」などの条件があります。トラブった場合は、特定商取引法をたてにされて、恐らく受講生の方が不利になるでしょう。

3.「わかりやすさ」とは? 手順主義の弊害

「わかりやすく」説明するということは、作業手順を順序良く説明することではありません。算数・数学でいえば、「答えの出し方」だけを示され、それを「覚える」という説明はおよそ説明になっていません。

「わからないところがわからない・・・」
「質問しがたい雰囲気でストレスになった・・・」

教える側が、学ぶ側の活動の流れをきちんとたどって、想像力を働かせ、学習者がどの段階で、どういう目的で、どんな情報を、次々知りたくなるのかを克明に描き出せば、これらは大いに改善されることになります。

「わかりやすさ」とは、情報や知識を明確に伝えることで、相手が理解しやすくすることを指します。わかりやすさは、コミュニケーションや教育において非常に重要であり、相手にとって理解しやすい言葉や説明を使うことで、情報をより効果的に伝えることができます。

一方、手順主義は、手順や手法を重視する考え方で、正確性や完全性を追求する傾向があります。しかし、手順主義が過剰になると、わかりにくい説明や、冗長な手順が含まれることがあります。これは、相手にとって理解しにくく、ストレスを与えることがあります。

例えば、プログラミングの学習において、手順主義が強調され過ぎた教材では、コードの書き方やプログラムの構造について細かい手順が説明されることがあります。しかし、初心者にとっては、このような手順は理解しにくく、混乱を招くことがあります。そのため、わかりやすい説明や例を交えた教材の方が、初心者にとってはより効果的であると言えます。

手順主義による弊害は、わかりにくい説明や手順、冗長な情報が含まれることで、学習効率を低下させることがあります。そのため、わかりやすさを重視した教育やコミュニケーションを行うことが、情報や知識を効果的に伝えることにつながります。

独学を家庭のお湯と考えれば、オンラインは温泉の湯かもしれません。家のお風呂は気軽に入れますが、冷めるのは早いです。温泉の湯は体の芯まで温まるし、湯からでても中々冷めません。家庭のお湯と温泉の湯、同じ温度でもなぜこうも違いがでてくるのでしょうか。

温泉の魅力は確かにあります。入ってみなければわからない効用は必ずあるものです。

あとがき

現場に入ると、エコノミー(利潤追求の原理)が、エコロジー(生態系の原理)を飲み込んでいく現実にぶつかります。それをどう打開するかを突き付けられ、社会的現実から思考を鍛え、人間と自然の関わりを問い続けていくことが自分の仕事と思ってきました。

頂上に辿り着くことは、一歩一歩堅実に歩みを進めることであって、”踏み越す”ことではないのですね。残念ながらエレベーターはありません。ただ、1階から2階へ登れる階段があるだけです。登るのをやめればそこで止まってしまうだけです。

あるスポーツ選手団は約300人でもって組織されています。この選手たちは、基本練習を何回となく繰り返し繰り返し行って、いろいろな基本運動があたかも呼吸しているように、自然にしかし意識しなくてもできるようになるまで続けます。

そうしておくと、試合中に、敏速な行動を必要とするときにも、次にはどうすればよいかということを手を休めて思い悩むことがなくてすむからです。プログラミングを習得しょうと思えば、まず HTML と CSS の基本事項をしっかりと身につけて、それがはっきりと心に刻みつけなければなりません。

それには、ありっきたりの上っ面だけで学習してみたところで、けっしてうまくいくようなものではありません。まず根本問題から掘り下げて、研究に研究を重ねる熱意をもっていなければなりません。

プログラミング独学について、悩みや疑問がありましたらご自由にコメント欄に投稿してください。(コメント欄はこの記事の最下部です)。いただいたコメントはすべて拝見し、真剣に回答させていただきます。

コメント

何なりとお申し付けください。