過去と未来が出会う場所

「ひと」の場を構築するために

限界の正体2

youtu.be

土江裕寛コーチ

積み上げて行く考えではなく、
切り捨てて行く考え

10秒から9秒台に突入しても何も変わっていない。
全体の配分が変わっただけ。 (限界は幻)

思考は言語に左右される。
当たり前だという思い込みは
頭が決めている。

子供のことに当たり前と思っていたことが、
大人になるとなんて馬鹿らしいことだったんだという気づき。
これをできるだけ早く気づきたい。
学べば必ず自分の殻を破れる。

少なくとも、自分は思い込みの世界を生きていることに気づくこと。

パターン化された行動をしていると、 パターン化された思考に支配される。

アフォーダンス
環境に支配される

→場所を支配してると考えているけど実は環境に支配されている
喋っている人と、聞いている人を主客逆転することさえできる。

体験と教育

学ぶということは忘れるということと同義語
学びというのは破壊。
既存の枠組みで考えていたことを、破壊して新しい自分を作る。
ある程度、積み重ねて、飽きて、壊して、脱皮する。

体験して、タイトルをつけて、ブリッジする。

スランプ
そのようにしか考えられなくなるとスランプにハマる
ある物事を違うように考えれば、スランプから抜け出れる

バカになる(没頭する)日
客観視する日
を区別する。混在させない。

スポーツ選手がゾーンに入っているとき
→どんな感じだったのかをいつも後になって知る。
→冷静に怒っている感じ

言葉でもマインドセットを変えることができる。
→言語的思考
→イメージ思考の人はどうマインドセットを変えることが出来るのか?

頭を空っぽにすることが難しいとき
あるいは、イップスにかかってしまっているとき

違う何かに意識を向けさせる。
走り幅跳びの際、足に鈴をつけて走る
結果として他の部分の動きが変化してイップスを超えられる。

俯瞰と没頭
俯瞰を体感するためのトリガー

→人は、主観の中でしか生きられない。
→主観の多様体としての客観
「あなたがわたしならなにをしますか?」という質問を多くの人に聞く

限界の正体

www.youtube.com

・のめり込むこと(最低3ヶ月は)。そこから飽きること。

・自分の内側に公式を作る方法論

・力を抜くこと/楽しむこと

・目の前のできることのみ集中する

俯瞰と没頭

俯瞰へのトリガー (あなたが私だったら何をしたいですか?) 周りの人をある意味道具としてみる。

・ブリッジの話

・MindSet (先入観・経験からの学び) (思い込み・価値観)

・人は幻を生きている (自分は思い込みの世界に生きている)

・環境を変えれば見方が変わる
 違う環境があればまた違う自分になる(コンビニ理論)

・型と意味(関連:ブレイクスルー)

 型から入るか、意味から入るか
 自動化しないと技術は使えない(型・反復)
 理解しないと応用が利かない(意味・プライオメトリック)

・体験と教育

 Learning is Unlearning (学びには破壊と同意義。反復から、一回壊してもう一個大きなものと作らなければいけない。慣れないことをあえてやること。)
 体験しなければ通じない話がある
 体験して、要約して(タイトルをつける)、ブリッジする(もう一個上位の抽象概念でくくってみる)

・夢中と客観視

 夢中>努力
 スランプの本質的な問題は視点の固定化(真面目な人はスランプをうまく抜け出せない。ほとんど同じ世界しか経験していない)
 俯瞰と没頭は共存しない
 日毎に夢中と客観視を区別する(同じ日にやろうとしない)
 没頭しているとき=客観視の不在
 ゆらぎ理論(バランスを失ってでも、これだというところに突っ走る一定期間がある方が、結果的にブレイクスルーを起こしやすい)

限界とか、幻とかは、絶対にわからない(あとから振り返ることしかできない)

↑ ↓

ブリッジ

1.身体化された心―仏教思想からのエナクティブ・アプローチ

身体化された心―仏教思想からのエナクティブ・アプローチ

身体化された心―仏教思想からのエナクティブ・アプローチ

エナクティブ・アプローチ(行為から産出される世界)を通して、現象学的アプローチの問題点を、多くの事例を示して指摘している。

なお、本書の真髄は、瞑想経験のように、行為、実践を伴ってエナクティブな感覚を会得するものだ。理論はその後に付いてくるものであり、この点において、通常の読書(なにかを理解すること)とは異なる。いわば体験の書である。

仏教の経典のように何度も読みながら、エナクティブ・アプローチの輪郭を感じ取ろう。

Twitter_botアプリが(ほぼ)完成しました。

5ヶ月ほどかかり、やっと自分が納得する作品ができあがりました。

いい経験ができました。 いろいろと調べながらやりましたが、とくにはまったポイントとしては、

1.Rails軽量Ver.のSinatra+ActiveRecordを使用したところ。  
2.Herokuにデプロイするところ。  
3.TwitterAPIとメディアツイートの際、データ格納にAmazon S3 を利用したところ。  
4.Gemfileのbundlerが古かった。gemリストの一部を更新したら、整合性が合わなくなった。  
(bundle updateの後、うまくbundle installできた。)
5.Heroku:pgにmigrateした時、うまくテーブルができていなかった。  
(db/migrateフォルダ内を更新しまくったため。  
 => \copy (テーブル名) from '(テーブル名).csv' CSV;  
 でエラーが頻発。)
6.開発環境をきちんと整える。  
(libフォルダがローカルと開発環境で分離させていないとうまく参照されない。仮想環境内で開発する。)

いじるのがNGのファイルをいじって墓穴を掘っているパターンが多いですね。(苦笑)

さらに、改良ポイントは

1.Tweetクラスをもっとコンパクトにする。(tweet.rb)
(例:sliceメソッドを使っているところとか、うまくまとめられそう。)  
2.ActiveRecordを勉強する。  
(カラム値の取得に苦労した。tweet.rb内でfind_by_sqlでごまかしているところなど。  
アソシエーションなどのアクションを追加で記入。)  
3.heroku run bundle exec rake db:migrate で、エラー。  
((日付)create_(テーブル名).dbと(日付)modify_(テーブル名).dbを正しく書き直す)  
4.README.mdの編集(repositoryからDLした後のアプリの作成の流れを確認)

などですかね。

ソースコードはこちら。 github.com

次は、Androidアプリ開発をします。

これからのプログラミング教育(3)

前回の続き。 私が、ちょっと勘違いをしていたようで。。

プログラミング教育の落とし穴 - WirelessWire News(ワイヤレスワイヤーニュース)

要するに、私が言いたいのは、 結局初めてのプログラミング経験は、ビジュアルプログラミング言語を使って概念的に学べばよいのだが、そこからどうしたら熟練のプログラマーを育てることができるのか?ということにかかっています。

おさらいがてら、まとめてみると、、

ビジュアルプログラミング言語→分かりやすい。見た目が可愛いらしい。初心者が学びやすい。

古典的言語→分かりにくい。構造上古いバージョンとの互換を考慮するため複雑怪奇になる、パッと見てわかるような仕様になっていない。

ここで、こんな考えがあります。

不便から生まれるデザイン: 工学に活かす常識を超えた発想 (DOJIN選書)

不便から生まれるデザイン: 工学に活かす常識を超えた発想 (DOJIN選書)


この本は、不便益論(あえて不便にさせることで、習熟の喜びを得られるという、逆転の発想)という考え方に基づいた事例集です。例えば、年季の入ったデザイン(長く愛される道具)が、独特の風合いをもつ一方で、コンビニエントな道具はすぐに使えなくなるだけ、というような。プログラミングにあえて適用すると、自分に最適の道具(プログラミング言語)を探し求め、長く使用することが挙げられます。

分かりやすい、ビジュアルプログラミング言語の教育は先ほどのブログに譲るとして、ここではどうすれば初心者が挫折せず複雑に見える言語を学ぶ意欲が湧くかを考えます。

こんな考え方に登場してもらいましょう。

実践 行動経済学

実践 行動経済学


この、行動経済学とはなんぞや、ということですが…

人は、今を過大評価してしまう生き物なのです。

人間は、経済的に不合理な判断を下したり、直感的に素早い思考をしたりする傾向があります。そのため、ナッジ(うまく先回りして、「人を『正しい行動』に導こう」とする試み)を有効に活用しましょう、ということが基本的な考えです。

 

そこで、分かりにくいプログラミング言語を学ぶような「ナッジ」を、修得者が考えるとすると…。つまり、C++,Javaなどのオブジェクト指向言語を修得へと向かわせるきっかけとなるもの。すなわち、メタ認知(個々人の学習の障壁を事前に察知し対処したり、学習の方略とスキルを変更したりすることで目標を達成することができるようにする教育。)の試みを考えてみます。

1.体感としてのプログラミング


知覚ー行動カップリング( 『不便から生まれるデザイン』192ページ)によるプログラミング。 ざっくり言うと、その場で作った動作のプログラムが、デバイスがちゃんと認識すれば、作った本人に即座にフィードバックされるという仕組みを作って体感してみる。 いきなりハードルが高すぎますね。(汗)

2.分かりにくいことは確実なのだから、あえて分かりにくさを出す


1つは、最初に完成品のソースを見せる。(いかに多くの手間暇がかかっているのかを知る→社会科見学(工場見学)に似ている)

まあ、教習所で見せられるリアル事故動画のようなものと思ってもらえれば(笑)


3.熟練の技を見せる


実は、数分でゲームは作れる(らしい)
当然、教える側に高い技術が必要。

4.現状維持


もうすでに、老若男女がプログラミングを修得することがステータスとなるような時代が来ています。

Fab ―パーソナルコンピュータからパーソナルファブリケーションへ (Make: Japan Books)

Fab ―パーソナルコンピュータからパーソナルファブリケーションへ (Make: Japan Books)


パーソナル・ファブリケーションの時代へ(個人がより容易に、高度な創作に取り組むことができるという発想。 もちろん、このなかにプログラミングで「もの」を動かすことも含まれる。)

とりあえず、こんな感じです。

これからのプログラミング教育(2)〜プログラミングにまったく触れたことのない人へ〜

さて、前回の続きです。

前回の最後で、私は「プログラミング教育を通して、教育の概念を変える。」と言いました。

きっと、4年前の私(プログラミングをまったく知らなかった)のように、

それは言い過ぎじゃない?たんに、(他の教科と同列に)必修化になるだけじゃん

と突っ込んだでしょう。
そんな方へ、読んでいただきたい本があります。



2ヶ月前に出た本なので、書店にまだ並んでいるかと思います。

ぜひ、手にとって読んでいただきたい。

ネタバレになるので、 
ここでは、共感点と疑問点を、簡潔に述べます。

賛成
プログラミングは全ての教科に通底する考え方がある。



はい。一番大切なことです。
理系(数学や物理、生物)での実践的な使用例はともかく、 文系(特に国語)教科とプログラミングがどう結びつくのか。 それは、大げさに言うと、

これまでの価値観が崩壊し、人々の生き方が多様になるにつれ、新たな価値を持ち出す ということです。

例えば、次のような流れがあります。
(1)これまでは当たり前のように人の手で行われていたことが、消えていく。 (他にも、きっかけは数多く考えられます)

(2)それに伴い、これまで当たり前と思われていた「常識」が、必ずしも正当なことではなくなる。

例えば、「知的」であるということは、今の使われ方で良いのでしょうか?
「知的」というのは、今でいえば「情報を多く蓄積している」とか、「情報を素早く処理できる」といったことに使われます。
でも、それば「データベース」や「CPU」の仕事と変わりないでしょう。

(3)プログラマ思考で、社会(一般常識)を「デザイン」する能力が問われていく。

詳しくは、著書にあたっていただきたいのですが、

理系としてのプログラミング思考だけでは社会の変化に必ずしも対応できない。
ということです。
一例として、著書では、会社を長く経営できている経営者には、プログラミング経験者が多いとして、
「会社経営やリーダーとしての素質をプログラミングで磨くことが可能である」ことが挙げられています。



疑問
プログラミングは、どんどん簡単にできる。
今後、ビジュアル言語が主流となる。



著者のこれまでの仕事に、文句をいうわけではありません。

ただ、教育で必要なことは、結局のところ

「ひらめき(アハ体験)を多く経験させる」

ことだと思います。

ビジュアルプログラミング(処理の流れをブロック単位でビジュアライズしたソースコードのいらない言語) と、呪文のようなプログラムで書かれた言語は、わかりやすさから言えば当然前者でしょう。

でも、

与えられたものだけでわかってしまうというのは、結局能力のごくわずかしか使っていないのです。
簡単にわかる水準のところで能力を出すことしかしていないのです。
わかるというのは本来そんな簡単なことではありません。

また、プログラミングは、あくまで完成作品の「プロセス」であるため、そこに多様性をもたせた方が良いと思うのです。

例えはおかしいかもしれませんが、
ソースコードで記述されたプログラムは、原材料から吟味されてできた料理。
ビジュアルプログラミングは、既製品を元に作られた料理。
というような?

次回につづく...

これからのプログラミング教育

私は、2012年から独学でプログラミングのスキルを身につけてきました。
前々から気になっていた情報処理の資格を今年こそ取る!と、その年の元旦に一念発起したのです。

それまでは、プログラミングとは全く無縁の生活をしていました。
影響といえば、テレビドラマで描かれていたハッカーたちの、とても人間業とは思えない活躍を見て惹かれたことくらい。

ブラッディ・マンデイ DVD-BOX I

ブラッディ・マンデイ DVD-BOX I


とても、じぶんがたどり着けない次元の世界に見えていたのですから、カッコイイなくらいしか考えていませんでした。(そして、閉鎖的な世界)

その後、何度かの合格、不合格を経て、徐々にレベルの高い試験を勉強し、先人の偉大な背中を見ながら、自然と違和感を感じるようになってきました。

そして、IT系の資格でありながら、試験会場におもむき、与えられた問題を頭で考え、解答を記述する(選択する)ことが、この世界に求められていることなのか?

という疑問がふと頭をよぎったのでした。
パソコンを持ち込み、プログラムを自分で作って動かしてみるという経験こそがまず最初にやるべきことなのではないか。

そこでたくさんの失敗をして、なぜ間違っていたのかということが分かるまでトコトンじぶんの力で考える。

当然のことながら、かなりの忍耐が必要です。はじめは、バグを発見するまで、何時間もかかるのは日常茶飯事。
でも、ある時から、飛躍的にその時間が短縮されます。
今では、質問サイトがあり、じぶん一人の力ではなく、多くの知恵が結集される環境が整っていますが、
これまでの先人たちは、今よりはるかに、おのれの知恵のみで鍛え上げられたのです。

さて、そんなこんなで、じぶんがこれまでやってきたことをまとめてみました(反省の意味も多々あります)



1. Webを作成すること、ビッグデータを分析することだけがプログラマの役目ではない。


これからの時代。小・中学生もプログラミングが必修となります。 (2020年から) ニュースをざっと見た限りでは、小学生ではプログラミング言語を打ち込むのではなく、GUI的に処理する(Scratchとかなのかな?)ことで、その基礎を学ぶようですが。 www.sakana.tech 与えられたことを処理することが、次の時代に求められているとは思えません。 それは、パターン化された方法で処理すればよく、どんどん人の手を介在しないで自動化していきます。
もっと、広い意味でのアーキテクチャー(デザイン)思考が求められていると思います。

2.プログラミングは、向き不向きがある。


wakuwakustudyworld.co.jp とはいえ、わからない人にとっては苦痛でしかない呪文のような言葉を学ぶことが、重要である、そして基本であることは、今後ずっと変わりないと思われます。(コピペすればいいじゃんという方は、この世界には向いていないでしょう。)

そこで、言語とお友達になった人、ハマった人のためにオススメなのが、プログラミングコンテスト(通称プロコン)の問題を解いてみることです。

知らない人にとっては、とても敷居が高いと思われがちですが、なんのことはなく、プロコンに参加しなければいいのです。(私も参加したことがありません。)タダで、時間を気にせず良質な問題を解くことができるのですから。 そして、ある程度自信がついたら、自分の回答をさらしてみましょう。
初期の解答と今の解答を見比べると、自分のレベルが上がっていることがすぐわかります。

オススメは、
1.AtCoder

AtCoderとはなんぞや? →社長さんのブログ

chokudai.hatenablog.com

2.Aizu Online Judge

過去のプロコン大会の過去問が1000問以上あり、
登録すればじぶんの提出履歴がまとめて見られる。 また、解答数、レイティングなどが定期的に更新され、ほかの人との比較ができ、モチベーションが上がる。


自分がやった工夫は、
ただ漫然と説くのではなく、履歴を作ることです。 f:id:aweshin:20160607214153p:plain

解法をまとめることで、例えば、
再帰ダイナミックプログラミング(DP)は、見た目は違う解き方だが、結局同じことをやっている。(問題によって、あるいは言語によって使い分ける) ということが、自然とわかってきます。 わからなかったものは、ほかの人のacceptされた解法を元に、じぶんの書き方で必ず解答を提出してみましょう。



3. ものづくりを通して、自分の主張を多くの人に伝える。


1.twitterbotを作る。(このブログの埋め込みTweetは、自分がこれまでに見てきた、感銘を受けた言葉を集めたものです。
つぶやきを見てくれている、言葉の発言の当事者からRTやいいねを受けると、単純にうれしい)

2.実態を持たない主義、主張を、実態を持たせてみる。(IoTを、モノから得られる情報を元に分析すること(ハードからソフトへ)としてではなく、頭のなかで考えたデザインを実態化する(ソフトからハードへ)として用いること)
今であれば、Raspberry Pi や Arduino といった製品から簡単に作ることができる(環境が整ってきた)。


4.プログラミング教育にはそれ以外の教養が非常に大事。


プログラミングとは、何か新しいものを生み出すことですが
何か新しいものを生み出すためには、技術だけでなく、文化から哲学まで、幅広い知見を導入することが求められると思います。
プログラミング教育を通して、教育の概念を変える。そんな時代が、きっとこれから訪れるでしょう。

Raspberry Piの覚え書き

Raspberry Pi(以下、Raspi)とは

2006〜2007年 小型PCボードがケンブリッジ大学で開発される。
2008年 財団設立
2011年〜 世界中で流行となる
2013年 開発者の来日とともに、日本で関連本が出回り始める

開発のきっかけ

  • 1990年代の8bitや16bitのマイコンがwin/macに取って代わられた。
  • それに伴うプログラミング離れ
    • 教育の現場では、Word/ExcelやWebデザインに偏った教育が現状で、ハードウェアを操る教育がなされていない。

Raspiのコンセプト

  • 可能な限り多様な言語でプログラミングができること

    • Pi=Pythonが利用される言語の中心になるが、他の言語でプログラミングされることも念頭に置いている。
  • 子供達にとって楽しいもの。ゲームやビデオを楽しむように使えるもの

  • 小さくで頑丈。子供達が学校にも持っていけるもの

  • 低価格で学校の教材となりうること。

    • 今日では、産業用の用途が増えているため、当初の目論見とはやや外れている。

Raspiに必要なもの

1.電源ケーブル
2.microSDカード(RaspberryPi2以降)
3.画面出力ケーブル
4.キーボードとマウス
5.Wi-fiドングル(かLANケーブル)