定年前の大人が感じた諸外国における プログラミング教育の状況を比較して、日本は大丈夫か判断してみた

「諸外国における プログラミング教育に関する調査研究」 (文部科学省平成 26 年度・情報教育指導力向上支援事業)

「プログラミング教育に関する調査研究」 要約(概要)

http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/__icsFiles/afieldfile/2018/08/10/programming_syogaikoku_houkokusyo.pdf

教育の情報化に関して先進的な国々において、英国(イングランド)のように、プログラミング教育 を初等教育から導入するなど、あらたな情報教育を模索する動きがみられる。

調査対象として①プログラミング教育に関して先進的な取組を行っている②国際的な学習到達度調査にお いて評価が上位になっているという二つの観点から、英国(イングランド)、エストニアなど 23 の 国や地域が対象とされた。

プログラミング教育で注目されていたエストニアの現状 は、全ての小学校から高等学校において選択科目とすることを目標に、2012 年に 20 の実験校でプロ グラミング教育の導入に関するプロジェクトが実施されたが、現状では、ナショナルカリキュラムとし てではなく、学校裁量という形での実施になっている。

1.調査結果内容

世界の状況は、ナショナルカリキュラムのもと、プログラミング教育を必須化している国はありますが、普通教科として単独で実施して いる国はなく、情報教育やコンピュータサイエンスに関わる教科の中での実施されている状況。またどの国も指導員不足の解決がされていないことは概ねの共通課題とわかりました。 当然のことながら日本も直面しなければならない問題でしょう。

【私見】表にでている報告書を読む限りでは、 英国(イングランド)、 ハンガリーロシア香港韓国シンガポール中国上海イスラエルの取り組みが進んでいることは間違いない状況ですが、他国のプログラミング教育の状況であれば、日本が2020年に 小学1年生から導入し「教育者不足の課題を日本ならではの工夫で解決する」ことで十分に追い越せる状況にあるということが解り少し不安感はなくなりました。

初等教育 段階(日本の小学校に相当)では、英国(イングランド)、ハンガリー、ロシアが必修科目として実施。

前期中等教育段階(日本の中学校に相当)では、英国(イングランド)、ハンガリー、ロシア、香港が 必修科目として、韓国、シンガポールが選択科目として実施。

後期中等教育段階(日本の高等学校に相当) では、ロシア、上海、イスラエルが必修科目として、英国(イングランド)、フランス、イタリア、スウェー デン、ハンガリー、カナダ(オンタリオ州)、アルゼンチン、韓国、シンガポール、香港、台湾、インド、 南アフリカが選択科目として実施している。

国名小学校中学校高校
必修選択必修選択 必修選択
英国(イングランド)
ハンガリー
ロシア
香港
韓国
シンガポール
中国上海
イスラエル
フランス
イタリア
スウェー デン
カナダ (オンタリオ州)
アルゼンチン
台湾
インド

2.プログラミング教育を実施する主な理由

情報社会の進展の中で、21 世紀型スキルにも掲げられ ているような、論理的思考能力の育成と情報技術の活用に関する知識や技術の習得であるが、エストニ ア、韓国、シンガポールなどは、産業界からの要請による高度な ICT 人材の育成も理由としている。

多くの国で、特に初等教育段階の内容

ロボット等の実体物を動かすなど、体験的に論理的な思考力や 情報技術に関する理解を深める活動等が行われているが、プログラミング教育は単一の教科とはなって いない。

共通の課題

3.各国のプログラミング教育の取組状況

①英国(イングランド)

2013年のナショナルカリキュラム(教育の国家基準)で、 「Computing」の授業を必修化すると定められました。

従来の教科「ICT」に代わって 教科「Computing」が新設され、2014 年 9 月より実施されている。

Key Stage 1-4 の全学年で必修と定められ ているが、実際は Key Stage 4 については、GCSE(General Certificate of Secondary Education)で「Computer Science/Computing」を受験する者のみが履修しているケースが多い。

指導時数は現地ヒアリングによると、一般的にプライマリースクー ルでは 1 時間 / 週(約 30 時間 / 年)程度で、セカンダリースクールにおいては、Key Stage 3 では 1 時間 / 週(約 30 時間 / 年)程度、Key Stage 4(履修している者)では少なくとも 2 時間 / 週程度 である。

解決すべき問題点 として、

⃝プログラミング教育導入に関する議論が高まっているが、初等教育や前期中等教育レベルにコン ピュータ分野の授業を導入するには、教員のトレーニングとそのトレーナーが必要であるという 根本的な問題がある。

⃝フランスでは数学の教員の数が不足しており、現在後期中等教育(リセ)での教科「Informatique et sciences du numérique」の授業の半数は物理や技術など他教科の教員が教えている。その ためプログラミングを教えられる人材がいない。

②ハンガリー 

独立教科である「Informatika」は、① IT ツールの利用法、②アプリケーションの知識、③問題解 決のツールとテクニックとしての IT、④ 21 世紀におけるインフォコミュニケーション、⑤情報社会、 ⑥図書館情報学、の 6 つの分野にて構成され、それぞれの内容や授業数は学年により異なっている。

プログラミングに関しては特に③の「問題解決のツールとテクニックとしての IT」の授業において、 論理的思考、アルゴリズム化、基本的な一連の手続き及び制御構造を学び、実際にコンピュータプロ グラムを作成しテストする。

学年別には 1-4 年生では簡単なアルゴリズムを習得し、5-6 年生では簡単なプログラムの 実装、検証、7-8 年生ではステップバイステップの計画手順、9 年生以降では改良の原理まで学ぶ。

③ロシア

2009 年に初等教育、2010 年には中等教育にプログラミング教育が導入された。

プログラミング関連の授業を 2-11 年生で一貫して教え、必修と定めている。

初等教育においては、2009 年より(他の関連教科の一部としての)「インフォルマティカと ICT」 の中で算術演算を数字と数式にて表現し、問題を解決する能力や 簡単なアルゴリズムを構築する力を付けさせている。

また、幾何学的な図形を特定し描き、表、チャート、 グラフや図表、順序集合を用いたり、データを集計、分析し解釈する力を付けさせ、プログラミング教 育とつなげている。

中等教育におけるプログラミング教育は 2010 年より導入されており、独立教科「インフォルマティ カと ICT」の中で指導されている。

現代社会のプロフェッショナルな仕事のために必要なアルゴリズム 的思考の開発、アートやデザインのためのアルゴリズムを作成するための技能を身につけさせるとして いる。

また、アルゴリズムの値、論理的操作に関する知識、主要なプログラミング言語やアルゴリズム の構造の一つ(順次、条件分岐、繰り返し)に精通させるとされている。

なお教科書に関しては、関連する DVD 等をも含め、出版社が発行するものを国が認定し、その中 から地域・学校ごとに選択する仕組みとなっている。

④香港

教育 ICT に関連する取組には、教育内容に直接関係する「カリキュラムの開発」と、教育環 境を整備する「教育における IT(IT in Education = ITE)」という二つの柱が存在する。

一つ目の柱であるカリキュラムに関しては、中学校、高等学校ともに、「Key Learning Area(KLA)」 と呼ぶ必修教科群を制定し、その教科群を構成する1教科として「Technology Education(TE)」 (TE KLA あるいは TEKLA と表記される)を置いている。

中学校、高等学校ともに、TEKLA の枠組み 内で、プログラミング教育を含めた ICT 関連の授業を行っている。

中学校のカリキュラムにおいて、TEKLA は厳密な科目制をとっておらず、「knowledge contexts」 という科目的な位置付けとなるものを定めている。

その中の一つとして「ICT」を置き、問題解決、 タスク処理、データ操作等、プログラミングの基礎を教えている。 高等学校では、TEKLA の中の 1 科目として「ICT」を位置付け、その中の必修学習項目の一つとし て「Basic Programming Concepts」を教えている。

調査時点では、TEKLA は中学校において必修であるが、高等学校においては選択である。

2013 年 に高等学校卒業認定の科目として「ICT」を選択した者が全体の 9.7%(7,900 人)しか存在せず、「物 理」の 18.7%、「化学」の 21.2%、「生物」の 22.0% と比較して低い選択率となっている。

なお、小学校においては、プログラミングに関する内容は確認できない。しかし、教科横断の 9 つ の「Generic Skills」の一つとして、「information technology skills」が存在し、インターネット の接し方、e-Learning における学び方、統計資料の活用等を、情報機器やソフトウェアの操作方法 とともに教えている。

⑤韓国 

教科「情報」受講率推移

⃝中学「情報」…2006 年:46.8%、2008 年:41.4%、2010 年:28.6%、2012 年:8.1%

⃝高等学校「情報」…2006 年:24.1%、2008 年:23.8%、2010 年:21.7%、2012 年:5.2% ■ 教科「情報」開講率(2013 年)

大学入試、義務教育・中等教育修了試験

⃝大学入学試験としては、韓国教育課程評価院により実施される統一テスト「大学修学能力試験(修 能)」があるが、教科「情報」は受験科目に入っていない。

⃝「修能」の受験科目にない選択科目はあまり勉強さ れない傾向があり、学ぶように導く必要がある、との発言あり。「修能」にソフトウェア科目が 導入される可能性が示唆されている。

⑥シンガポール

初等教育では必修ではない。 中等教育では、普通校技術系コースで「Computer Applications」が必修教科となっている。

早くから情報通信産業を国の基幹産業と位置付け、90 年代から教育分野に IT インフラ を導入してきた。

中等教育では、普通校技術系コースの必修教科「Computer Applications」において簡単なプログラミ ングを指導している。

教育省が発表した「21 世紀に必要な能力」として、コミュニケーション、協力、情報スキルがあげられている。

⑦中国上海

大学入試、義務教育・中等教育修了試験 中国には、高中学業水平考試という試験があり、これは中国の高等学校生である普通高級中学生(高 中生)が卒業までに必ず合格しなければならない学力測定テストである。

中国の国家教育委員会(現 在の教育部)の 1990 年8月の通知によると、高中学業水平考試に合格することにより高中の卒業 証書を取得することができると明記されている。

高中学業水平考試のテスト科目は、国語、数学、思想政治、歴史、英語、情報技術などの 13 科 目で、試験は一般的に年2回である。

上海市の一部の高級職業学校(高職: 大学専科に相当)では、入学試験のかわりに使われている。

⑧イスラエル

1970 年代半ばからコンピュータ教育の必要性を認識し、教育省の専門委員会が 「Computing」カリキュラムを開発し、高等学校でのコンピュータリテラシー教育や BASIC 言語など によるプログラミング教育が始まった。

「Computing」はその後「Computer Science(CS)」と呼ばれるようになり、独立した教科とし て認識される。

1990 年に教育省は The Open University of Israel のジュディス・ガル=エゼル教 授(Prof. Judith Gal-Ezer)ら、数学、CS 専門の研究者による新しい専門委員会を組織し、新しい カリキュラムの開発に取りかかった。

ジュディス・ガル=エゼル教授は 1995 年の共同論文 “A High-School Program in Computer Science” の中で、『「Computer Science (CS)」は独立した教科として、高等学校教育レベル(10-12 年生)で生物、物理、化学など、他の科学の教科と同等に教えられるべきである』『プログラミング 言語だけでなく、アルゴリズムの原理やプログラミングによる実装を教えるべきである』と提言した。

教育省は 1991 年から段階的に「アルゴリズム的思考を開発し、アルゴリズムをプログラミングで実 装する」という新カリキュラムを高等学校に導入したが、この 新カリキュラムは世界で最も厳格なものであると言われている。

CS プログラムは、1 ユニット 90 時間で構成されており、短期かつ基礎的な1ユニット版(90 時間)、 中級レベルの 3 ユニット版(270 時間)、大学進学用の 5 ユニット版(450 時間)から選択できる。

「Fundamentals 1」は 10 年生、「Fundamentals 2」は 11 年生の必修科目になっている。指導さ れるプログラミング言語は論理プログラミング、アセンブリ言語などである。

指導者は大学で CS 学士号を取得し、教育省による教員免許が必要である。教育省が 2000 年に国 立コンピュータサイエンス教員センターを設立し、専任指導者の養成に取り組んでいる。

⑨フランス

アルゴリズムとプログラミング教育は行われているが、現在のところリセ一般コースと技術コースの第 2 学年(15 歳)、第 1 学年(16 歳)、最終学年(17 歳)に限られている。

独立の教科ではなく、教科「数 学」の一部として、数学教員が教えている。学校の種類や選択するコースによっては必修になっているが、国としてこれ らのソフトウェア、プログラミング言語の使用を課しているわけではない。

⃝プログラミング教育導入に関する議論が高まっているが、初等教育や前期中等教育レベルにコン ピュータ分野の授業を導入するには、教員のトレーニングとそのトレーナーが必要であるという 根本的な問題がある。

⃝フランスでは数学の教員の数が不足しており、現在後期中等教育(リセ)での教科「Informatique et sciences du numérique」の授業の半数は物理や技術など他教科の教員が教えている。その ためプログラミングを教えられる人材がいない。

⑩イタリア

コンピュータサイエンスの基本的な概念を理解 することは、これからの世代が生きていく上で不可欠であるとの考えがある。そのため 2014 年 9 月より、 初等教育(小学校)からコーディングを導入する Programma il Futuro というプロジェクトを開始した。

プロジェクト開始から 3 か月余りで全国の公立小学校の 1 割強に あたる 1,982 の公立校が参加したが、参加については学校や教員の任意である。

中等教育でのコンピュータサイエンスの位置付けは学校種によって異なり、コンピュータサイエンスが 独立教科であったり、数学の授業の中で教えられたり、学校や専攻の種別により必修か否かは異 なり、授業時間数などもばらつきがある。

コンピュータサイエンスは、普通高校及び科学高校では、1-2 年生の数学の授業の一環として教えられ ている。

技術高校 1-2 年生、同校ビ ジネス情報システム専攻 3-5 年生、同校国際マーケティング専攻 3-4 年生、同校経営・財務・マーケティ ング専攻 3-4 年生での教科となっている。

科学高校の Applied Science コースでは、1-5 年生の教科「Informatica」となっている。 教科「Informatica」の授業が行われている。

使用言語は SQL、C、HTML、PHP となっている。 後期中等教育で教科「Informatica」の授業が行われている学校での指導時数は、週 2 時間程度が多く、 技術高校でビジネス情報システムを専攻している学生は週に 4-5 時間と多くなっている。また、科学高 校の Applied Science コースでは全学年で年間 66 時間となっている。

⑪スウェーデン

義務教育(基礎学校 9 年間)では ICT は他の教科の学習用のツールとして教え られているが、プログラミング教育は導入されていない。

2011 年 7 月施行の「スウェーデン新教育 法 2011」の下に、教育庁による大規模な学校制度改革が行われ、上級中等学校では新しいカリキュ ラムによる 18 のナショナルコースが導入された。

9つの大学進学準備コースと 9 つの職業訓練専門 コースがあり、職業訓練専門コース「Technology」の中で教科「Programming」が指導されている。

指導時数は、高等学校ではカリキュラムによって異なる。教育研究省によると各教科は年間 50 ま たは 100 credits で構成されており、1 credit は指導時数 1 時間に相当する。

指導者の養成・教育については、政府は「PIM」や「ICT for Teachers」などのオンラインプログ ラムを導入して、力を入れている。

⑫ カナダ

教育省の指導に沿った教育制度を各州が制定している。オンタリオ州においては 1-12 年生までの 12 年間を義務教育期間とし、「The Ontario Curriculum」の中で教科「Computer Studies」を 10-12 年生に教えるよう定めている。

教科「Computer Studies」は選択科目である。必修 18 単位は共通取得 15 単位と選択 3 単位か ら成り、選択 3 単位は 3 つのグループから構成される。

教科「Computer Studies」は、そのグルー プの一つである。同一グループ内にフランス語、科学、技術教育等が存在する。

教科「Computer Studies」の内容として、10 年生には「コンピュータ学習入門」として基本的 なプログラミングの概念を教え、簡単なコンピュータプログラムを設計し記述できるようにする。

11 年生及び 12 年生は、大学準備と、より実学に近いカレッジ準備にコースが分かれる。

大学準備コース では、「コンピュータサイエンス」を業界の標準的なプログラミングツールを使用して学ばせ、コン ピュータサイエンスの知識と技能を深めさせる。

カレッジ準備コースでは「コンピュータプログラミ ング」を学ばせる。12 年生ではオブジェクト指向を学ばせる。

初等教育向けのプログラミング教育に関しては、米国発の子供向けプログラミング普及活動である 「Hour of Code」が課外授業として進出中である。

「Canada Learners Coding」や「KIDS LEARNING CODE」等の団体が、6-17 歳向けに放課後や学校休暇中にワークショップ、キャンプ等を実施し、 Scratch を用いたプログラミングを教えている。

⑬アルゼンチン

義務教育は 5-17 歳の 13 年間である。初等教育ではプログラミング教育は行われていない。

中等教 育では教育省の国立教育技術研究所(INET:Instituto Nacional de Educación Tecnólogica)が技術・ 職業訓練の専門教育課程を設け、カリキュラムを作成し、教科「Computing」「Programming」の指 導を推奨している。

2010 年 4 月、故キルチネル前大統領は中等教育を対象にした Conectar Lgualdad というネット ブックプロジェクトを立ち上げ、教育省が公立中学校、特別支援学校、教員養成機関の全生徒、全教 員にノート PC を一人 1 台無料配布することにより、中等教育に ICT 環境を導入し、プログラム「ICT スキル」の中でプログラミング教育を行っている。

2006 年に故キルチネル前大統領は政府が教育制度を管理する法律「教育基本法」を制定し、教員 の養成・研修を強化する方針を打ち出し、2007 年 4 月に国立の教員養成研究所を設立したが、指導 時数不足や教員の質の低下などの問題は解決されていない。

⑭台湾

全国小・中学校向けのカリキュラムガイダンス「国民中小学九年一貫課程綱要」が日本の文部科学省 に相当する台湾教育部より 2003 年に公布され、2008 年に改定された新カリキュラムが 2011 年度か ら実施されている。

小・中学校ともに、情報教育に関する教科「情報」は、学習領域「自然と生活の科学技術」に含まれ ていて、独立した教科として定められているが、必修科目ではなく、各学校の裁量で実施されている。

カリキュラムに掲げられた内容はあくまでもガイダンスで強制力はない。 小学校 3 年生から中学校 3 年生までの一貫カリキュラムでは、各段階で習得すべき基本能力及び基本 能力を測る指標が設定されていて、情報モラルに関する教育に重点が置かれている。

⑮インド

初等教育での 3-8 年生では、デジタルリテラシーやプログラミングを学習する内容になっている。

プログラミングに関する内容は教材全体の 3 割弱を占めている。デジタルリテラシーでは、コン ピュータの基礎(主にコンピュータとその周辺デバイスの役割と機能)、インターネット、セキュリ ティに加え、Microsoft Word、Microsoft Excel、Microsoft PowerPoint といったアプリケーショ ンを使ってデジタルコンテンツを作成する。

プログラミングでは、3-5 年生では LOGO を用いた図 形作成、6-7 年生では QBasic を用いて簡単な数値計算結果を画面に表示(構文、関係演算、算術 演算、論理演算などを使う)、8 年生では HTML を用いた Web コンテンツ作成、Visual Basic を用 いて四則演算を行う簡単な計算機アプリケーションを作成するといった内容になっている。

中等教育では、9-10 年生に初等教育で学んだ内容をより深く学ぶ。例えば Microsoft Excel で は計算結果からチャートを作成する。

プログラミング言語は C++ を用い、データ型、ループ文な ど基本的な記述方法を学んで簡単なプログラムの作成を行う。

11-12 年生向けの教材では、C++ でのプログラミングを詳細に説明している。

プログラミング教育が想定外の国々

①アメリカ

カリフォルニア州は ” シリコンバレー ” に代表される IT 産業の拠点が存在するにもかかわらず、高 等教育においてコンピュータサイエンス分野を専攻する学生が少ないことが指摘されており、コンピ ュータサイエンス教育を初等・中等教育に取り入れようとする草の根運動が報告されている。

2014 年 4 月にはカリフォルニア州議会にてコンピュータサイエンスを義務教育に取り入れる案の検討がな 110 された。今後、コンピュータサイエンス教育が導入された場合、その学習項目の一つとしてプログラ ミング教育が行われる可能性がある。

カリフォルニア州政府としてプログラミング教育は未導入である。プログラミング教育は学校裁量で 実施されているため、プログラミング教育導入の背景をまとめるに足る情報は得られなかった。

一方で、 プログラミング教育に関連して、カリフォルニア州政府としてコンピュータサイエンス教育の導入を目 指す動きがある。

大学のコンピュータサイエンス専攻への進学者が全米平均と比べて少ない、コンピュ ータサイエンスのコースが必修でない、コンピュータサイエンスを教える指導者のための資格がない、 といった背景を受け、幼稚園から高等学校卒業までのいわゆる K-12 教育においてコンピュータサイエ ンス教育を州のカリキュラムに導入しようという取組である。

この動きは、コンピュータサイエンスの (特に大学の)指導者が主導している。

備考 NPO の Code.org (https://code.org/)によると、全米のハイスクールの 10% がプログラミ ング教育のコースを提供している。 米国の各地では、コンピュータサイエンスをハイスクール卒業要件科目に取り込む動きがある。

最近の例ではイリノイ州シカゴの公立学校制度である。 カリフォルニア州教育局が規定する科目「数学(Mathematics)」のフレームワークに、「問題 解決スキル等の拡張にコンピュータ言語等を利用する」のが好ましいとあるが、プログラミング教 育をするようにとは定められていない。

同様に、ハイスクールで「コンピュータプログラミングの スキルは数学と同じ論理学に基づいており、数学的なコンピュータプログラムのコースを設けるの が望ましい」とあるが、どのプログラミング言語を使用するか、どのようなレベルを目指すかにつ いては規定されていない。

②ドイツ

解決すべき問題点 [DE03] ニュース週刊誌『Der Spiegel』のプログラミング教育に関する記事に以下のように記されている。

■最も大きな課題は、何が基本的な IT 教育であるのか、といった基礎概念が IT 教育者の間で定まっ ていないことである。Windows の Office をベースにすることを望むもの、プログラミングに集 中すべきとするもの、プログラミングを完全に拒否するもの、Office とプログラミング両方を教 えるべきとするものなど様々な考えがある。

■ IT 教育者が高く評価されず、授業だけでなく IT 機器のメンテナンスまで責任を負うため時間外 労働を強いられることになっている。

③フィンランド

プログラミングを 2016 年から義務教育に含めることが決定しており、この導 入計画に関するガイドブックは “Koodi2016” と呼ばれている。

“Koodi2016” によると、プログラミ ングは 1-9 年生の算数・数学のカリキュラムの一部として導入される予定である。

1-2 年生では、コ ンピュータに正確な指示を送ることが重要だということを習得するために、遊びを通して他の学習者 たちに明確な指示を与える練習をする。

3-6 年生では、Scratch などのビジュアルプログラミングを 使用する。7-9 年生では、プログラミング言語を学び始める。 プログラミングに関する記述は、現行の基礎教育のナショナルカリキュラム内では確認できない。

2016 年秋より基礎学校においてプログラミングが算数・数学の一部として扱われる予定である。

フィンランドでは、一般的に教員には学級担任と教科担任の 2 種類があり、どちらの教員も修士 課程を修めている。免許制ではなく、修士号の取得により教員の適格性が証明されている。

1-6 年 生は学級担任制で 7-9 年生は教科担任制である。2016 年以降のプログラミングの授業に関しては、 1-6 年生に対しては学級担任が教え、7-9 年生に対しては数学の教員が教えるとしている。

④エストニア

現在、プログラミング 教育の導入・実施については学校及び指導者の判断に委ねられている。

なお、Tiger Leap Foundation は 2013 年に HITSA(Hariduse Infotehnoloogia Sihtasutus)に統合され、”ProgeTiiger” プログラ ムは現在 HITSA が引き継いで活動している。

現地ヒアリングによると、プログラミング教育を実施しているベーシックスクールの一部では、選択教 科である

「Informatics(Informaatika)」の中でプログラミングが扱われており、ロボットプログラムや ゲームプログラムを用いて、プログラミングに興味を持たせる活動に重点を置いている学校が多いとい う。

また、一部のアッパーセカンダリースクールでは、Scratch、Python、Java などを用いてプログラ ミングを学ぶ授業が独立科目(選択科目)として設置されているという。

指導時数は学校によって異なり、指導者についてはプログラミング教育の専任教員がいる場合と、 数学など他教科の教員がプログラミングを教える場合がある。

特にロボットプログラミングに関して は、教員の他、大学生や保護者、企業などのボランティアが指導することもある。

エストニアの IT 政策についての補足

⃝「[1991 年、ソ連からの:引用者注]独立後、政府は IT とバイオテクノロジーに資本を集中し ていくことを決定し、国民もそれを支持した。幸いにも、この政策は今日まで一貫していて、 エストニアの成功の大きな要因になった。もうひとつの成功の要因としてソ連時代の旧システ ムに対する執着がないため、最新のシステムを導入することに対して既存のシステム運用者側 からの抵抗はほとんどなかったこともあげられる」

⃝「独立当初は、道路などの生活基盤や学校などの公共建築物もかなり整備が必要であった。し かし、インターネットの利用環境の整備に力を注ぎ、学校などでは、屋根の修理よりもパソコ ンの導入を優先したとさえいわれている」

⃝なお、「Skype Technologies 社はエストニアで創業された企業で、本社はルクセンブルクに おいているが、開発拠点はエストニアの首都タリンにある 」(同社は 2011 年にマイクロソフ ト社に買収され、現在は子会社となっている)

大人からのブログ記事の書き方とSEO対策の概略

先ずは、ブログ記事の大きなテーマをブログランキングなどを参考にして選択し、そのテーマに対する検索キーワードを検索エンジンで選び、その結果に対して自分のもつ知識、意見を書き込んで2000文字以上の記事にすることを毎日すくなくても1記事以上変えれば、稼げる可能性はたかくなりそうです。

1.大きなテーマを考える

①社会・経済・金融・不動産・レジャー

  • 社会
    • ふるさと納税
    • エンディングノート
    • 習い事
    • ビジネスマナー
    • コピーライティン
    • コーチング
    • マーケティング
    • プレゼン
    • 資格スキルアップ
    • フリーペーパー
    • 探偵・調査
  • 経済・金融
    • 投資 ・ 特許・知的財産・ クレジットカード
    • リストラ ・海外就職
    • 起業・独立・ 就職・ 転職
    • 不労所得
    • 保険・貯蓄・ 債務
  • 不動産
    • マイホーム
    • 賃貸住宅
    • 住宅ローン
    • シェアハウス
    • 購入か賃貸か
    • トランクルーム
    • 防犯
    • 遺言
    • エンディングノート
  • 家電インテリア他
    • インターネット
    • コンピュータ
    • パソコン スマホ
    • 携帯
    • ウェアラブルデバイス
    • インテリア
    • 家事代行
    • 害獣駆除
    • 家電機器

②季節で検索される内容

  • 受験
  • 教育問題
  • 生涯学習
  • インバウンド ゲストハウス
  • スーパー銭湯
  • バリアフリー
  • 日帰り旅行
  • 民泊
  • Airbnb 旅動画
  • 聖地巡礼  

③少し先にある出来事

  • お祭り
  • 野球 ・サッカー・ラグビー・バレーボール・ゴルフ
  • 格闘技
  • フィギュアスケート
  • ボディビル
  • 芸能・音楽 ・映画・ ダンス・ 演劇・ミュージカル ・お笑い

④美、食、健康

  • 健康と医療
  • ダイエット・フィットネス
  • 食べ歩き・デザート・ドリンク レストラン
  • 移動販売
  • スキンケア ヘアケア・コスメ ネイルケア・アート ボディケア・アロマテラピー・アンチエイジング・エイジングケア エステ・スパ オーラルケア・ 美容外科・美容整体・美容皮膚科・ メイクアップアーティスト ・女子力アップ・脱毛・手作り化粧品 ・整形・プチ整形 メンズ

⑤蒐集・ペット・マニア

  • 街・建物・空・雲・ 植物・ 星・自然・夜景・花火・ 航空写真
  • イラスト ・デザイン・アート 資料館・博物館  華道 書道 茶道 美術館・ギャラリー
  • 動物の健康 ・ペットロス・ 飛行機・モータースポーツ 免許

⑥アウトドア、ガーデニング、ゲーム他

  • 観葉植物・ 市民農園・園芸店
  • 自転車 釣り・フィッシング 登山・キャンプ ・アウトドアファッション・アウトドア料理
  • リアル脱出ゲーム
  • PCゲーム・スマホ・携帯ゲーム・家庭用ゲーム機  

2.そのキーワードに関連するワードを選択

主な項目の分け方は人・物・金・時・情報で分けて考えば大体記事ネタはでてきます

今回は、金融を例にして考えるてみます。

①金融で稼いでいる人物②売れ筋の金商品は③金融で稼げるタイミングは④安全な金融資産は

のような4つの項目で分けて考えて4つの項目に各々300文字書くと1200文字となります。

各々の項目に対してネット検索し自分の経験を考慮て書き出すと社会人10年以上の方ならまとめられる」のではないでしょうか

3.テーマで必要なキーワードを選択する

次に金融に関する関連キーワードを①②③④別に各々検索して選択します。

先ず①金融 人物で検索すると「NISA 年金不安」

②の 売れ筋の金商品 では「金融商品の種類 リスク 選び方」

③ 金融商品の具体的なリスク対策は

④ 安全な金融資産では「 安全性 流動性 収益性 」

というようなキーワードが選択できます。

4.実際に項目別に書いていきます

①金融とNISA、年金不安について

手堅くいくなら「NISA」「iDECO」が無難といえそう。

95歳まで生きるには夫婦で2千万円の蓄えが必要とした金融庁金融審議会の報告書が問題になりましたが、大手保険会社では「資産形成を助ける商品の営業をする上で、話を向けやすくなったのは事実」らしく、相談に来る人も少なくないという。

特に低金利環境が続き、預金では十分な資産形成が望めない中、投資初心者でも始めやすい「少額投資非課税制度(NISA、ニーサ)」や個人型確定拠出年金「iDeCo(イデコ)」は、今後も利用者の増加が見込まれている。

この商品のポイントは、運用益に税金がかからないことで、「NISA「」は2018年12月末時点で1246万口座に達し、「iDeCo「」も2019年4月末で加入者が123万人と、いずれも増加傾向が続いている。< 産経新聞 2019.6.17 の記事参照>

② 金融商品の種類の選び方については

4種類のリスクに対して考慮する必要があります。

価格変動リスクは、市場の変動によって損が出る可能性

為替変動リスクは、外国為替相場の変動によって損が出る可能性

信用リスクは、預金先の金融機関や社債・株式等の発行体である企業の経営悪化・破綻によって損をする可能性

流動リスクは 、必要なときにすぐに換金・売却できない可能性

③金融商品の具体的なリスク対策とは

個人投資家のリスク対策としては、「分散投資」が基本的な考え方で投資する金融商品や時間(タイミング)を分けることがリスクを最小限に抑えようとする考え方です。

つまり1つの金融商品に限定せずに納得できる複数の金融商品にバランス良く時間をかけて投資することが基本となります。その際、特徴の異なる複数の金融商品や通貨(地域)を組み合わせること、投資のタイミングを分けること がポイントといえます。

④ 安全な金融資産とは

※金融庁HPより引用 http://www.fsa.go.jp/policy/payoff/
  • 安全性:「定期預金」>「投資信託」
  • 収益性:「定期預金」<「投資信託」
  • 収益性:「債券」>「普通預金」
  • 流動性:「債券」<「普通預金」

の関係にあり、流動性と安全性は併存できる関係にあります。

たとえば、「普通預金」はこの2つの面で優れた商品です。普通預金は、元本保証があり、預金保険の対象商品。しかも、いつでも引き出せます。つまり、安全性が高く、流動性も高い金融商品ですが、収益性は投資信託に劣るということが言えます。

5.結論を書く

全てを兼ね備えた商品はないのが実情で、超低金利の中では、やはり 運用益に税金もかからず専門的知識の必要のない「NISA」「iDeCo」に注目する必要がありそうです。

インターネットやプログラミングで稼ぐ3つの型を紹介

1.稼ぐ方法の代表的パターンのアフィリエイト型とアドセンス型、及び起業型

1)代表的なアフィリエイト型

報酬発生までの難易度は高いが報酬単価が高いのが特徴。その収益化の方法は、個人や企業が広告主の商品やサービスを自分が運営しているメディアで紹介し、そのメディアから商品の購入やサービスの利用がされると広告主から成果報酬を受け取るサービスやその運営事業者のことを「アフィリエイトサービスプロバイダ」(ASP:Affiliate Service Provider)と呼ばれます。 A8.netは日本で1番メディア会員、広告主の数が多いアフィリエイトASPサービスでは様々なジャンルのアフィリエイト広告を取り扱っており、サイトやブログさえあれば無料でアフィリエイトを始める事ができます。

成果報酬型アフィリエイト

  自分のメディアのバナーから商品が購入されたり、無料会員サービスに登録されたりすることで得られた、成果によって報酬がもらえる方式です。

情報商材アフィレイエイト

1件あたりの単価が非常に高いのが特徴で、インフォトップ(infotop)やインフォカート(infocart)を通して、情報商材を紹介して稼ぐアフィリエイト方式です。

ネットビジネス系の商材以外にもダイエット商材など多くの電子書籍があるので、自分のブログに合ったものがあれば導入しやすい。

2)代表的なGoogleアドセンス型

ポイントは、 ブログ・メルマガ・無料レポートの併用や 自分の個人情報「氏名と住所」の公開が必要な点(特定電子メール法遵守要)

Googleが承認した後に提供されるサイト運営者向けの広告配信サービスです。 クリックしてもらうだけで報酬が発生するので難易度は低いが1クリックでの報酬単価は安い(目安20~ 30円前後/クリック)。広告掲載方法はGoogle AdSenseから提供される「広告コード」を自分のサイトのHTMLソースコードに挿入するだけです。例えば、野球のニュース記事を掲載しているサイトに広告コードを挿入すると、野球グッズやスポーツ用品の広告が自動的に表示されます。最近では訪問者の興味や関心と連動する広告を配信するしくみも導入されています。例えば過去にどこかのサイトで旅行関連記事を読んでいた人であれば、自分のサイトとは関連のない旅行キャンペーンの広告が表示され、訪問者が興味をもちそうな広告(知りたいと感じるであろう情報)を、Google AdSenseが自動的に配信するものです。

トレンドアフィリエイト 

話題の芸能ネタなどのキーワードが全て。「すぐに取り上げているブロガー」は少ないので、アクセスを独占して手に入れやすく、アクセスを集めやすしですが、長期的なアクセスは期待できません。

クリック保証型アフィリエイト

ブログに掲載したバナーのクリック数によって報酬がもらえる方式です、Googleアドセンスが最も代表的です。

Youtubeアフィリエイト

Youtubeアフィリエイトは「動画」を投稿することで、報酬を生み出す方式。

④特化型ブログアフィレイト

パソコン ・iPhone ・ 旅行・化粧品 ・育児・コンビニスイーツ・アウトドア・釣り・化粧品・筋トレ・介護・メガネ など 1つのテーマに特化した”専門的”(辞書のような)ブログを作るイメージでトータル300記事が目安に設計されたブログ。

3) 起業型

①有料広告先行型

PPCアフィリエイト Googleなどに 有料の広告 料金を支払って、アクセスを集め、ウェブ広告から「ブログ内の広告」に誘導させて稼ぐアフィリエイト手法で 常に広告費用を上回る成果を出し続けなくてはいけません。 成果率の高いランディングページが必要になるので中級者以上じゃないと厳しい手法ですが、1日目から収益を出すことができる点はが魅力です。

②非有料広告型

記事数300本以上からなる自己ブログのSEO対策での上位検索はもちろん、ユーチューブ動画チャンネル登録やTwitter,FaceBook,インスタグラム、メルマガによる拡散媒体を併用する方法。ブログでは1記事あたりの文字数も3000文字が目安となる驚異的なテキストを導入する稼ぐ教科書的な基本戦術とキーワード選択の戦略を組み合わせる目指すべきネットの王道。

大人がプログラミングを定年前に独学する方法

1.プログラミング独学の方法や流れ

参考になる本でザット全体像を把握する為に、プログラミングの基本となるHTML、Css、Javascript、PHPの本を購入し読んでみて実際にコードを書き、WordpPressでブログ記事を書きながら収益するための本も読んでみる。

1)参考になる本をご紹介

①「いちばんやさしいJavascriptの教本」

どんな本を手に取るかですが、先ず何も周囲に詳しい人がいない場合には、取り合えず「いちばんやさしいJavascriptの教本」が入りやすいですし、実によく書けています。

ただし、プログラムは書かないと「全く身につかない」が結論で、独学で理解しようとしないほうが時間的にはロスしません。

私の場合も、始める前は少し舐めていました。自分ではかなり高度なエクセル分析や、パワーポイントでのプレゼンなんかも苦労なく扱えますし、VBAマクロで自動化プログラムもできなくもなかったからです。

今まで全て独学で、かなりのレベルまではできてきましたので、何とかなるだろうと甘く考えていましたが、没頭する時間を持たずに読本だけで理解すのは、時間的にロスが大きかったと今は思います。

理由は、結局プログラムは没頭する時間を作って手を動かして書かないと身につかないと解ったからです。

読本は、無駄ではありません。自分の備忘録として後で読めますし、実にうまく書かれているともプログラミングができるようになってから後で感心します。

②HTML & CSS & Javascript 辞典

この本も手元にあると安心できます。また全てサンプルコードもネットでも閲覧できるようになっていてお得感があります。

先ずどうしても全体を眺めてからの場合にはお勧めです。同じことを書きますが、プログラムを書けるようになって初めて本は便利さを感じます。

やってはいけない事は、本を順番に理解しようと意気込んで途中で止めてしまうことです。あくまでプログラムを書きなが動いた喜びを感じながらでないと続かなくなります。

プログラムは、言語ですので使いながらでないと身につかないわけです。受験英語を6年しても会話ができないのと同じと考えて貰えばよいと思います。単品の単語を覚えるのでなく、単語を使って自分の頭と会話しながら覚えるのが一番身に付きます。

プログラミングは単語と単語をつなげて、センテンスになりセンテンスとセンテンスをつなげて初めてプログラミングなので、1つづつのコードや関数を理解してもあまり意味がないわけです。

③いちばん稼ぎやすい簡単なブログ副業

トレンドアフィリについて全体の流れが書かれています。これもプログラミングが書けるようになってから参考になります。

端的に内容は「キーワードの選択」つまりSEO対策が大事だということや記事を外注化させることやグーグルアドセンスの広告コードを張り付けて収益化するなど全体的な内容が書かれていて、こんな形で収益化までするのかということがわかります。

④PHP しっかり入門教室<小原隆義著>

HTML、 CSS 、Javascriptが1つのセットですが、他に初めによく聞くプログラミング言語は、PHPやRubyやC#ですが、WordPressはPHPで書かれているのでお勧めします。

PHPが書けるとRubyもすんなり理解できます。例えていうならPHPは関東弁でRubyは関西弁みたいな感じですので、少し書き方が違いますが、ほぼ同じです。

つまりPHPを理解すれば他にも応用が利き、かつ、wordpressの編集もできるので理解する手間と応用力の時間的コスパが優れています。

2)WordPressでブログ記事を書く方法

定年前になると色々な体験をしているのでそのあたりの内容を1記事3000~4000文字を目安に書き、まずは30記事を目指すことになります。毎日1記事書き1か月継続することが大事ですね。

①WordpPressで記事を書くまでの概要

一般的な無料ブログサービスとは違い、申し込みするだけではWordPressは利用できません。

ブログを開設するには、WordpPressのようなCMS(content management system)と呼ばれるWebコンテンツを構築・管理するためのシステムをサーバーにインストールする必要があります 。

無料ブログとは少し違い、ここが少しハードルが高いかもしれないですが、無料ブログの場合には収益化すること禁止している場合やそのサービスが終了すれば書いていた記事を大移動させるリスクがあるので、ここは頑張りどころです。

先ずは、Webサーバーと独自ドメインを用意するところから始まりますが、詳細の手続き内容は別途の記事とします。

②さくらサーバーと契約する

さくらサーバーの一番良い点は、サイトを公開する前に、同じサーバー環境で修正などを行える、ステージング機能が 無料で提供されている点です。

WordPress などの CMS を使用している場合、サイトのデザインである「テーマ」などを変更する場合、それを公開する前に細かくチェックすることができるところは非常にお勧めです。

機能面では、有名なXサーバーやmixhostのほうが利点もありますが、WordPressで記事を集積してきたブログやビジネスをしているサイトのテーマ(外観)を変更する場合に、全く別に修正確認ができるさくらサーバーが安心で利点があります。

③独自ドメインを取得しブログを開設する

自分専用のアドレスを持つほうが信用力もあり良いことは間違いないのでお勧めします。 一般的に「co.jp」、「ne.jp」などは割高で、「com」や「net」は安価に取得できます。

検索エンジンによる評価も、自分のコンテンツのみが対象となります。自分の思うようなサイトを運営できるのが独自ドメインのメリット です。

3)Web上でプログラミングを学ぶ

プログラミングの独自学習には2種類あります。学習スクールに出向くか、パソコンでWeb上で学ぶかです。

費用面では、一般的には学習塾のスクールに通うほうが高く、Web学習(私の場合で約24万円:8万円/月)の2~3倍の費用がかかりますし、学習時間も昼間中心ですので、働きながらとなるとWeb学習がお勧めです。

Web学習の導入に入る前には、プログラミングを無料でイメージできる 「ドットインストール 」「Progate」がお勧めですが、そのまま独学でオリジナルサイトが作れる方は恐らく稀です。

目的がオリジナルサイトをつくるのであれば、途中で挫折しない為にも、 メンター(プログラミングで行き詰まったところにアドバイスしてくれる先生)が整備されているTeckAcademyなどをお勧めします。

TeckAcademy で私は2019年3月から5月の3か月学びました。その3か月間で自分の想定したオリジナルサイトは何とか作り卒業できました。作成サイトはこちらです⇒

学習方法は、3か月の間に10回の課題提出をクリアーしていきます。原則、各段階を順番にクリアーすればオリジナルサイト作成のスキルは身に付くようにプログラムされていました。

特徴としては、個別に選任のメンターが担当してもらえます。Web面談は2回/週あり、1回30分ですが、事前に質問はを投げておくことができます。

またWeb面談以外でも質問コーナーに質問を投げておくと選任でない他の多くのメンター以外の方からアドバイスが受けられる仕組みです。完全な解決策ではなくあくまでもアドバイスをくれます。

今思えば、挫折される方の多くは、相談する方がおらず時間だけが経過するなかで他の仕事、用事が重なり前に進む気力がなくなることだろうと感じます。

この解決策がメンター制度ですので、メンターがいる場合には逆に可能なかぎり自分で課題を乗り越えたほうが色々な気づきを得て学習は最大化します。メンターに全て解決策を依存していたのでは、最後で理解できていないことになります。

そういう意味では、2回/週のメンター面談は良い間隔でした。良い間隔というのは余裕があるという意味でなくプレシャーを感じながら没頭する時間を強制的にもち自分を追い込めるという間隔です。

私の場合には毎朝2時間、休日の2日間は8時間/日で週に18時間をプログラミングが学習に取り組みましたが実に色々なことに気付けます。気づくのは一瞬です。動かなくなるからです。

初歩の初歩で言えば、タグ<>の片方がないことや、()が抜けたや;が抜けている、var宣言をしていない、スペルが違うなど、ほとんどの失敗を経験し、プログラムが動かず「何故、何故、何故」と繰り返す日々を3か月頑張るだけで何とかクリアーできます。

3か月といっても約200時間ですので、新しいスキルを習得するには結構短時間で済むと思います。しかも世界中とつながるインターネットへオリジナルのサイトを公開できるスキルが、たったの200時間で獲得できるわけですから学んで損はないはずです。

大人(定年前)からのプログラミング(初歩)TECHACADEMY3か月での学習成果③(JAVASCRIPT編2)

2.続編【Javascript 】プログラムのポイント説明

2-21.

2-22.

2-23.

地図の貼り付け先をプログラムする

$('#map_canvas').css({//CSSにより設定する
          "width" : "100%",
          "height" : "500px"
          });	
$(‘#map_canvas’)

HTML文の id=’#map_canvas’ の場所を指定し

.css({ “width” : “100%”, “height” : “500px” });

CSSプログラムで、地図を width(幅)画面100%でheight(高さ)500px に設定

2-24.

メソッドを組み込みだ(入り子)にしたプログラミング

indexOf()メソッドは、文字列内の指定された値の最初の出現位置を返します。

	var str_MapData = s.substr( s.indexOf("]")+1 );

(indexOf(“]”)+1)は 変数として考え、”]” の文字が最初に出現した位置に+1した数字(0番があるので+1しています)を計算し、その数字をs.substr()に使う。

s.substr( 開始位置, 文字数 )

文字列に対して「substr()」を実行し、引数に「開始位置」「文字数」を設定することで切り出しができます。

「文字数」は省略することが可能で、その場合は開始位置から末尾までが選択されます

2-25.

Google Maps API(アプリケーションプログラミングインタフェース 【API:Application Programming Interface】 )

APIにより、Google社が提供するGoogleマップを、 AndroidやiOS向けアプリやWebサービスに使用でき、今回このプログラムにも使っています。コードは定型ですが、場所とセンター位置をきめることで設定できます。複数の地図やマークの種類、コメントなども指定できます。

Googleマップの有料化について

GoogleマップのAPIが2018年7月16日から有料となり、APIキー取得が必須となりました。

料金に関してですが、1か月間の使用量が200ドル分までなら請求されずに無料です。

加算内容は、マップの形式や表示回数によって料金が加算されていく従量制になっています。

月度での無料の目安は、会社概要ページなどで単に場所を表示させるような静的マップの読み込みで100,000回、物件や周辺地域の様子を表示させる動的マップの読み込みなら28,500回までとなっています。

Google曰く『ほとんどのお客様は、1 か月の使用量が無料範囲(200 ドル)を超えることはありません。』としていて、個人のウェブサイトや中小企業のウェブサイトなら、有料になることはほぼ無いとの回答です。

今回の有料化で大きく影響を受けるのはトラフィックの多い大企業やマップを使用したウェブサイトやアプリが対象となるようです。

HTML739 Link先

Googleマップ の定型の全コード(Jvascript)

HTML文には、Google マップAPIのkey(このプログラムでgoogleで指定されたkeyの桁数は39桁でした)を事前に取得し記載する必要があります。

HTML文739行目に記載した***~***が39桁ありました。

  <script src="//maps.google.com/maps/api/js?key=
***************************************&callback=initMap"></script>	  
 var latlng = []; //緯度経度の値をセット
    var marker = []; //マーカーの位置情報をセット
    var myLatLng; //地図の中心点をセット用
    var geocoder;
    geocoder = new google.maps.Geocoder();

    var map = new google.maps.Map(document.getElementById('map_canvas'));
//地図を作成する

    geo(aftergeo);

    function geo(callback){
        $("#map_canvas").get("");
        var cRef = addresses.length;
        for (var i = 0; i < addresses.length; i++) {        	
             (function (i) { 
                geocoder.geocode({'address': addresses[i]}, 
                    function(results, status) { // 結果
                        if (status === 
             google.maps.GeocoderStatus.OK) { 
               // ステータスがOKの場合
                            
            latlng[i]=results[0].geometry.location;
               // マーカーを立てる位置をセット
            marker[i] = new google.maps.Marker({
                    position: results[0].geometry.location, 
               // マーカーを立てる位置を指定
            map: map 
               // マーカーを立てる地図を指定
                            });
         } else { // 失敗した場合
         }//if文の終了。ifは文なので;はいらない
          if (--cRef <= 0) {	
            callback();
               //全て取得できたらaftergeo実行                 
                         }
          });//geocoder.geocodeの終了
           }) (i);
         }//for文の終了
      	
    }//function geo終了

    function aftergeo(){    	
        myLatLng = latlng[0];//最初の住所を地図の中心点に設定
        var opt = {
            center: myLatLng, // 地図の中心を指定
            zoom: 14 // 地図のズームを指定
        };//地図作成のオプションのうちcenterとzoomは必須
        map.setOptions(opt);//オプションをmapにセット
    	
    }//function aftergeo終了

地図を反映させる場所の指定<option>

HTMI文の684行目

google.maps.Map(document.getElementById(‘map_canvas’));
//地図を作成する

 <div id="map_canvas"></div>

 >と<の間に指定した地図DATA ‘map_canvas’が張り付きます。

2-26.

2-27.

2-28.

2-29.

2-30.

2-31.

Javascript のプログラムから、HTLM文の指定した場所にある要素のoptionを0番(1番目)に設定する。

document.getElementById( “target1” )はHTML文689行目にあるid=” target1 “を指定します。選択される時には必ず1番目に設定されるように指示しています。

var element1 = document.getElementById( "target1" ) ;

// option要素の集合を取得
var elements1 = element1.options ;

// 1つ目の項目を選択状態にする
elements1[0].selected = true ;  
HamL Link先

2-32.

2-33.

ソート(sort)する定型プログラム

var time_List = time_List_0.sort(function(a,b){ return a-b; });

2-34.

2-35.

多元配列したプログラム

time_List_Data.push(arrayArray[k][5]);

今回は2次元配列 [][]を例にしましたが3次元 [][][] であっても4次元 [][][][] であっても考えかたは同じです。

for (var k = 0; k < arrayArray.length; k ++){

    time_List_Data.push(arrayArray[k][5]);
	
    var time_List_0 = time_List_Data.filter(function (x, i, self) 
    {return self.indexOf(x) === i; });

    };

【2次元配列の説明例】

ary[1][2]の意味は「92」を意味します。

var ary = [
  [92, 88, 64, 86],   //ary[0][92, 88, 64, 86]  
  [78, 92, 96, 81],   //ary[1][78, 92, 96, 81]  
  [68, 56, 84, 70]   //ary[2][68, 56, 84, 70] 
];

var num = ary[1][2];    ary[1][78, 92, 96, 81]  
となり  var num  = 92 を意味します。

2-36.

2-37.

2-38.

2-39.

2-40.

2-41.

2-42.

2-43.

2-44.

2-45.

2-46.

2-47.

2-48.

2-49.

2-50.

2-51.

2-52.

2-53.

2-54.

2-55.

2-56.

2-57.

2-58.

大人(定年前)からのプログラミング(初歩)TECHACADEMY3か月での学習成果③(Javascript編1)

2.【Javascript 】プログラムのポイント説明

⇒実際のプログラムを使ってみてください

2-1.

プログラミングで頻繁に使われる function ●●●(){ } 関数を宣言する 

function initMap() {~}

initMapでなく名前は自分で設定(宣言)すれば大丈夫です。

よく使われるグーグルのAPI(API とはアプリケーションとアプリケーションの間でデータをやり取りする方法)を使って、今回のDATAから抽出した物件をグーグル地図に挿入でるようプログラムする関数を宣言しています。

このプログラムでは最初「 { 」は2行目にあり、最後の「 }」は839行目にありますので、そこまでが含まれます。

{~}の中は試行錯誤しながらプログラムを追加追加していく内に、839行目迄になったという感覚です。初めから全て見通してプログラムは書けません。安心してください。

var initMap = function() {~}とも書けます。

initMapでなく名前は自分で設定(宣言)すれば大丈夫です。ただし、翌日みて、関数の内容がわかるような命名をします。

mapDatas = [];

[]はDATAを保管場所をmapDatasと名前を自分でつけました。

$(“#navbar a”).on(“click”,function(){~};

$(“#navbar a”) で、先ず$()はHTML文の場所を指定します。その指定場所の名前が #navbar a ということです。

$(“# ~)は HTML文 にあるidと紐づきます。

HTML文のなかにある <div id= “navbar”>の更に<a>の部分に関連させますということになり、

$(“#navbar a”).on(“click”,function(){~};とは HTML文のなかにある id= “navbar”の更に50行目から60行目にある全ての<a>の部分がクリックonされた時にfunction(){~}の内容{~}を実行しますという意味になります。

$(“.navbar a”).on(“click”,function(){~};

#の部分を「.」に変えると、

これは全く違う意味になります。

#はidに紐づき、 「.」 はclassに紐づきます。

この1つが間違うだけでプログラムは反応しなくなるので、注意する必要があります。同じ名前 navbar をid=”navbar“とclass=”navbar”とは設定しないほうが無難です。

ただし、敢えて設定し「プログラムを簡略化する意図」があれば問題ないですが、初歩の段階では避けたほうがベターでしょう。

このプログラムでは、class=”nav navbar-nav”のように似てますが少し違うネーミングをしています。

因みにclass= “nav navbar-nav” は

class=”nav” と class=” navbar-nav ” の2つの名前を設定して指示を分けれるようにしています。

varは、名前を付けて「●●です」いう宣言です 。宣言しないとコンピューターから無視されます。

var searchResult1,
searchText1 = topWord,
targetText1,
hitNum1;    

var searchResult1,searchText1 = topWord, targetText1,hitNum1;と同じことです。

var searchResult1;
var searchText1 = topWord;
var targetText1;
var hitNum1; を省略して書き、更に見やすいように段で分けています。区切りは「,」で最後に「;」が必要です。

var searchText1 = topWord,だけは、 topWord を searchText1 と宣言した searchText1 に代入しますという意味で、数学とここは同じです。

しかし「=」とは別に、紛らわしい 「==」や「===」とかをプログラムする場面があります。

代入するのではなく、 「==」 の左側と右側を比較して同じ種類であり、「===」の左側と右側を比較して全て形式が同じであかを確認する場合に使います。こ辺りも初めの段階では理解に苦しむ1つです。

2-2.

Javascriptプログラムの中にコメントを書く場合には「//~」//を頭に書く。

HTMLプログラム文の場合には<!–><–>とし、CSSプログラム文は/* ~*/の~の中に書きます。

2-3.

$(‘#search-result__list1’).empty();

$(‘#search-result__list1’)は、$は先ず、HTML、またはCSSプログラムに書かれていることを示します。

その書かれている場所はid= “search-result__list1 “で、その内容をempty(空)にするという意味です。

何故、空(から)にする必要があるかですが、$(“”)で指定した場所にプログラムした内容を実施するように記録されている為に、当然同じ処理を繰り返すことになりますが、前の処理はいらない場合にはその指示内容を消さないといけないというわけです。下に具体的に説明します。

例えば、ボタンを押すと「赤い」という文字を書くプログラムを書いたとします。もう一度ボタンを単純にクリックすると「赤い赤い」とかかれることになります。ですので、もう一度ボタンを押すと、初めに書いた「赤い」というプログラムを消す処理が必要になるということです。

2-4.

配列[数字]の意味 

var eki = ekiData[3];の解説

ekiをvarで宣言します。そして ekiData[3] をekiに代入するという意味ですが、

例えば、ekiData[3]に、下のDATAが格納されている場合には、

[“ディーグラフォート”,”千里中央,大阪府豊中市新千里西町1丁目1-10”,”北大阪急行南北線” ,”千里中央駅”,”徒歩”,”4分”] のDATAを分解を下に示します。

0番[0] ”ディーグラフォート”

1番[1] “千里中央,大阪府豊中市新千里西町1丁目1-10”

2番[2] ”北大阪急行南北線”

3番[3] ”千里中央駅”

4番[4] ”徒歩”

5番[5] ”4分”  となります。

Ekidata[3]はEkidataに保存格納されている背番号「3」=4番目にあるDATAという意味です。つまり左から数えて4番目

2-5.

自分で定義せずに既にセットされた定型の関数の例

 var EkiList = ekiNames.filter(function (x, i, self) {
              return self.indexOf(x) === i;
           });

JavaScriptでは、無数に事前に設定された定型の関数が用意されています。その1つに

DATAが重複しないで配列に保存されるように設定された

filter()という関数があります

var ekinNmes = [東京,大阪,名古屋,大阪,静岡,福岡,名古屋,京都]

というDATAが ekinNmes に保存格納されていた場合に

DATAの数は8個ありますが、大阪と名古屋がダブッていますので、駅名としたら実質は [東京,大阪,名古屋,,静岡,福岡,,京都] の8DATAの6種類です。

DATAの数は減らず「種類」をフィルターにかけるという関数です。

エクセルでもフィルターにすると同じ種類は省かれますがあれと同じことです。

注意はDATAの個数は減らずにその場所に保たれています。ですから ekinNmes [3]は静岡ではなく大阪のままです。

2-6.

●●.length は             ●●のDATAの数を知るためのプログラム

for (var i = 0; i < searchResult2.length; i ++) {~ ~ ~}

i=0 から searchResult2.length の数未満迄{~}を繰り返すという意味です。

この searchResult2.length は、 searchResult2 に含まれる length 個数までi++でfor繰り返すということです。頻繁に .length は同じ書き方ででてきます。

もしこの .length が4であれば、i=0,i=1,i=2,i=3までとなります。小なりの「<」を使うのは前述した、プログラムは基本、1番目のDATAは「0番」の背番号をもたせる為に1つ整数値を減らす必要があるからだけです。

2-7.

2-8.

2-9.

$(‘#●●’).append(~); のプログラムの意味と$(‘.●●’).append(~) との違いを解説

hitNum2 = '【最寄駅】からの検索結果:' + searchResult2.length + '件見つかりました。';
      
      $('.search-result__hit-num2').append(hitNum2);  
	

HTML文の中のidなら#,またはclassなら.で指定した場所の最後の部分に(~)の中のプログラムを付け加えますappend()という事。

2-10.

$(‘[name=example3]’).change(function() {~}よく使われるセレクト プログラムを解説

$(‘[name=example3]’)の意味は、HTML文の name=example3 にあるセレクトをチェンジする場合には{}の中の関数で定義された内容が指示されるということです。

2-11.

var searchText5 = $(‘[name=example3] option:selected’).text();の意味を解説

var searchText5 = $(‘[name=example3] option:selected’).text();

var searchText5 に $(‘[name=example3] option:selected’).text()を代入する指示;です。

先ず $(‘[name=example3] option:selected’) はHTML文にある name=example3の中にある選択 optionの中で selected 既に選ばれたtext()を searchText5 と宣言した変数に代入するという意味。

2-12.

searchResult5.push(targetText5);の push ()プログラムを解説します。

searchResult5.push(targetText5);の push() はDATAを押し込むというイメージです。つまり targetText5 という変数に格納されたDATAを searchResult5 という保存庫にpushしますという指示。

2-13.

$(‘[name=example4]’).prepend(‘<option>沿線からの駅を選択</option>’);の prepend (~)を解説

<option>●●</option> は●●という選択枝を表します。ここでは 「沿線からの駅を選択」 という内容が●●に当たります。仮に●●が空白の場合に空白の選択枝が作られます。

$(‘[name=example4]’).prepend(‘<option>沿線からの駅を選択</option>’);の prepend ()は()の中の <option>沿線からの駅を選択</option> の内容をHTML文の中にある$()で指示したname=example4 という場所に付け加えるという意味です。

2-14.

$(‘<div>’).text(searchResult5[i]).appendTo(‘#search-result__list5’);が意味するプログラムを解説します。

  // 駅名検索結果をページに出力
 ①      for (var i = 0; i < searchResult5.length; i ++) {         
 ②        $('<div>')
 ③                 .text(searchResult5[i])
 ④                 .appendTo('#search-result__list5');
         }

①はsearchResult5に保存されている.length数未満まで{}の定義したプログラムを繰り返すのですが、そのプログラムの内容が②③④です。

②は$(‘<div>’)で③の.text(searchResult5[i])を囲む

④のappendTo(‘#search-result__list5’)は、HTML文のid=”search-result__list5″で指定したところに②③を実行することを①の回数だけ繰り返すという意味。

2-15.

2-16.

プログラムの中で文字を連結して使う例の解説

hitNum4 = ‘【’+searchText5+’/’+searchText6+’】からの検索結果:’ + searchResult6.length + ‘件見つかりました。’;

hitNum4 に =の 右側 の ’~~~~~ ~~ ‘を代入する

2-17.

2-18.

DATAの中から指定した部分を切り取るプログラムとDATA同士を結合するプログラム

var place_timeData = place_time.splice( 5, 1, place_timeData_x ) ;

		     var j_place_time = place_time.join('/');

.splice( 5, 1, place_timeData_x )  DATAを分離し入れ替える

数字の5は6番目、数字の1は1個切り取り、その切り取った部分にplace_timeData_xという変数DATAを追加する。

.join(‘/’); ()の中の ’ ’で囲んだ/でDATAを結合する

[“a”,”b”,”c”,”d”,”e”]というDATAが[a/b/c/d/e]になるという意味。

   他には   var array = ['2019', '07', '027'];
            var result = array.join('-'); 
            console.log( result ); 

プログラム結果     2019-07-27  にDATAが変化する

2-19.

IF(){}elsif(){}プログラム

if(place_time[5]<=5&&place_time[4]=="徒歩")   {j_place_timeDate5.push(j_place_time);}
else if(place_time[5]<=10&&place_time[4]=="徒歩"){j_place_timeDate10.push(j_place_time);}
else if(place_time[5]<=15&&place_time[4]=="徒歩"){j_place_timeDate15.push(j_place_time);}
else if(place_time[5]<=20&&place_time[4]=="徒歩"){j_place_timeDate20.push(j_place_time);}
else if(place_time[5]>=21&&place_time[4]=="徒歩"){j_place_timeDate21.push(j_place_time);}

if(place_time[5]<=5&&place_time[4]==”徒歩”) 

もし  place_time[5] が5以下で かつ&&   place_time[4]==”徒歩”  であるならば

プログラムの{j_place_timeDate5.push(j_place_time);}を実行する

もしそうでなくelse if

place_time[5]<=10 でかつ&&  place_time[4]==”徒歩”ならば

プログラムの {j_place_timeDate10.push(j_place_time);}を実行する

もしそうでなくelse if ・・・・・・

2-20.

大人(定年前)からのプログラミング(初歩)TECHACADEMY3か月での学習成果公開②(HTML編)

【実際のプログラム】公開

⇒実際のプログラムを使ってみてください

分譲マンションを検索できる

(諸条件/利用交通機関、駅名、時間

※対象エリアの一部のDATAでテスト運転済

【検索エリア】

北摂エリア

大阪府豊中、箕面、吹田、池田、高槻、茨木

阪神エリア

西宮、芦屋、東灘区、灘区

1.【HTML】プログラミングのポイント説明

1-1.

プログラミングでは頻繁に使われるハンバーガーメニュー

ページ内のリンク先へ遷移させる複数のクリックのあつまりで、折り重なってハンバーガーのような表示に見えるテンプレート(様式)

1-2.

href ( hypertext referenceの略 :エイチレフ )はリンク先の場所を指定します。

glyphicon (http://icon-search.jp/)は、あらかじめ用意されたものの中からアイコンを選んで表示する機能。

Webサイトでアイコンを表示する際、「イラストレータやフォトショップを使って画像として切り出し、imgタグを使って表示」しますが、Glyphiconのようなアイコンフォントでは」、画像として切り出す必要がなく、HTMLタグ(span)にclassをつけるだけでよく画期的な仕組です。

例えば、ハート♡であれば、

<span class="glyphicon glyphicon-heart" aria-hidden="true"></span>

遷移させるプログラムの指示

# ⇒ id 

<li><a href="#top">TOP</a></li>
~~~~#の部分からid="top"と書かれたところへジャンプ~~~~
<div id="top" class="top__bg">

hrefの記述の仕方は、プログラムの中で

# + id名」と書き、設定されたid先へ画面が飛んでいきます。

1-3.

「ul」「li」タグ(このプログラムでは「ol」タグは使っていません)

HTMLではulolliの3つのタグを使って箇条書き(リスト)を作ることができます。

1-4.

このプログラミングのDATA仕分は「/」で区切っています。

HTMLシートの中でDATAを「/」で区切り、区切ったDATAを検索できるプログラミングをかいています。

1-5.

プログラミングの配列では、一番目のDATAを「0番」と呼びます。

配列は[ ]で表現されます。この[]中にDATAを格納していく場合に[a,b,c,d,e,f,g]という7つのDATAが保存されている場合、

一番初めのDATAのaは「0番」目に保存されていると言います。

DATAが7つありますので7番目でなくgは「6番」目となります。1つマイナスの「番目」と呼びます。プログラミングの初期ではよく間違いますので注意が必要です。

1-6.

このプログラムのDATAには「●分」があるものと「分が無い」ものが混在していた

DATAから「分」を取り除き、数字だけにさせるプログラミングが必要でした。

「/」で区切った一番右端の見てください。

例えば時間で3分と記載されている場合と単純に数字の10と記載している場合があります。

この一文字を分離するプログラムする為に丸2日かかりました。

この「悩み」を解消するために、ネットで調べあらゆるパターンを試行錯誤することでスキルが身に付きます。

あきらめずに頑張るしかありません。

Web上のメンターがいると質問できるという心理的な安堵感があるため、あきらめずに考える勇気がでます。結局は質問せずに自分でできるケースが80%ありますので、メンターがいるとことはお勧めです。

1-7.

このプログラミングでは、検索キーワード(所在地、交通機関、徒歩など)をDATAからセレクトし抽出するようにしています。

DATAを見れば非常に簡単ですが、これをJavascriptで種類ごとに分けてDATAを格納するプログラムを書くのにも丸2日かかりました。

この中で、抽出するための関数(自分で定義するものと、エクセル関数のようなライブラリー)や方法がなんとなくイライラしなはらも気づだします。

ライブラリ(Library)とは、汎用性の高い複数の プログラム を、再利用可能な形でひとまとまりにしたもので、「クラスや関数といったパーツのまとまり」で提供されるソースコードの部品です。

1-8.

プログラミングの快感とは

かなり悩んだあとに自分の想定した通りに検索される快感は癖になります。

「生意気で全く振り向かなかっ部下たちが一気に素直になり100%こちらの指示に従い完璧に処理を実行」してくれるわけです。

かつ「瞬間に変化する感動」はプログラムを書いた人でないと味わえない感覚です。

1-9.

プログラミングでは非常に細かくDATAを分離できますが、検索する顧客の立場でセレクトキーワードを選ぶことが最優先。

例えば、徒歩時間の分け方の場合、単純に1分ごとにも分離抽出できますが、徒歩1分と徒歩2分では細かすぎるので5分刻みで抽出できるほうが便利だとかを顧客立場で考えれば判断できる。

1-10.

プログラミングでよく言われ言葉に「ロングテール」というものがあります。これがネットビジネスの醍醐味です。

ロングテール英語: the long tail)とは、インターネットを用いた物品販売の手法、または概念の1つ。

販売機会の少ない商品でもアイテム数を幅広く取り揃えること、または対象となる顧客の総数を増やすことで、総体としての売上げを大きくするものと ウィキペディア に解説されています。

小さなものを積み上げて莫大な量にできるという従来の「大量で少ない種類」とは逆転し、「少量で多品種」という考え方。AMAZON(アマゾン)はその典型的な企業。

恐竜の尻尾(tail)のような形状から「ロングテール」と呼ばれる。

黄色の部分が「ロングテール」、緑の頭の部分は「ヘッド」と呼ばれる。

1-11.

ホームページをプログラするときにはSEO対策としてキーワード選定が重要

SEO対策の世界では、

検索語に使われる単語の数で

ヘッドキーワード(1語:ビッグキーワードとも言います)と

ミドルキーワード(2語)

ロングテールキーワード(3語以上)

に大きく分類されます。

一般的には、検索ボックスに入力する単語の個数が多くなるほど、より具体的なトピックにフォーカスすることができます。

ロングテールキーワードは、3つ以上の単語を組み合わせた複合キーワード(検索クエリ)。ヘッドキーワードであるビッグキーワードよりもより具体的な内容が検索されることになります。

1-12.

1-13.

1-14.

時間で検索する部分のプログラムの抜粋


<p>■<徒歩>時間でさらに抽出<span id="cityCity"></span>							    
  <select name="example2_2" id="target2_2">										    
        <option value="0">選択下さい</option>										    
        <option value="5">徒歩5分以内</option>											 
        <option value="10">徒歩6-10分以内</option>											 
        <option value="15">徒歩11-15分以内</option>											 
        <option value="20">徒歩16-20分以内</option>											 
        <option value="21">徒歩20分以上可</opti>
  </select>
</p>

1-15.

1-16.

今回のHTMLのプログラムは約700行です。

HTMLで書いた内容は「骨と筋肉」です。骨と筋肉だけではプログラムは動きません。

そこにどのように動かすか(画面遷移、変化)やDATAの保存先など細かい指示を与えるプログラムを別に書きます。

そのプログラムがJavascriptです。

<script src="bootstrap/js/bootstrap.min.js"></script> のような部分がありますが、1行でも不足するプログラムが動かなくなります。

この辺りは、詳しい親切な知人がいるか、プログラミング教室、または、Web上のスクールに通わないと時間がかかりすぎる内容です。

大人(定年前)からのプログラミング(初歩)/TechAcademy3か月での学習成果公開①

大人のプログラミング(初歩)をご覧ください

→(自作プログラム)備忘録掲示板

背景動画videoURL: ‘https://www.youtube.com/watch?v=vvaslDNVuds’

【HTML】①~⑤

【1】HTMLの簡単な説明

①head部分

HTML の文書の head 部分は、ページが読み込まれても Web ブラウザーには表示されない部分です。この部分には 、例えば、<title>といった情報や CSSへのリンク (もし HTML を CSS で修飾したいならば)、そしてほかのメタデータ ( HTML を表現する重要なキーワードなど) の情報を含ませます。

html1

②/body部分②~④

<body>要素は、ページが読み込まれるとWebブラウザで表示されます。

③/body部分②~④

④/body部分②~④

⑤footer部分

著者情報や関連記事へのリンクを記述する場合によく利用されます。

【2】CSSの簡単な説明

CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)とは、ウェブページのスタイルを指定するための言語です。

【3】Japascript (js)①~⑤

JavaScriptはプログラミング言語であり、ユーザー側のWebブラウザと、Webサイト(またはウェブサービスの相互)を円滑にするために使われています。

CSSでは決めた色や大きさをボタンをクリックすれば変更したり時間でWebサイトの外観のデザインを変更させたり、画面に動きを与えることで見ていて楽しくしたり使いやすくさせます。

現在のWEBサイトの作成では必須のプログミング言語といえます。