hkawahara約11分プログラミング1プログラミング教育に関してのまとめ。前職のプログラマやスーパープログラマたちを差し置いてまとめるのは恥ずかしい限りだが、教育従事者や父親としての観点でまとめてみる。Contents【ゴールや方向性】ポイント1アルゴリズムを通して、課題を解決するのは手順が一番大事だということを意識する。2マークアップ言語(とりあえずHTML)を勉強して、リッチテキストとプレーンテキストの違いを把握して、パソコンの仕組みを意識する。3プログラミング言語を勉強して、使えるコマンドを増やして、パソコンをブラックボックスからホワイトボックスに変えて、使いこなす。4ハッカー系の映画や書籍を読んで、アイデアや想像を膨らませる。(プラスα)データベースとネットワークを把握して、パソコンの向こう側にある仕組みを意識する。【オススメの手段】1下のサイトを余裕でクリアする。アルゴリズム体験ゲーム・アルゴロジック|JEITAソフトウェアで未来をつくるhttp://home.jeita.or.jp/is/highschool/algo/※「アルゴロジック」「アルゴロジック2」がオススメ2下の動画に沿って、簡単に環境を整えて、HTMLを書いてみる。プログラミングならドットインストールhttp://dotinstall.com/lessons/basic_html_v33以下のサイトをクリアしてプログラミングの雰囲気をつかむ。(ヤングジャンプコミックスDIGITAL)などなど(プラスα)上記の技術だけじゃ、システムの開発なんてできない。データベースやネットワークなんかの勉強をして、パソコンの向こう側にある仕組みを構築できるようになる必要がある。データベースやネットワークを使わなくてもいいような仕組みのものを開発するようにするか、ちゃんと勉強してから開発するかの二択となる。後者となると、独りで独学で開発するのは無理だから、仕事でお金もらえるようになってからチャレンジするといいよ。何も考えずに、以下のサイトかYoutubeで動画を鑑賞して欲しい。字幕の設定を日本語にできるので、日本語が得意な人は設定を変更して日本語で鑑賞して欲しい。YouTubehttps://www.youtube.com/watch?v=nKIu9yen5ncもう少し細かく書かれたものとしては以下のサイトが有名だ。Facebook元役員「プログラミングを学ぶのなら、生涯仕事に困らないことを私が保証しよう。リーディング&カンパニー株式会社http://lrandcom.com/facebook_former_executive_learning_programming_guarantee_life_time_work流行ってますね。申したい気持ちはあるが、詳細は後ほど。magic.という有名な言葉がある。パソコンに詳しくない人が、急に動かなくなったパソコンの前で呆然としていたら、誰かが黒いウィンドウを立ち上げ、いくつか文字を打ち込んだら動くようになった。パソコンの調子が悪くなり、サポートセンターに連絡したら、自分のパソコンが電話口の人の言う通り動き始めた。(他に例が思いつかない。)などなど、自分の想像の範疇を逸脱すると、もうその世界はファンタジーでしかない。そんな状況で、安易に手を出すと、鴨がネギ背負って歩くようなものです。私は、プログラミングの前にアルゴリズムが重要と考えている。アルゴリズムは、概念的過ぎて、ここでお金を稼ごうとすると、チープに見えてしまう。ここに商機を見出してる人は、もう少し具体性のあるプログラミングを前面にだすような戦略をとっているように思う。「英語」の勉強の世界も、似たような状況だ。本来は、先に「言語技術」などの根源的な学習をしなければ、多言語を使えても、中身の少ない人間になってしまうように。それと、プログラミングを勉強したところで、すぐに何か作れるようになるか、というと何もできない。そりゃアドバイスなんかがあれば、iOS向けのアプリを開発してリリースして小遣い稼ぎはできると思う。それだけ?本当にそれをしたくてプログラミング勉強するの?プログラミングを勉強する目的は、最初に明確にしておくべきだ。その目的は以下の3つに集約される。プログラミングを勉強する目的1アプリやソフトやゲームといった具体的なモノを開発したい。2プログラミングと呼ばれるものの理解や知識や技術をある程度知った上で、就職してOJTを通して身に付けたい。3プログラミングを通して、課題を見つけて解決する力を身に付けたい。1や2であれば、やることは簡単だ。適当にネットで検索して、目当てのものを見つけて、オンライン学習でも書籍でもスクールでもやってみればいい。難点があるとすれば、その道でお金を稼ぐぐらいの気持ちが無いなら手をださないことぐらいだ。いうよりも、12以外でプログラミングをやってみたい、という人たちは全てがこの目的を持って、気軽にプログラミングに取り組んで欲しい。3のような「プログラミング」に興味がある人は、どの言語から始めたらいいのか、という壁が最初に立ちはだかる。1や2であれば、作りたいものや有名な言語に合わせて選べるから、そんなに選ぶのに苦労しない。「プログラミング」をしたいだけだと話が違う。3の人に是非取り組んでもらいたいこと。それは【結論】に書いている通り、アルゴリズムを学ぶことだ。すると、プログラミングの醍醐味、自動化の効果を実感できる。この感覚があるとないとでは、その後の習熟に大きく差がでる。面倒な事は人手で解決するのでなく、自動化して機械にやらせよう、すると、大変さが1回で済む。【読んでおいた方がいい本】この書籍の選別はとても難しい。勧めたい書籍が多すぎる。学習方法1本で勉強する2オンライン学習サイトで勉強する3スクールや塾に通って勉強するこの点に関しては、他のサイトでの紹介がとてもまとまっているので、各自で探していただきたい。【プログラミング言語の紹介】ぶっちゃけ何をやってもいいと考える。言語にもある程度流行り廃りがあり、現場によって偏りがあるものだから。それでも挙げるとしたら、以下の4つの観点で紹介したい。プログラミング言語に隣接する言語1プログラミング言語2マークアップ言語3OS上のコマンドライン系のシェルスクリプト4データベースを操作するためのSQL1プログラミング言語プログラミング言語とは、いわゆるプログラミングをするための表記法、ルールの総称である。・Perl・Ruby・PHP・JavaScript・iOS向けアプリを開発するために使われているSwiftやObjective-C・Javaといったところ。他にも沢山あるが、どれか一つできるようになっていれば、その後の習熟速度は速い。2マークアップ言語マークアップ言語は、プログラミングと実態は違うものの、初心者向けへの説明が面倒なので、一緒にくくられているもの。何かを動かすためじゃなく、何かを表示を整えるためのもの。3シェルスクリプト実はこのGUIとCUIを把握して、OSをコマンドラインなどを使ってシェルスクリプトで操作できるようにならないと、プログラミングをするための環境構築が準備できない。てっとり速いのは、Linux系のOSを自作でインストールしてみると理解できる。一行で雑に説明しているが、この言葉からネットで調べ、1ヶ月ぐらいあれば実現可能なレベルにはなれるだろう。4データベースを操作するためのSQLデータベースを操作するための独自の言語がある。・MySQL・PostgreSQLあたりのフリーのDBをいじってみればすぐにイメージがつく。【関連知識の紹介:データベースやネットワークやレンタルサーバ】ここまでの話だけでは、何かを作っていくための技術にはまだ足りない。何かを作っていくには、そのためのデータを保存する方法を考えなければならない。そのための知識がデータベースである。それと、オンラインで何かを構築するのであれば、ネットワークについての知識も不可欠である。IPアドレスって?PINGで疎通確認?VPNトンネルって?ファイアウォールでセキュリテイ対策?その辺りが弱いと、自分の作ったものが、外から丸見えになってしまう。いったデータベースやネットワークの環境を構築するのは、とてもレベルが高いし、手間。面倒な人はレンタルサーバを借りるのがてっとり速い。手続きも簡単で、月500円程度で、普通の環境がすぐに揃う。セキュリテイも概ね問題ない。困ったら、とりあえずお金に物言わせて、環境を整えてチャレンジするのが近道だ。技術的な話が多く、結局何をどうしたらいいんだろうか。私は「プログラミング」はバズワードの一つと考えている。いわゆる意識高い系の人向けだったり、「英語」は勉強しておいた方がいいよ、という話だったり。そんなバズワードであっても、珍しく中身のあるものだ、とも考えている。それは、「プログラミング」を通して本当に身につくのは「課題発見能力」と「課題解決能力」だからだ。プログラミングができる人は、ここ最近とても増えているが、それはあくまでもプログラミング言語の読み書きができるだけに過ぎない。それも一つの能力だと思う。「英語ができる」人がいたとする。その人は「英語」で何ができるんだろうか?日常会話?ビジネス会話?交渉?スピーチ?営業?医療従事?カウンセリング?コーチング?「プログラミング」はあくまで手段。自分がやりたいことの実現方法の一つに「プログラミング」が候補に挙がるようになれば、最初のゴールにたどり着けたものと言える。その先にあるものは何か。それが「課題発見能力」と「課題解決能力」だと私は考えている。「プログラミング」は、他のツールと違って、正否の結果が一瞬で返ってくる。他の分野における手段に比べたら、比較にならないスピードだ。この特性はいかすべきである。全ての事象の具体性が排除され、抽象化されていく。最後に残るのは、自分が何をしたいのか、何が問題なのか、という「課題」意識だけ。それでもまだ察しがつかない人は、とりあえずExcelでじゃんじゃん関数使って、今まで電卓使ってたり、面倒な表計算をしていたりしたところを、置き換えてみるといい。一つの数式で10個くらいの関数を入れ子にして、複雑な計算も抽象的に書けるようになるところまで目指してみるといい。いつも同じような作業をしていて、自分じゃなくてもできそうな作業があれば、それを機械にまかせてみればいい。何か違った世界が見えてくるよ。magic.目指せ魔法使い。hkawaharaプログラミング関連記事2018年8月13日ニュース気になるICT教育ニュース〜スマホの持ち込み許可/タブレット導入数/ワイード/IT時代の教育〜2018年8月2日ニュース子供・若者白書2018年度版を読んだ。就労状況がとても参考になった。2018年4月1日iPadiPadに「スクールワーク」が追加されるようだ。これは期待大2018年1月11日ニュース教員の本来業務って何だろう?「学校の多忙化が文化をなくす」というTogetterをみて考えたこと。元SEの知識を活かした情報科専任という希少で貴重なお仕事に従事。数少ない休日は息子の少年サッカーチームのパパコーチ。子ども3人、妻と共働きなので少しは家事を手伝うように努力中。問題を出題するときの指示の違い。「答えなさい」「説明しなさい」をホウレンソウを例に「説明する」。子供・若者白書2018年度版を読んだ。就労状況がとても参考になった。2018年4月1日iPadに「スクールワーク」が追加されるようだ。