2020年6月30日火曜日

情報Ⅰ情報Ⅱについて軽く気持ちをまとめた

情報Ⅱの学習内容がついに公開され、政府の想定するプログラミング教育の指針が出揃いました。 そろそろきちんと理解しようと思ったので、理解のメモを残しておきます。

小学校

まずは小中学校はコードを書くことは求められていません。 つまりビジュアルプログラミングでも良く、楽しむ内容になっています。 高校からはコードを書いて行きますが、ビジュアルプログラミングに十分慣れていれば、高校の情報Ⅰは楽勝と感じるだろうと思います。 ただ選択科目の情報Ⅱはきちんとしたステップで学んでないと、少し危ないかな。

小学校では課外活動で「多角形を描く」「動かしてみる」などがお題として与えられていますが、ビジュアルプログラミングをすれば当たり前のようにクリアできます。 進みたい子はガンガン遊びながら進んでいける教育に、ぜひして欲しいものです。

中学校 (技術・家庭科)

中学生では電気や通信、ロボットを利用したプログラミングが推奨されていますが、言語は自由です。 Scratch、JavaScript、ドリトル、色々な事例が挙げられています。 情報Ⅰで外部装置、情報Ⅱでは NN、Webプログラミングに近いことを学ぶので、言語は自由でもそのへんを意識した内容にするのが良いと思います。


高校 - 情報Ⅰ (必修科目)

授業内容を要約すると以下になっています。
  1. ITの教養
  2. ビット列による表現、要件定義(ポンチ絵)
  3. AND/OR、四則演算、外部装置、プログラミング基礎
  4. ネットワーク・プロトコル、データ表現 (CSV, XML)
一昔前の子たちが大学1年生で習っていた内容を学びます。 ポンチ絵は必ず学ぶようですが、コードは書かないみたい。 3章の四則演算あたりからプログラミングを学ぶ。まあ王道とは思います。 外部装置として micro:bit を例に挙げて LED を光らせたりするのは、直感的で良いと思います。 if/else、配列、乱数、線形探索、二分探索、ソートを学び、簡単な関数の視覚化とシミュレーションもします。

4章は座学と Excel などを使ったデータの視覚化がメインの内容に見えますが、唐突にテキストマイニングが出てくるのはちょっと焦ります。 まあ、そういう技術もあるんだよ、くらいの感じでしょうか。 情報Ⅰの授業はほとんどが王道なので特に気になることはありません。 一番気になるのは情報Ⅱとの整合性です。 情報Ⅱを履修するには、四則演算などの初歩の初歩の知識だけでは不足するので、そこをどうするか。 データ表現を学ぶ時に HTML を軽く書けるようになっておいたほうが良いんじゃないかなあ。


高校 - 情報Ⅱ (選択科目)

学習活動を見ていると、情報Ⅱはコードが書けるのは当然の設計になっています。 その一方で極力書かせたくないという気持ちは凄く感じます。

パッと見では Python/R で分析、テストするために何かの言語は書ける必要があるようには見えます。 ただその先がわかりにくい。 2章ではシステムを作る方法がプロトタイプ作成ツールという言葉で書かれていて HTML/CSS などに限定したくない空気を感じる。 とは言え「プロトタイプ作成ツールでモックを作ろう」や「Webサイトに反映させる」とも書いてあり、作りはするようで、どうすんだこれ。 4章で GET/POST の例が挙がっているため、おそらく静的サイトを作ってみるで止まると思う。 ただ HTML/CSS はどこで学ぶんだ?

No code で作ることを意図してるなら、No code でできるよねという層と、そうじゃない事を知ってる層で、超えられない壁ができるので、そうならないようにしたい。 理解するためには、簡易的なコーディング→ No code が良いと思うな。 私は小さな Web アプリを例にして、HTML/CSS/JavaScript などで実際に動かすのが、一番わかりやすいように見える。 ただどこで学ぶのか問題がある。 情報Ⅱだけで学ぶのは厳しいように見えて、明らかに楽な情報Ⅰで学んで、情報Ⅱで形にするほうが自然なのではないか。

4章では動的サイトに近付いてきます。 GET/POST の説明には、普通は HTTP→Client/Server (なぜその構成か)→ Webサーバ → HTML/CSS/JavaScript (ここで使われる) → GET/POST という進行になるかと思います。 ここまで来るとプロトタイプ作成ツールという言葉ではさすがに扱いきれなくなってきてコードを書いている。 それなら最初からコードを書いたほうが良いような…。 Python で書いているけど、個人的には Node.js のほうがおすすめだなあ。まあ教える上で楽なのは Python だと思う。

授業内容は以下のようになっています。
  1. ITの教養
  2. 要件定義などの設計
  3. 情報とデータサイエンス
    1. 構造化 (JSON など)
    2. データサイエンス (蓄積→クレンジング→重回帰→主成分分析)
    3. 決定木 / NN
  4. 情報システムとプログラミング
    1. Client/Serer
    2. 通信方式の要件定義
    3. モジュール化 / テスト
    4. セキュリティ
  5. いろいろ

もう少し細かく見ると、3.1 は WebAPI を叩いて、データをどこかに保存できれば良いように見えます。 PDF にはエモいキーワードが散りばめられているけど、DB と名前を付けるほどの内容は学びません。

3.2. のデータサイエンスは割と鬼門に見えて、どこまでやる気を出すかが難しいです。 重回帰分析と主成分分析はもとは大学生の範囲だけど、どれだけ簡略化するか、どれだけきちんと説明するかで処置に困りそう。 寄与率でΣが出てくるけど、Σは高校2年なので、真面目に説明し始めるとカリキュラムがキリキリになるかも? そして過学習とか変数選択とか説明し始めたら完全に泥沼にハマって終わりがまったく見えなくなる気がします。

主成分分析にどれくらいやる気を出すべきか私はよくわかりませんが、3.3. の決定木 / NN まで一気に駆け抜けるイメージでやるのが良い感じでしょうか。 3.3. の NN は色々な事例ベースで学べて、かなり良いものになってると思う。 これを高校生のうちに学べるのは、本当に素晴らしいし、まともな教育を受けられなかった身としてはうらやましい。

4章の Client/Server、そしてセキュリティはガチにやるとキリがないけど、触りくらいのものです。 データサイエンスのところがコード寄りなのに対して、システム側はどう教えるのかが曖昧になっている。 最初読んだ時は、NN 周りがよくできていて良いかと思ったけど、システム周りは足並みが揃う気がしないので、大変かもと思い始めました。

情報処理技術者試験みたいな路線になりそうかなあ。そこには少し残念感がある。でも全体的には素晴らしい。

2020年6月21日日曜日

フリゲ紹介: QualiaNext-道を照らして-

QualiaNext-道を照らして- は、ADV と RPG が組み合わさったサイバー・スローライフ・RPG。 プレイ時間は 4~7時間とありますが、もう少し掛かったような気がします。 (タイトル画面はダウンロードしてお楽しみください)

とある辺境の地にある「光の家」でバイトに勤しむことになった主人公ライカの物語。 舞台は現代より技術の進んだ未来を想定している一方で、バイトの地はそんな世界とは少し隔絶された田舎のようです。 光の家で夏休みを満喫しながら、不思議な体験の正体を確かめることが目的になります (左下)。 草むしりをしたり、釣りをしたり、スイカ割りをしたり…まさに夏休み…という感じですが、色々ミニゲームを楽しめて面白い (右下)。 機械化の進んだ未来では、どのように感じるものなんでしょうね。



光の家での不思議な体験の調査が本編で、影のような存在と対峙することになります。 影はライカにしか見えず、他の人には電子ノイズとしてしか認識されていません。 数字に色が付いて見える人はよくいますが、確かに装着器具など色々考えると将来十分起き得ることかも知れませんね。

探索はシンプルなシンボルエンカウントです (左下)。サイバー感あってとても良い感じ。 影との戦闘は独自ビューで、雑魚戦でも歯ごたえがあります。 敵からの攻撃として光のようなものが飛んでくるので、それを右端の四角形のところで受け止めるとノーダメージにできます (右下)。 受け止めきれないとダメージを受けるのですが、私はかなり苦労しました。 特に最終盤はギリギリでしたが、緊張感があって面白かったです。



全体的に作りこみが凄いし、マッピングが凄く綺麗だなと思いました。 マップチップも全て手打ちのドットとのことで凄い (下)。



最近は世の中の技術が進歩したことで、未来を語るゲーム、特に ADV を作るのって大変と思いますが、 言葉の使い方とか、まとめ方とか、視点的なところとか、とても面白かった作品でした。 最近の技術の速度的に、近未来には十分起き得る内容と思います。

2020年6月19日金曜日

ブラウザ上のHTMLで編集したい場所を Vim で開く

ブラウザ上のHTMLで編集したい場所をエディタで開きたい時はよくあります。 特に面倒なのは、大きなテーブル要素を編集する時や、巨大な HTML を編集する時でしょうか。 HTML を開いて該当箇所を探すのが面倒です。

作ればいいじゃんと気付いたので、Vim で使えるものを作ってみました。

var node = document.querySelector('ここにCSS Selectorをコピペ').outerHTML;
var html = document.doctype + document.documentElement.outerHTML;
var pos = html.indexOf(node);
var arr = html.slice(0, pos).split("\n");
var col = arr[arr.length-1].length + 1;
console.log('cal cursor(' + arr.length + ', ' + col + ')');

使い方: ブラウザで Dev Tools を開き、編集したい要素の CSS セレクタを「Copy selector」で、クリップボードにコピーします。 コピーした CSS セレクタを上記のスクリプトにコピペし、Console 上で実行します。 すると「cal cursor(78, 5)」という、HTML ソースに対応したカーソル移動関数を出力してくれます。 Vim 上でこの関数を実行すれば、編集したい箇所にすぐ移動できます。


Chrome Extension で作ったり、Vim の channel を使えばもっと良いものができるかも知れないです。 ただ Chrome Extension だとクリップボード周りが無理気味に見えました。 Vim の channel は自分用サイトのデバッグなら可能でも、他人のサイト上で実行が難しそうに見えました。 汎用的に使えるのは、このコピペ実行かなと思ったので、共有します。

もっと簡単な実行方法あるのかなあ。

2020年6月18日木曜日

コスパの良いおすすめ知育パズル/ブロックまとめ

世の中には様々な知育教材があるけれど、パズル/ブロックは今でもとても良いものです。



少し難しいものになると大人でも解けないことが多くて「うーん意外だ…」と感じる経験が多々あります。 逆にできる子だと、小3くらいでも大人が解けない問題をサクサクと解ける。 落差が凄いんです。 不思議に思って大人側にも色々やってもらってわかったのですが、パズルが解けるかどうかは「頭の使い方の訓練の差」なのだろうと思います。 脳の使い方は3歳、6-7歳、10歳で決まると言われるけど、確かにあるのかも。

論理的思考をすると、少し難しいくらいのパズルはすぐにポイントがわかり、解法が浮かぶので、あっさり解けるんです。 同様に、大学までの数学や物理は、論理的に組み立てれば走破できる、パズルのようなものです。 難しさを感じる裏側には、思考の訓練の差が大きいのではないか。 将棋の藤井聡太七段も空間パズルに親しんでいたことで有名だけど、盤面をパズル的に解く力がとてつもなく強いと感じる。 パズルに親しむことは、論理的思考力が求められる今後の教育に、とてもマッチしていると思う。

色々試してみて「これはコスパが良い」と思っているパズル/ブロックをいくつか紹介してみます。 パズル/ブロックは凝りだすと値段が青天井 (5万円以上) なので、よくできていてコスパが良いと思っているものだけ。 ポイントとしてはパズルが苦手な子ほど「解こうとしない→触ってるだけ」になるので、「解く」ことが大事だと思います。

初心者向け

初歩の初歩としては、サクッと解けるジグソーパズルが定番です。 どれだけ早く解けるか競ってみたりすると良いかも。 ハマると青天井にお金が掛かるので、都道府県が使い回しやすい。 少し高くても良いなら公文のシリーズがわかりやすいのかな。



積み木系のスタートは何でも良いとは思いますが、3歳以下の子は「解く」よりはものまねから入ると思います。 ものまねしやすさで選ぶと、問題の用意されている図形キューブつみき、でしょうか。 自分で問題を作るなら Hape とかも面白そうです。



レゴも定番と言えば定番ですが、とにかく高いのが難点です。 代替品として安いのがアーテックブロックと LaQ です。 これもハマり始めると際限がないのですが、レゴよりずっと安い。 LaQ は算数的な問題集もあって、なかなか面白い。



小学生4年から英語が必修化され、低学年から英語を習う子が増えてますが、楽しく覚えられるゲームやグッと来る教材は少ないです。 今のところ良さそうと思ってるのはこれくらい。色々なゲームが今後増えてくれると嬉しいなあ。




初級者〜中級者向け

積み木系はどれだけ問題を用意できるかが重要です。 エジソンクラブのパズルは十分な問題数で初心者〜中級者までカバーでき、3歳〜12歳くらいまで十二分に楽しめる。 ここに掲載したパズル以外のパズルも、HP では販売されています。 最後のほうの問題は大人でも解けない人が結構いる。



世界的にはタングラムが有名で、ネット上にたくさん問題がある。 このあたりのパズルをクリアできるかどうかで、パズル脳や論理的思考ができているかがわかります。



ほどよく手続き処理能力を鍛えるには、ルービックキューブも定番とは言えそうです。 ただ1-2手読めればできるので、本格的に鍛えるには他のものが良いかな。




中級者向け

ここからはセンスがある人向けのパズルです。 最初にやってみたいのは詰将棋です。 永遠に楽しめる量があるし、先を読む力や手続き処理能力を鍛えられるので、なんだかんだ最強パズルではないか。 ただ先を読むという手続き処理は、かなり才能差があるみたいで、論理的思考力を事前に鍛えてないとできる子は少ないみたい。

少し考えてみるとすぐに理由は思い付き、小学生で3手先を読む授業がほぼないからでしょう。 ただとても重要な能力です。 いつも思うけど、将棋はプログラミングで必要な能力に近くて、プログラミングができる人はだいたい将棋もできる。 どうやって事前に鍛えるかは難しいけど、カードゲーム、五目並べ、オセロ、SRPG など簡単なものを色々遊んでるほうが良いのかもと思ってる。 囲碁の芝野虎丸名人もゲーム環境で育ったとことで、ゲームの多様性は様々な認識能力向上に繋がるように思います。

最初の一歩は1手詰で、「将棋1手詰入門ドリル」がバイブルですが、あまり手に入らない。 代わりに最近は1手詰の本がたくさん出ている。最近の子は藤井聡太本から始めることが多いのかな? 最近は動かし方の書いてある盤駒が出てきてるけど、私はプラ盤がおすすめ。



もう1つのおすすめは積み木234です。 積み木らしい組み立て能力で解ける最高難度の問題集がこれだと思ってます。 これ以上の問題になると、論理的思考力だけでは解けなくなる。 これを幼少期にクリアできる子はセンス抜群。 賢人パズルや立体パズルの発展問題とも言えるので、それほど得意ではない子は、より簡単な賢人パズルや立体パズルで練習する手もあるかも知れません。



タングラムは割と簡単なので、結構みんなクリアできます。 タングラムっぽいけど少し難しいパズルと言えば、鈴木NOBパズル。 旅行先の旅館によく置いてあるので、クリアした人もいるんじゃないでしょうか。 The-T → The-F → Cross → … とクリアするのが良いと言われています。 実はもっとたくさん種類がありますが、特に有名なのはこの 3 つです。 効能などを考えても、この3つくらいの解き方が明快なものが良いかと思います。




上級者向け

積み木234をクリアできるか、クリアできるくらい柔軟な思考力のある子におすすめできるのが、KATAMINO (またはペントミノ) です。 パズルが得意な子でもクリアは至難で、3歳〜99歳まで楽しめます。 このレベルになってくると論理的思考力だけでは無理で、センスと集中力の養成になってくる。 ポケット版もあるけど、普段楽しむなら通常版がおすすめ。




番外

藤井聡太七段が遊んでいたパズル (キュボロ) も紹介します。 うーん、お高いですねえ。レゴと同じくらいの値段です。 たぶんパズルにある程度慣れてからのほうが良い気がする。 ちなみに キュボロの前には積み木123をやっていたように見えますね。 パズルじゃないけど、愛用ぬいぐるみのしろたんはお安い!




他にも良いものが見つかったら、追記していこうと思います。

2020年6月8日月曜日

Lubuntu 18.04 並に Lubuntu 20.04 を使えるようにする

Lubuntu 20.04 は良いところと悪いところがいくつかあります。 私は以下のような長所と短所があると思ってる。
  • ○ Winキーでメニューが起動するようになった
  • ○ 上記からすぐアプリ検索できランチャーが不要になった
  • ○ ファイルマネージャの PCManFM が安定した
  • ○ ScreenGrab でキャプチャが撮りやすくなった
  • ○ F12 でドロップダウンターミナルが起動するようになった
  • × 便利なウィンドウ操作周りのショートカットキーが色々消えた

欠点より利点のほうが多いですね。そして欠点は以下のように設定で対応できます。



ショートカットキーの設定

まず重要なこととしては Winキーに「直接」付随するショートカットキーが、現時点では使えません。 つまり Win+→は駄目で、Win+Ctrl+→とかは OK なのですが、結果としてウィンドウ操作周りのショートカットキーが死滅しました。 私は「Win+→ で画面を右寄せ」などを多用していたので、これは凄く不満です。

今のとこ対策は ここが一番詳しい。 英語なのでまとめ直すと、18.04 と 20.04 の設定ファイルを見比べながら、ウィンドウ関連のショートカットキーを変える必要があります。
  • 18.04 の設定ファイル: ~/.config/openbox/lubuntu-rc.xml
  • 20.04 の設定ファイル: ~/.config/openbox/lxqt-rc.xml
  • 22.04 の設定ファイル: ~/.config/openbox/rc.xml
具体的には、~/.config/openbox/lubuntu-rc.xml にある以下のコードの、W-Right などの指定を別のショートカットキーに変更して、~/.config/openbox/lxqt-rc.xml に記載します。 私は W-Right → C-Right にしました。 右の Win キーなら変更しなくても動くのですが、右の Win キーって凄く押しにくい…。 設定し終わったら、openbox --reconfigure すれば、すぐに設定が反映されます。
  <!-- 
      # HalfLeftScreen
  -->
<keybind key="W-Left">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <height>100%</height>
    <width>50%</width>
  </action>
</keybind>
  <!-- 
      # HalfRightScreen
  -->
<keybind key="W-Right">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>-0</x>
    <y>0</y>
    <height>100%</height>
    <width>50%</width>
  </action>
</keybind>
  <!-- 
      # HalfUpperScreen
  -->
<keybind key="W-Up">        
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <width>100%</width>
    <height>50%</height>
  </action>
</keybind>
  <!-- 
      # HalfLowerScreen
  -->
<keybind key="W-Down">        
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>-0</y>
    <width>100%</width>
    <height>50%</height>
  </action>
</keybind>


Ctrl と CapsLock を入れ替える

あとは 18.04 でもやっていた一般設定 として、私は Ctrl と CapsLock を入れ替えています。 Ubuntuだとこの設定は簡単なのですが、Lubuntuではハマりがちです。 様々な設定方法があるようですが、 ~/.profileに以下を記述するのが最も簡単なように感じます。
# CapsLockをCtrlに変更
setxkbmap -option ctrl:nocaps
# # CapsLockとCtrlを入れ替える
# setxkbmap -option ctrl:swapcaps
# # CapsLockを元に戻す
# setxkbmap -option

Lubuntu 20.04 はこの設定をして、不満は一切なくなりました。

2020年6月1日月曜日

フリゲ紹介: 魔王スライムさまがんばる!

魔王スライムさまがんばる! は、PC/Android でプレイできる、かわいいマップ構築型のタワーディフェンス。



タワーディフェンスにも色々あるけど、マップ自体を自由に作れてしまうのが、このゲームの面白いところです。 最初は平凡なマップ (左下) から始まり、自分で罠やユニットの配置を考えて、敵を迎え撃ちます (右下)。 ユニットは遠距離型と近接型、回復型、分裂型、ボスキャラ型など、結構色々なバリエーションがあります。 基本は右下のように集中砲火できるようにすれば、序盤はサクサクいける。



ステージ4くらいからマップに穴場ができたりして面白くなります。 9ステージ目くらいから結構ギリギリの戦いになって白熱しました。 ストーリー (10ステージ) はすべてクリアしたけど、その後もチャレンジステージがたくさんある。

10ステージのクリアでも十分面白かったけど、今後の改善でもっと面白くなりそうな気がする。 穴場が増えたり、離れ小島が極端に優位になるステージがたくさんあると面白そう。

フリゲ紹介: 風来のチェルン

風来のチェルン は、パズル&ドラゴンズの二次創作作品で、風来のシレンによく似たローグライクゲーム。



私はあまり元ネタを知らないけど、パズドラのチェルンを操作して不思議のダンジョンをクリアしていきます。 ダンジョンクリア後にちょっとした会話などもある (左下)。 このゲーム独自のシステムについてヒント部屋 (右下) が用意されているので、わかりやすい。



ダンジョンは、序盤のほうは風来のシレンというよりはトルネコの大冒険くらいの難易度です (左下)。 序盤は 5層、7層、10層、15層…と割とサクサククリアできる階層数で探索をします。 またセーブは探索終了後のみなので、一発勝負になります。 装備品がなかなか出ないとキツイ時もあるけど、ちょうどいい難易度です。 ダンジョンごとに、仲間が一緒にダンジョンを潜ってくれる時もあったり、未鑑定アイテムがあったり、チャレンジモードが用意されていたり、色々な遊び方ができて良い。

装備品は、武器・防具・装飾の3つに切り替えて装備できるだけでなく、覚醒 (いわゆるエンチャント) が付いている。 武器として使うと強かったり、防具として使うと強かったりするので、よく吟味しながらプレイすることになる。 エンチャントもランクも鍛えられるので、結構長く使える。 低層でも装備品の名前がどれもめちゃ強そう…(右下)。レア装備はいったいどんな名前になるんだろう。



ちょうどこの手のゲームをプレイしたいと思っていたので良かった。サクサク楽しめます。