片づけの魔法

魔法の杖

これまでブログに『片づけの魔法』について何も書いていなかったと今気づきました。

Notion のところにも書いたとおり、アプリが一つあれば済むのではないかということを突き詰めた結果、あることに思い至りました。

以前からこんまり先生の「片づけの魔法」に取り組んでいたのですが、資料の片づけでつまずいて、そこから進めていません。なんとかしたいと思いつつ長い年月が過ぎました。そんなある日、こんまり先生の YouTube を見ました。こんまり先生曰く「日本の片づけを終わらせる!」。この話に感銘を受けました。

こんまり先生が「片づけの魔法」と名付けたのは、一度完璧に片づけを行うとリバウンドが起きないばかりか、不思議なことが起きるということだそうです。詳しくはこんまり先生のビデオをご覧ください。

そして、今回思ったことは「世界のストレージに片づけの魔法をかけたらどうなるか」。今世界中のストレージ(ハードディスクなどの補助記憶装置)には情報ともゴミともつかないものがぐじゃぐじゃに存在していると思います。これはどこに何をどのように格納するのかルールが定まっていないことが原因と考えられます。

ただ、この問題の難しいところは誰にとっての片づけかということです。言葉を変えると個人の片づけではなくグループでの片づけをどうすべきかという所がややこしい点です。それでも誰かがルールを決めることによってグループの片づけができるのであれば、取り組むに値することだと思います。

ある意味、Google や Notion はこのことに取り組み始めているのだと思います。

さて、私自身は部屋の資料や何台もあるパソコンのストレージ内の片づけを進めながら、世界のストレージの片づけにも思いを馳せていくことにします。

インポートやってみた

ココログ「たかはしのんき年月記」の記事がある程度たまってきたので、例によってブログ出版局に製本を依頼しました。2018年1月から2020年9月まで。

その際にエクスポートしたMovable Type形式のファイルを WordPress でインポートしてみました。Movable Type・TypePad インポートツールというプラグインをインストールしてインポートを実行。あっという間に終わりました。

サイトや画像へのリンクが旧ブログに貼られている点を修正する必要がありますが、実験としては成功と言えます。そもそもこの「のんきさんの年月記2」も実験的な取り組みなので、いずれは WordPress.com や Azure 上の CentOS 7 Linux サーバーの WordPress などに本格的な移行を行うかもしれません。今回はブログのみだったのですが、そのときはコメントやトラックバックも取り込む予定です。

BASIC (1) 再び BASIC

これまで、長いこと Small Basic を使ってきたのですが、過去、BASIC で書かれた本も結構あって、それをいちいち Small Basic に書き直すのも面倒なので、BASIC から Small Basic への変換プログラムを作ろうと思い立ちました。

この手のプログラムを書く場合、まず BASIC で書けば、そのプログラム自身を変換して Small Basic の変換プログラムを作れる訳です。ということで BASIC でのプログラミングをしばらく楽しもうと思います。

で、Windows で実行できる BASIC を探した結果、PC-BASIC が良かろうということで、まずは PC-BASIC 1.2.14 をインストールしました。

さて、今回 BASIC のコンバータを作りたいと思ったきっかけは、『数学とBASIC』という本です。残念ながら絶版になっているようです。

この本はbit誌の1982年7月号から12月号の連載をベースにしたもので、BASIC で代数を扱っています。コンピュータ自体、数学に支えられている面がありますが、その主体は代数の分野であるといっていいでしょう。コンピュータの特にソフトウェアを理解することは代数の一部として扱っていいのではないかと思っています。

コンバータを作り始める前に、まずちょっと BASIC を思い出す意味も込めて、この本にある(p7 の)問題を解いてみようと思います。

問題 A, B, C, D, P, Q, R, S, W, X, Y, Z は(数学でいう)変数であるとする.式
 (A + B + C + D) (P + Q + R + S) (W + X + Y + Z)
の括弧をはずした式を打ち出すプログラムを作れ.

(つづく)

関連項目

本になった私のブログ 4

約4年ぶりにブログを本にしました。今回は2014年12月30日から2018年1月31日までが対象で4冊目です。印刷は前回と同じブログ出版局にお願いしました。
Blog4
改めて1冊目からざっと目を通してみました。
まず、結構書いた内容を忘れています。
それから、印刷物だと見つけやすいのか、誤字やおかしな文章を見つけました。ブログ上では修正しました。
今年の分は新たな連載も始めたので次回に回しました。

C# (4) ここからどう進めるか

リポジトリの最新版をローカルでビルドできるようになりました。

ここからどう進めていけばいいでしょうか。しばらく Small Basic Online をいろいろと動かしてみるのがいいかもしれません。どの程度動いているのか肌で感じるところから始めるのがいいかもしれません。それで見つかった問題点は Issues に登録していけば貢献になります。

テスト用のプログラムを作ったり、過去の Small Basic Desktop 用のプログラムを動かしてみたり、いろいろやり方はあると思います。そこで、私の場合は日本で出版された Small Basic の市販本を順番に試してみようかと思います。まず、最も最近発売された『カンタン。タノシイ。カッコイイ。小学生からのプログラミング Small Basicで遊ぼう!!』からチャレンジしてみます。

この本は4つのミッションで構成されているのですが、2つのミッションを終えたところで、以下の問題点が見つかり Issues にレポートしました。

・#44 GraphicsWindow.DrawEllipse が黒く塗りつぶされる
・#45 テキストのY座標が上部ではなくベースラインになっている
・#46 漢字などの文字列が文法エラーになる
・#47 漢字などの変数名、サブルーチン名、ラベル名が文法エラーになる

他にもブラウザやOSによって微妙に動きが違ってくるようです。まだ現象がはっきりしていないのでレポートできていないのですが、TextWindow での入力で Enter が効かなくなったり、出力の文字が重なったりするのを見ました。Small Basic Online は macOS でも動きます。まだ試していないですが、Visual Studio も macOS で動かせばビルドもできそうです。スマホでも動くのですが、入力がうまくいかない印象です。

Small Basic Online はブラウザ上で動くので、動作確認範囲も広く、より多くの方の協力が必要だと思いました。

一方でリポジトリのソースを少しずつ眺めるようにし始めたところです。全く知らないものにチャレンジするとき、まず慣れていくことが第一歩になると思います。全体の構成を把握したり、すでに修正された部分の差分を読んでみるのも理解につながっていきます。

それから、この連載の目次を作りましたのでご活用ください。

(つづく)

 

C# (1) C# について

C# について新たな連載を始めようと思います。新しい Small Basic Online が C# ベースで作られていて、私がこの開発に参加する予定だからです。

今回はまず C# というプログラミング言語について私の知っていることをお伝えします。

インタラクティブに C# を学ぶ教材を Xamarin Workbooks (ザマリン ワークブックス)で簡単に作ることができます。このことについては以前このブログに書きました。

C# の文法は C, Java, JavaScript と似ています。これらの言語をすでに知っている方なら基本的な文法は覚えやすいと思います。

C# は主にマイクロソフトの .NET Framework (ドットネット フレームワーク)上で動作します。これは Java に似たシステムで、コンパイルすると中間言語に翻訳され、それが実行時に解釈されてシステムのライブラリを呼び出します。Small Basic も .NET 上で動作する言語で C# はその兄貴分と言えます。

C# については多くの本が出版されています。私が購入したのはオライリー発行の『プログラミング C# 第5版』です。C# の魅力についてさまざまな実例が示されています。現在はすでに第7版が出ていますのでそちらがオススメです。

インターネット上にはマイクロソフトのドキュメントサイトの「C# のガイド」に開発者向け、ITプロフェッショナル向けなどの情報がまとめられています。

Small Basic Desktop はソースは非公開ながら C# で書かれており、Extension (エクステンション:拡張機能)も C# で書くことが公式ブログなどで紹介されています。英語ですが TechNet Wiki の記事 として Extension の作り方が詳しく載っています。私自身、まだ Extension 作りにチャレンジしていないのですが、その前にこの記事を日本語訳しておきたいと思います。

C# は Windows の開発に広く使われており、さまざまなライブラリが整備されています。Small Basic Online のサーバサイドでは ASP.NET が利用され、エディターは Blazor (ブレイザー)というフレームワークが使われています。

C# の開発環境としては Visual Studio というマイクロソフトの統合開発環境 (IDE: Integrated Development Environment) が適しているでしょう。Visual Studio については次回以降で詳しく説明していきたいと思います。

(つづく)

TypeScript (4) Git と GitHub

今回はソースコードのバージョンを管理するツール Git と GitHub について説明します。

Git はオープンなオペレーティングシステム Linux の生みの親であるリーナス・トーバルズ氏が開発したバージョン管理システムです。リポジトリと呼ばれるアーカイブにソースコードの差分を登録し、変更箇所を比較したり、元の版に戻したりすることができます。一連の変更に対するコメントも残せます。

Git はもともとはコマンド形式でしたが、今はさまざまなツールから呼び出せるようになっています。このシリーズでは次回 Visual Studio Code の中から使ってみる予定です。

Git ではローカルフォルダにあるソースコードから管理対象を選んでローカルのリポジトリにある時点のソースコードを登録します。その際にいくつかの手順があります。ざっくり言うと、まずステージングエリアに変更したソースを追加します。この状態で、リポジトリにある以前の版と今回ローカルに編集した版の差分を確認できます。関連するソースコードをステージングしたところで、コミットというコマンドによりリポジトリに差分情報を書き込みます。

そして、GitHub というツールはオンライン上でリポジトリを管理するシステムで、これにより世界中の人たちがソースコードのさまざまなバージョンを共有できるようになりました。オープンソースを支えているシステムだと言えるのではないでしょうか。

最近、たまたま本屋さんで『いちばんやさしい Git & GitHub の教本』という本を見かけたので購入しました。イラスト入りで Git や GitHub のちょっとややこしい手順が分かりやすく解説されているほか、Visual Studio Code についても触れられているので、ホームページのソースを管理したい方にもオススメです。

この本にも詳しく書いてありますが、Git は https://git-scm.com/ からダウンロードしインストールできます。GitHub は https://github.com/ でアカウントを登録して利用します。ちなみに私のアカウントは https://github.com/nonkit です。すでに Small Basic Online v1.0 をフォークという機能で複製したものが、https://github.com/nonkit/SmallBasic-Online です。

今回の Git と GitHub についての説明はここまでとします。

さて、ここで読者のみなさまにお詫びがあります。実は上記の Small Basic Online v1.0 は全面的な方針の変更があり、TypeScript ベースではなく、C# ベースで開発されることになりました。したがって、この連載も見直しをせざるを得ない状況となりました。

そこで、C# ベースの Small Basic Online については新たな連載を始めます。この連載では TypeScript ベースの Small Basic Online で多少の修正をして動作確認するところまでをあと何回かに掲載してひとまず終了したいと思います。新しいコードベースでも一部 TypeScript が使われているので、その話をこちらにまたちょこっと書くかもしれません。

とはいえ、今回の Git / GitHub や次回予定の Visual Studio Code などは知っていて損のない情報だと思いますで、引き続き読んでいただけると嬉しいです。

(つづく)

これからの情報教育に関するまとめ

迷路

これまでの日本での情報教育は情報活用に重点を置かれていましたが、各国では単なるICTリテラシー教育から脱却する動きがあります。特に米国で「計算論的思考 (Computational Thinking)」を教えようという動きがあり、そこで何を教えるべきなのか、その方向性を示す情報を集めてみました。


情報教育の方向性に関する情報をまとめてみました。単にPCの使い方でもプログラミングでもない、読み書きソロバンの次に必要な「計算論的思考」とは何なのかに迫りたいと思います。

計算論的思考とは

計算論的思考 (computational thinking) は、カーネギーメロン大学のジャネット・ウィング教授の提唱した言葉で、以下のリンクに原文とその訳があります。一言でいうと「コンピュータ科学者のように考える方法」という意味とのことで、なんとなく分かるのですが、専門用語が多く、本質的なところがはっきりしないと思いました。今年から始まった文部科学省の「プログラミング的思考」もここが源流だと思うのですが、やはりしっくり来ないと思っていました。今、1980年に出版されたシーモア・パパート教授の「マインドストーム」を読んで、ようやく何を目指しているのかが見えてきました。

何を学ぶのか

「計算論的思考」「プログラミング的思考」で何を学ぶのか、ということについて私なりにまとめてみました。

・コンピュータを通して、数学、物理、言語などの仮想的な世界を体験すること。
・学び手が自分の意志でコンピュータに命令を与え、何が起こるのか試行錯誤すること。
・自分なりの手順を考えて体験すること。
・複雑さの構造を分析すること。
・問題を発見すること。誤りの真の原因を探ること。
・思考そのもの、学習そのものについて体験しながら学ぶこと。
・何のために学んでいるのか自分で納得すること。

アンプラグドや「ルビィのぼうけん」のようにコンピュータを使わないでも学べますが、プログラミングを一度体験してみることをお奨めしたいです。子どもが遊びに夢中になって、工夫したり、新しい遊びを考えたりする状況を、科学・言葉・思考などを学ぶ現場で再現しようということであり、これは壮大な実験なのではないかと思います。

2020年について

2020年から小学校でもプログラミング教育が必修となりました。これまで段階的に情報教育が進められてきましたが、ようやく本格的な取り組みが開始されることになります。先生方の負担が大きくなるということは容易に想像でき、私のようなIT業界のOBが相当数いるはずなので、うまく活用されるといいなぁと思っています。

それから、日本のプログラミング教育は新たな教科を設けるのではなく、従来の教科の中に組み入れることになったようです。そういう意味では「情報教育」というより「教育」全体の取り組みと理解したほうがいいのかもしれません。

2021年について

2021年からGIGAスクール構想が前倒しとなり、小学校に1人1台のデバイス(iPad や Chromebook)が配布されたところも多いと思います。私は東京都のTEPRO(ティープロ)にボランティアとして登録し、小学校のお手伝いをすることになりました。

情報教育に関するリンク

Computational Thinking – 計算論的思考
Jeannette M. Wing(Microsoft Research and Carnegie Mellon University)著、中島秀之(公立はこだて未来大学)訳

Center for Computational Thinking, Carnegie Mellon
カーネギーメロン大学のコンピューテーショナル・シンキング(計算論的思考)センターの論文等(英語)

マインドストーム―子供、コンピューター、そして強力なアイデア | シーモア パパート, Papert, Seymour, 貴世子, 奥村 |本 | 通販 | Amazon
この本が出版される1980年までにプログラミング言語 LOGO を使って子どもたちと接したことが書かれていて、今まさにプログラミング的思考の学習方法をどうすべきかという示唆に富んだ本だと思います。

テキシコー [総合 小学校3・4・5・6年生、中・高]|NHK for School
プログラミング的思考を育むNHK総合の番組。Eテレじゃないんだ。

文部科学省作成「小学校プログラミング教育に関する研修教材」について | 小学校を中心としたプログラミング教育ポータル
小学校プログラミング教育の概要や Scratch や Viscuit の教材(ビデオ)を見ることができます。

数学ガールの秘密ノート/ビットとバイナリー | 結城 浩 |本 | 通販 | Amazon
結城先生の数学ガールシリーズの中でもコンピュータの基礎と数学を橋渡ししてくれるおすすめの一冊です。

小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ):文部科学省
小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議(長っ)の議論取りまとめ。この中では「プログラミング的思考」という言葉が使われています。

CANVASのとりくみ | CANVAS | 遊びと学びのヒミツ基地
NPO法人 CANVAS のとりくみ。また直接リンクできないのですが「CANVAS について」の「趣旨と背景」のページには CANVAS のビジョンが語られています。

プログラミング教育Blog
一般社団法人みんなのコードの代表 利根川裕太さんによるプログラミング教育に関するブログです。

ルビィのぼうけん こんにちは! プログラミング | リンダ・リウカス, 鳥井 雪 | 本 | Amazon.co.jp
子どもたちがプログラミング言語を用いずに「プログラマー的思考法」の基礎を学べる絵本。鳥井雪さんの訳では Computational Thinking は「プログラマー的思考法」と訳されています。

コンピュータサイエンスアンプラグド
ニュージーランドで開発されたコンピュータを使わずに情報科学を教えるための学習法。情報論的思考を学ぶにはむしろ実際のモノやデキゴトの体験が重要かもしれません。

情報処理 2016年04月号 | 本 | Amazon.co.jp
情報処理学会誌「情報処理」2016年4月号:特集 プログラミング入門をどうするか

教育ビジョン2011「誰もが情報技術に主体的に向き合う社会の実現をめざして」 -情報処理学会
2011年の情報処理学会の教育ビジョン

情報教育リンク集 – 情報教育Wiki
三重大学の教育情報に関するリンク集。大学に閉じたWikiなのかもしれないが、開かれたWikiであることを期待して。

Amazon.co.jp: パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ): 江渡 浩一郎: 本
Wiki の歴史について書かれた本です。コンピューティングの歴史とも言えるかもしれません。

神奈川の支援教育関連資料 – 神奈川県ホームページ
神奈川県の支援教育関連資料。支援を必要とする子どもたちへの細やかな教育をすべての子どもたちへ展開していくという神奈川県の「支援教育」の視点は、情報教育にも欠かせないのではないか。