コンピューター教育2017年05月04日 16:19

コンピューター教育


ガッコで教えるコンピューターというのが、昔はマックで、今はクローム、そのうちウインドウズになるんじゃないかといわれている。

(マイクロソフトが新OSと新型ノートPC、教育市場に照準)
http://www.nikkei.com/article/DGXLASGN03H0C_T00C17A5000000/

「学校向けに機能を絞った新型基本ソフト(OS)「ウィンドウズ10S」と、同OSを搭載した新型ノートパソコン(PC)を発表」

結論から書くと、プラットフォームは何だっていいような気がするんだがな。

「利用できるソフトをマイクロソフトのアプリ配信サービス「ウィンドウズストア」からダウンロードしたソフトのみに限定することで安全性を高めるとともに、端末を管理する学校の負担を軽減」

マックがその昔、教育現場に普及して行った時、ああ、これは教えやすいからだなと思った。

パソコンなんて、本来はややっこしい機械で、その動作の仕組みを理解したりするのは相当大変なんだが、自動車運転と同じで、オートマ限定クラスなら教える方も教わる方も楽が出来る。

ワンチップマイコンをはんだ付けして、アセンブラでドライバー書いて、直接デバイス動かしたりとか、そういう自動車工学的教育はしない。

そもそも、教育現場におけるコンピューターの位置づけは、とっくの昔に変わっていて、コンピューターをどう使うかということではなく、コンピューターで何を教えるかという話になっている。

そもそも、教科書とかがパソコンの中に入っている。

授業はパソコンの中の教材で教えられ、課題が出され、解決や回答の提出もパソコンから行われる。

自動車でいえば、運転できるのは当たり前で、人を運んだり、荷物を運ぶという、自動車を使った作業そのものがターゲットなわけだ。

売りにするのは、記事にもあるように、ウイルスなどを仕込まれないような安全性と、電源やネットワークを含めて管理しやすいことだろう。

ハードやOSといった使い勝手が同じような感じになって、価格と性能も似たり寄ったりだからな。

コンピューター「を」教えるのではなく、コンピューター「で」教えるというところがミソだ。

もう、そういう時代だろう。

トグルスイッチのオンオフで指示を出したり、機械語並べたり、アセンブラで書いたり、C使ったりなんて、多分、大多数の人は絶対にやらない。

画像や映像中心のカリキュラムに沿って、教材を展開して、教科書やノート、レポート用紙の代わりに使う。

世の中で自動車を使う人々の大部分が、自動車の専門家ではないわけだからな。

買い物したり、行楽に行ったり、通勤や仕事で使うためにクルマに乗る。

道具として使い倒す。

それでいいんだ。

価格と使い勝手、それが全てだろう。

コモディティ化したコンピューターは、大衆車と同じ価値観で選択される。

浮沈子は、それならウインドウズは必要ないと思うんだがな。

ⅰOSとかアンドロイドが乗ったタブレットで十分だろう。

軽自動車のような、使用方法限定の使い方のクルマの方が、価格も安いし管理もしやすいに違いない。

教育用のコンテンツが乗らないわけではあるまい。

既に形成されている教育用コンピューターの市場を維持するためには、価格破壊ご法度だからな。

1枚1万円くらいで、タブレットが現場に入り出したら困るだろう。

浮沈子は、ガッコでつかうなら、クラウド上に展開したコンテンツを、シンクライアントから弄るのが一番いいような気がするんだがな。

コンテンツの管理は一元的だし、端末の管理も楽だ。

トータルコストでみても、おそらくそっちの方が現場の負担は小さい。

端末やサーバーの物理的実体は更新され、コンテンツは時代と共に変わっていくだろうが、人間の先生と紙の教科書、ノート、レポート用紙という枠組みが長く続いたように、コンテンツの一元的な管理、運用のモデルとしては、息の長い形態になるかもしれない。

今は、きっと、その途上にあるんだろう。

コアなところは、教える中身であり、教える側のノウハウだからな。

そのうち、授業はAIが教えるようになって、生徒の人間的な悩みに対応するのが人間のセンセの仕事になるだろう。

成長過程というのは、いろいろ問題を抱えるしな。

そこを、生身の人間が如何にフォローするかというのが、コンピューター教育時代の課題だろう。

コンテンツを教授するのは、コンピューターが行う。

生身の人間でなければ解決できない部分だけを、センセがガッコで対応する。

ああ、もちろん、AIが対応の仕方は教えてくれるけどな・・・。

キーボード設定2017年05月04日 18:56

キーボード設定
キーボード設定


上海問屋で買った3つ折りのキーボード。

(Bluetooth接続 3つ折りワイヤレスキーボード:店頭在庫なし(昨日))
https://www.donya.jp/item/27326.html

時々、予期せぬ切断に見舞われるが、まあまあ快適な入力が行える。

昨日いった秋葉原では、既に在庫はなく、ネットで買ってくれと言われる。

タッチパッド付きのモデルも出たが、あまり長く置いてなかったところを見ると、不人気だったのかもしれない。

(Bluetooth接続 タッチパッド付き 3つ折りワイヤレスキーボード(914570):店頭在庫なし(昨日))
https://www.donya.jp/item/74363.html

ちょっとキーが少なくて、ファンクションで入れるキーが、プログラムに頻出する文字だったりするので嫌われたのかもしれない(「'」、「"」、「/」、「|」など)。

英語配列なんだが、今までウインドウズ10側の設定を変えずに使っていた(シンクパッド10)。

まあ、レストランでブログを打つくらいしか用がなかったので、それでもよかった。

最近、プログラミングを始めようとして、そのままではパイプが打ち込めなくて、その時だけソフトキーボードを立ち上げて打つという裏技(?)を駆使していたんだが、あまりに面倒くさいので、キーボードの設定を弄ることにした。

どーせ、すぐ忘れるので、備忘のために書いておく。

「設定」>「時刻と言語」>「地域と言語」と開いて、言語欄の「日本語 Windowsの表示言語」と書いてあるところをクリックすると「オプション」が選択できる。

「日本語」という画面が開くので、「ハードウェア キーボード レイアウト」の項目の「レイアウトを変更する」をクリックする。

別ウインドウで、「ハードウェア キーボード レイアウトの変更」が表示されるので、プルダウンメニューにあるキーボードを「英語キーボード(101/102キー)」を選んで、サインアウトする。

いきなりログアウトしてしまうので、作業中のアプリケーションは閉じてからの作業が好ましい。

このままだと、日本語入力と英語入力を切り替えるキーバインドが、「Alt」+「`or~」になっていて、死ぬほど押し辛いので、これを好みの組み合わせに換えてしまう。

一部、繰り返し書くことになるが、念のため。

「設定」>「時刻と言語」>「地域と言語」と開いて、言語欄の「日本語 Windowsの表示言語」と書いてあるところをクリックすると「オプション」が選択できる。

「日本語」という画面が開くので、「キーボード」の項目の「Microsoft IME 入力方式エディター」をクリックする。

「オプション」を押すと、一番下に「詳細設定を開く」とあるので、それを押す。

「Microsoft IME の詳細設定」という別ウインドウが開くので、「全般」タブの「編集操作」の項目で、変更をクリック。

「設定」という別ウインドウが開くので、表の左から2番目の項目の「入力/変換済み文字なし」から、「IME-オンオフ」を探して、その左側の「キー」に割り当てられている「全角/半角」をハイライトさせておく。

その状態で、表右下の「変更」をクリックすると、「キー設定」という別ウインドウが開くので、実際にキーを押してもいいし、一覧から選んでもいいが、選択して「OK」ボタンを押す。

大概は、何か他の用途で使われているだろうからつべこべ表示されるし、「OK」ボタンを押すと、「新規キー設定エラー」という別ウインドウが出るが、構わず「OK」ボタンを押す勇気が必要だな。

ここで安心すると、反映されないので、「設定」ウインドウの「OK」または適用ボタンを押すことが必要になる。

この時点で、キーバインドの変更は適用されている。

浮沈子の場合、「Ctrl」+「スペース」か、「Chift」+「スペース」か、まだ迷っているが、コントロールキーが左端にあって押し間違いが少ないことから、そっちにしている。

キー配列によっては、違う選択になるかも知れない。

他にも、やり方があるのかもしれないが、とにかくこれで割り当ては変更された。

ちなみに、エスケープキー(Vimで多用します)は「Fn」+「`or~」だが、「Ctrl」+「[or{」で代用できるので、それを使っている。

物理キーの配列によって、この辺りは変わってくるかと思われる。

キートップの表示通りに入力できることの快適さを考えれば、そして、どの機種でも同じ操作で日本語入力に切り替えることが出来るという便利さを考えれば、もっと早くやっておけばよかったと後悔している。

ともあれ、書道で言えばキーボードの使い勝手は筆を選ぶようなものだ。

糊で固めた穂先をほぐし、墨汁を付けて固めていく。

上の方は、糸で縛ったりして、ほぐれ過ぎを防いだりして、自分が使いやすいように微調整していったものだ(一応、初段です)。

使い込んだキーボードと入力システムは、手放せない財産のようなものだ。

浮沈子は、この3つ折り(タッチパッドなし)が気に入って、3台も買った。

1台は壊れてしまって、もう1台は愚弟に貸し出し中(早く返してくれ!)。

今日も21世紀の矢立として、バッグの中にひっそりと忍ばせる(ムフフ・・・)。

(矢立)
https://ja.wikipedia.org/wiki/%E7%9F%A2%E7%AB%8B

「筆筒に針や刃を仕込んだ物は護身用の隠し武器としても重宝された。」

いやいや、そんなものは仕込んでいない。

「行く春や鳥啼魚の目は泪」

5月になって、もはや春ではなく、初夏の風情だが、体調思わしくなく、家の中では寝たり座ったりの日常だ。

ダイビングのお誘いも断り、再開された大井町のフィットネスもサボり、養生に専念する。

近所のレストランで、ヨタ記事を書いたり、コンビニで買い物するくらいだ。

昨日の秋葉原行きは、失敗だったな。

大人しくしていればよかった。

というわけで、快適な入力環境は整ったが、肝心のpythonのお勉強は、なかなかはじまらないのだ・・・。

やる気を高めたい2017年05月05日 02:01

やる気を高めたい


(1. やる気を高めよう)
https://docs.python.jp/3/tutorial/appetite.html

パイソンのチュートリアルの初めの章は、ありがたい題名がついている。

別サイトの入門編を終わって、基礎編に進むと、内容はいきなりつまらなくなり、覚えることだけになって、これ以上進む気をなくさせる。

言語の習得というのは、何かモチベーションがなければ辛い作業だ。

「たくさんのテキストファイルで検索-置換操作を行いたい、大量の写真ファイルを込み入ったやりかたでリネームまたは整理したい」

「小さなカスタムデータベースや、何かに特化したGUIアプリケーション、シンプルなゲームを作りたい」

そんな需要はないのだ。

プロの開発者でもないしな。

「Pythonはそんなあなたのための言語です。」

つまり、対象ではないということになる。

ボケ防止に、道楽としてプログラミングが使えるかどうかを実証したいというのは、どうも不純な動機のようだ。

「それらの作業の幾つかは、Unix シェルスクリプトや Windows バッチファイルで書くこともできますが、シェルスクリプトはファイル操作やテキストデータの操作には向いているもののGUIアプリケーションやゲームにはむいていません。」

だからこそ、シェルスクリプトを学ぼうという気になったんだがな。

ファイル操作やテキストデータを簡単に処理して、「ほほう!」とか言いたいだけなのだ。

GUIなんて、ゼニティくらいでたくさん・・・。

「Pythonは簡単に利用でき、Windows、Mac OS X、そして Unix オペレーティングシステムで動作し、あなたの作業を素早く行う助けになるでしょう。」

そうだろうとも。

しかし、ウインドウズとリナックスの環境しかないしな。

それで十分ともいうが、どう使えばご利益があるのかが、いまいち分かり辛い。

「Python ではプログラムをモジュールに分割して他の Python プログラムで再利用できます。Python には膨大な標準モジュールが付属していて、プログラムを作る上での基盤として、あるいは Python プログラミングを学ぶためのサンプルとして利用できます。」

それって、どんな言語でも、それなりに実装しているんじゃないのかあ?。

他言語で書かれた部品を使って、メタ言語として書くことは、ベーシックの昔から行われている(ゲームとかでは、機械語埋め込んでたしな)。

構文の構造が、記述によって表されているので、読みやすい形になるというが、他言語でも、チュートリアルの記述はその点を考慮して書かれているので、学びやすいかどうかは何とも言えない。

「さて、皆さんはもう Python にワクワクして、もうちょっと詳しく調べてみたくなったはずです。」

うーん、そうかあ?。

このチュートリアルも、次ページからは同じような感じだ。

言語学習に向かない性格なのか。

今日は、やる気も起きない。

プログラム言語を効率的に学習するプログラムって、誰か書いてくんないかな・・・。

whiptailで気分転換2017年05月05日 09:06

whiptailで気分転換
whiptailで気分転換


気が乗らない時には、脇道にそれる。

一心不乱にパイソンなんてやってられない。

で、摘み残したドットインストールのシェルスクリプトのビデオを見る。

一応、マネして入力して見たりもするが、やはり、後半になればなるほどワケワカだな。

そういうもんだと、覚えるしかない。

応用が利くんだろうか?。

人様の書いたシェルスクリプトを見ながら、勉強するしかないだろう。

で、GUI環境で対話的な処理が出来るというゼニティ(Zenity)でもやろうかと、ちょろっと探してみたら、whiptailという、CUI環境で出来るやつがあるというじゃないの。

(Bash Shell Scripting/Whiptail)
https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail

なんか、バイオスとかの設定画面のような感じだが、これが味があっていい(そうかあ?)。

もう、こっちに決めた!。

画像は、BUWで出したものだが、ちょっと形が崩れている。

クリエーターズアップデイトで改善されるかどうかは分からない。

入力した結果によって、処理を振り分けるやり方も分かった。

ほほう・・・。

こういうのが、やる気を出させるんだよな。

銭てぃもいいが、ウィップテイル(トカゲの一種らしい)も、いい感じだ。

if (whiptail --clear --title test --yesno Are_you_ready? 0 0)
then
whiptail --clear --msgbox "Ok, let's go!" 0 0
else
whiptail --clear --msgbox "Oh..., I'm waiting." 0 0
fi

ちょっと改造して、結果に応じてウィップテイルの画面を返すようにした。

縦横のサイズは、0にしておくと、良きに計らってくれるが、ちゃんと指定した方がいいかも知れない。

if文は、真偽判定しているようだが、$?でちゃんと取った方がいいかも・・・。

ともかく、動くことが大事だな。

シェルスクリプトも、こういう例題を使ってくれると嬉しいんだがな。

テキストデータを上手く処理しても、面白くもなんともない。

いろいろ弄りながら、気分転換しよう・・・。

dialogなど2017年05月05日 22:11

dialogなど
dialogなど


whiptailには、カレンダーがない。

やっぱ、あれがないと、気分が出ないな。

(Bash Shell Scripting/Whiptail)
https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail

「From its README: whiptail is designed to be drop-in compatible with dialog(1), but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.」(READMEから:whiptailは、dialog(1)とのドロップイン互換性を持つように設計されていますが、tailbox、timebox、calendarboxなどのいくつかのダイアログボックスは実装されていません。)

つーことは、あれかあ、ダイアログとかいうのを弄れば、憧れの(!)カレンダーが表示できるのかあ?。

というわけで、早速BUWにアプトゲットインストールする。

(Bash display dialog boxes)
https://bash.cyberciti.biz/guide/Bash_display_dialog_boxes

「Box options:
--calendar <text> <height> <width> <day> <month> <year>
--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...
--dselect <directory> <height> <width>
--editbox <file> <height> <width>
--fselect <filepath> <height> <width>
--gauge <text> <height> <width> [<percent>]
--infobox <text> <height> <width>
--inputbox <text> <height> <width> [<init>]
--inputmenu <text> <height> <width> <menu height> <tag1> <item1>...
--menu <text> <height> <width> <menu height> <tag1> <item1>...
--msgbox <text> <height> <width>
--passwordbox <text> <height> <width> [<init>]
--pause <text> <height> <width> <seconds>
--progressbox <height> <width>
--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...
--tailbox <file> <height> <width>
--tailboxbg <file> <height> <width>
--textbox <file> <height> <width>
--timebox <text> <height> <width> <hour> <minute> <second>
--yesno <text> <height> <width>」

あるある・・・。

で、テキトーに表示させてみる。

dialog --calendar hoge 0 0

出た出た!。

こっちのがいいな。

引用したページから、何回か関連のページが見られる。

マニュアルもあった。

(dialog(1) - Linux man page:英語)
https://linux.die.net/man/1/dialog

(DIALOG(1):日本語)
http://www.yosbits.com/opensonar/rest/man/freebsd/man/ja/man1/dialog.1.html

「--calendar text height width day month year
calendar ボックスは、別々に調整可能なウィンドウに月、日と年を表示します。日、月または年の値が指定されていないか、または負であるなら、現在の日付に相当する値が使用されます。利用者は、左、上、右、下の矢印を使用してそれらのいずれかを増加するか、または減少させることができます。 1 月の日の配列の周りを移動するために vi スタイルの h、j、k と l を使用します。ウィンドウの間を移動するためにタブまたはバックタブを使用します。 0 として年が与えられるなら、現在の日付は、最初の値として使用されます。
終了時に、日付は、形式、日/月/年で印刷されます。 --date-format オプションを使用して形式を上書きすることができます。」

これを読んで、出力された年月日を、変数に取り込むことが出来ないかを考えた。

試行錯誤しても、良く分からない。

前に読んだwhiptailの記事になんか書いてあったような気がして、読み直してみた。

(第422回 whiptailでCUIをグラフィカルにする)
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0422?page=2

「シェルスクリプト内部でwhiptailを使う場合,その選択結果をコマンド置換を用いて変数に代入したいことがあるでしょう。」

「単純に標準エラー出力を標準出力にリダイレクトする方法だと,whiptailのUIまで変数に入ってしまいます。」

「そこで以下のコマンド(3>&1 1>&2 2>&3)では,標準出力と標準エラー出力を入れ替えています。」

「$ choise=$(whiptail --title "選ばれたのは" --menu "選ばれたのは?" 0 0 0 \
"綾鷹" "コカ・コーラ" "伊右衛門" "サントリー" "お〜いお茶" "伊藤園" "生茶" "キリンビバレッジ" \
3>&1 1>&2 2>&3) && echo "選ばれたのは「${choise}」でした。"」

ちょっと他の事もやっているので、ごちゃついている。

そういえば、他にもそんなおまじないが書いてあったような気がするな。

(Bash Shell Scripting/Whiptail:Input box)
https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail#Input_box

「COLOR=$(whiptail --inputbox "What is your favorite Color?" 8 78 Blue --title "Example Dialog" 3>&1 1>&2 2>&3)
# A trick to swap stdout and stderr.
(以下、略)」

「3>&1 1>&2 2>&3」の意味が分からなかったのだが、これでスッキリした(ホントは、まだ、良く分かっていません!)。

#!/bin/bash

HIDUKE=$(dialog --calendar hoge 0 0 3>&1 1>&2 2>&3)

if [ $? -eq 0 ]
then
echo "get " $HIDUKE
else
echo "no get"
fi

まあ、お稽古ということで。

シェルスクリプト内で日付をゲットしたわけだが、dd/mm/yyyyで出てくる。

ここから、日、月、年を取り出すには、どうしたらいいのか。

まあいい。

忘れていることが、多過ぎる。

今日は、BUWから、nkfコマンドを使って、改行コードを変更することにも成功した。

(【 ファイルの文字コードを変換する 】)
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231148/

BUWには、標準では入っていなかったので、アプトゲットインストールした。

nkf -s -Lw 変換元ファイル名 > 変換先ファイル名

無事に改行コードが入って、また一つ幸せになる。

dialogで取得した日付は、コマンドとして実行し、変数に取り込むと、コマンドライン上でも弄れる。

HIDUKE=$(dialog --calendar hoge 0 0 3>&1 1>&2 2>&3)

echo $HIDUKE

シェルスクリプト内部で弄るか、コマンドラインで弄るか。

まあ、どっちでもいいんですが。

その辺は、次回のお楽しみだな・・・。

(バッククォートの代替機能:追加)
http://shellscript.sunone.me/variable.html#バッククォートの代替機能

ちょっと癖のあるサイトだが(お前に言われたくない!)、非常に実践的で参考になる。