kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

「13歳の娘に語る ガロアの数学」 金重明

今ウチの娘は歴史系の本にいちばん興味がありまして
そっち系もどんどん読んでほしいんですけど
数学とかプログラミングとかにも興味を持ってほしいなあと
そうすれば共通の話題ができるし

それに数学とかプログラミングとかの考え方は大事だと思ってます
数学とプログラミングは似てるようで違うところもあるし
その話はまた今度

でも小3に読ませる数学の本ってなかなかないんですよ
そりゃそうかって話ではあるんですが
学校のカリキュラムにべったりでおまけに小学○年生って書いてあったり

ウチの娘は妙に几帳面なところがあって、小学4年生って書いてあったら
小学校3年のうちは読んじゃいけない意識みたいなのがあるみたいなんですよね
そこまだ学校で習ってない!とか

文字を読む力は足りてると思うんですがさすがに数学のテキストみたいなのだと
見向きもしないし
何年生とか関係なしに、もうちょっと先へ進んでみようかな?と
思わせるような本はないものかと

で、図書館でいろいろ眺めてたら見つかったのがこの本というわけです
数学ガールは揃えてるんでガロア編も持ってるんですけど
あんまり理解しないまま置いてあるし、自分の勉強にもよさそうだなと

前置き長!

どんな本かというと13歳の娘にガロア理論を語る話なんですが

本当は数学者も,普通の数学書にあるように,定理→証明→定理→証明の繰り返しによって数学を勉強しているわけではない,と私は思っている。(略)しかし数学者というのは皆「いい格好しい」なのである。いったん問題を解決してしまうと,泥沼の中を這いずりまわった忌まわしい過去はキレイにぬぐい去り,論文には美しくエレガントな解放や証明だけを記す。数学書を書く場合でも,このスタイルそのままなのだ。

 と文句を言っているだけあって、泥臭く具体例で計算してくれます
根の入れ替えで実際に方程式を解いてみたりとか何度もやってくれるので
抽象的な話もイメージがついてきます

ああこの人は数学の専門家じゃないけどちゃんと自分で試して
理解したんだなあということが伝わってきます

そのせいかところどころおかしい話もでてきますけどね
群に単位元が存在することを証明せよ、とか
いやそれ公理ですから
でもその証明を読むと一瞬納得しそうになったり
ちょっと親近感が湧きます

だいたいあらすじは見えてきたと思うので(図書館に返さなきゃいけないし)
あとは数学ガールで確認するかな

ところで13歳の娘さん
父親の数学話に延々付き合っているというだけでもう
実在が疑われるレベルですがいかがでしょうか
ウチの娘もそうなってくれるかなあ

今読めとは言わないけど何年かしたら読んでくれるといいなあ
数学史的な話にもけっこうなボリュームが割かれてるから
そういうところがきっかけになってくれるといいなあ
とりあえず買わないとだな

 

達成!

子供のゲーム

子供のゲームなんですけどね
まあそんなにうるさくはいいたくないです
自分もゲームは好きなんで

でもあんまりそればっかりになるのも困ります
ほんとゲームって楽しくなるようにできてるんで

アイカツフォンとやらのしょーもなさそうなゲームを延々とやってるのを見て
ちょっとこれはマズいと思い
やるならもうちょっとマトモなゲームやれと思ってiPadスクフェス入れました

もう1年半くらい前ですかね
最初はヘタクソだったんですが今はもう主戦場はMASTERです
あんまりすばしこいタイプじゃないんですが、やっぱり子供は上達しますね
私もあんまりすばしこいタイプじゃないしもう年なので今では子供のほうが上手です

スクフェス入れたのは、アイドル系で子供が食いつきそうなのと
無料で十分楽しめるところ、あと重視したのは自分が上達するゲームであること
カードゲーム的要素もありますけど

何を言ってるのかというと、かけた時間をパラメータに変換するようなゲームは
避けたいってことです
何時間かかけて経験値を貯めてレベルを上げるとかしても、強くなったのは
ゲームの中のキャラクターだけで自分が成長してるわけじゃないですからね

ていうのは、自分自身が延々とスライム倒してるだけで楽しくなってしまう人で
しかも娘は自分の性格を多分に反映している模様なので

RPGでもストーリー楽しんでる分には読書や映画と同じようなものだと
思うんですが経験値稼ぎが楽しくなりだすとヤバそうです

スクフェスであれば、やった分は自分もうまくなってますから
まあシューティングだろうがパズルだろうが自分がうまくなるなら
なんでもいいんですけど
音ゲーは楽器だと解釈する余地がないでもないし
ピアノがいいならスクフェスだって悪くはないでしょという

あとは条件と制限時間を決めてます
ルールなしで親の気分次第で「今はダメ」とか「もうやめなさい」とか言われたら
子供も困ると思うんで

勉強が終わったら15分
ちょっと短いように思うかもしれませんがこれはスクフェスだけの時間
あとDSもやったりしてます
勉強が終わったら、っていうゲームをエサにするようなやり方はどうなの、って
ちょっと思ったこともありますがその話はまた今度

あとは、あんまりありそうにないけどもしかしてこの子はゲームして
生きていくべき人間だという可能性もないとは言い切れないので

ほんとにゲームが好きで好きでしかたなくて
将来はゲームで生きていきたい、とかそういうことならいくらやってもいいよ、
でもゲームで生きていこうと思ったら、きっとゲームだけじゃなくていろんなこと
勉強したろ考えたりしていかないといけないよ、それにゲームもただ楽しむだけ
じゃなくて課題を持って練習する感じにしていかないといけないと思うし、
真剣にゲームしてなかったらパパ厳しくするよ、みたいな話をしてたりします

それで子供の方から何か言ってきたら考えようかな、くらいの感じ

 

達成!

スマホから書く練習

基本的にはPC・スマホは夜10時まで縛りをかけているので家で書こうとすると書けない言い訳になりかねない

だからスマホからも書けるようにしておこう

 

達成!

気合は入れない

小さな習慣なんだからがんばろうとしない

markdownで書こうとか
下書きしようとか
推敲しようとか
Amazonのリンクを貼ろうとか
できあがった記事をほかに保存しておこうとか

もちろんやってもいいけど

あとから更新もOKにしよう

「1行書く」以外のことはできるだけ条件から外そう
そうすればスマホからも更新できるし

Twitterでのshareもしたいときだけすればいいや

達成!

「小さな習慣」スティーブン・ガイズ

「小さな習慣」という本がありまして
この間本屋でふと見かけて買いました

目標:1日1行ブログを書く

達成!

 

ととりあえず達成しておけば、あとは「おまけ」でもっとやるようになる
てわけです

なんかこれなら行けるんじゃないかと思って始めてみました
実はほかにも3つ始めてまして1週間と少し経ちました

・筋トレ(1日1回以上)
・勉強(1日1回ノートを開く)
・プログラミング(の勉強)(1日1回IDEを起動する)

「ひとつの習慣を身につけるには66日くらいかかる。その間ひとつの
習慣しか増やせないっていうのはつらいよね?4つくらいまでなら
いいよ?」と書いてあるのでこれくらいにしなければ

英語とか瞑想とかも入れたいんだけど
増やしすぎて実行できなくなっては本末転倒
(目標を小さくする代わりに実行については厳しい)
この4つから外れたものはとりあえずは目標すら立てず、
ちょっとだけ行動を取ればおまけがついてくる原理だけ活用しようと思います

66日続くかな!

(妄想)「ならば」の教え方

数学ガール ゲーデル不完全性定理」で「僕」がユーリに「ならば」を教える場面があります

「ねえ、馬鹿にしてない?たとえば一番上の行は《Aが偽で、Bが偽だったら、A⇛Bは真》という意味でしょ」

うんうん
そこで「僕」が真理値表を使って教えてあげるんだけれども
どうもユーリはしぶしぶ納得、といった感じ
どうしてユーリに「わかった!」と言わせるまで書いてないんだろう

自分ならこうかなあ(おこがましMAX


ん?ああ「AならばB」ね
ちょっとわかりづらいよね
自分も最初意味わかんなかったよ
真理値表で書くとこうだね

A B AならばB

Aが真ならば、のほうはいいとして、偽ならば、ってほうがわかりづらいんだよね
でもいろいろ例を考えてみたら、どういうことかわかったよ

まずタネ明かししちゃうね
数学のひとは簡潔に書くのが好きだから「AならばB」とか「A⇛B」とか書いちゃうけど
すこし言葉を補ってみるよ
「AならばB」っていうのは「もしAが真ならばB」ってことだよね
Aが偽のときについては何も言ってないね
何も言ってないけど実はこういうことなんだよ

もしAが真ならばB
そうでなければ (Bが何だろうと気にしないで)真

どうだろう?
まだピンとこないかな?
そうだろうね

じゃあ、例を挙げて考えてみよう
「(Bが何だろうと気にしないで)真」の意味がわかると思うよ

じゃあまず、「x>3ならばx+2>3」っていうのを考えてみて
これは真?偽?
もちろん真だよね

この式は「xがいくつのときでも」成り立ってほしいと思うんだけどどうかな?
そうだよね

じゃあxに具体的な数字を入れてみるよ
たとえばx=4ならx+2=6>3で成り立つね
つまり真

これを「AならばB」と見てみよう
つまり、Aがx>3で、Bがx+2>3ってこと
x=4のときで考えると、Aは真、Bも真、「AならばB」も真になる
さっきの真理値表のとおりだね

今度は、x=0のときを考えてみよう
Aは偽、Bも偽だね
さてさっき、この式は「xがいくつのときでも」成り立ってほしい、って話したよね
つまりx=0のときでも「x>3ならばx+2>3」は真であってほしい、ってことだ
ということは
Aが偽、Bも偽のときも「AならばB」が真と決めたほうが都合がいいんだね

そんな都合で決めちゃっていいのかって?
それはどっちかというと反対だね
考えるやすくて便利なようにいろんな記号や考え方を作っちゃうのが数学では大事なんだよ

同じようなことだけど、つぎにx=2のときを考えてみよう
今度はAは偽だけどBは真だね
同じように考えて、Aが偽でBは真っていうときも「AならばB」は真とするのが自然だ

どうだろう?
Aが偽のとき、っていうのがイメージしづらかったと思うんだけど
具体的な例で考えてみたらイメージがつかめたんじゃないかな?

雰囲気で言っちゃうと
Aが偽ならBのことなんか気にしない(気にしないで真にしちゃう)
ってことなんだね

「AならばB」とまったく同じ意味を持つ式で
「AでないかまたはB」っていうのがある
こっちのほうが「Aが偽ならBのことなんか気にしない」っていう雰囲気が出てるかもね
同じ意味かどうかは真理値表書いてみればわかるから試してみて



わかった!と言ってもらえるかなあ

「Intro to App Development with Swift」

iBookに「Intro to App Development with Swift」という本があります
日本語版は「Swiftによるアプリケーション開発:入門編」です

Appleが自ら書いたSwiftによるiOSアプリ開発の入門書です
まったくプログラミングしたことのない中学生あたりがターゲットだと思われます

が、ただのプログラミング入門ではありません
やってることは簡単だけど教えようとしていることはけっこうまじめ

各章についてる「アプリ開発日誌」っていうコーナーを読むと
アプリ開発者の育成に対する本気度を感じます
製品をどうやって売ろうか、と思って考える範囲がそこまで広いことに驚き

日本語版も出たことだし無料ですのですぐ見てみることができます
ただし要Mac・要Xcode

さらに下の年齢層にはiPadアプリのSwift Playgroundがいいかも
こちらも日本語になりました
娘といっしょにちょっとやってみましたがなかなか食いつきがいいです
コードはやっぱり英語なんでちょっと親のサポートが必要な感じ
ところどころ関数名を入力するところがあって特に

#下の年齢層から始められるというだけで、上の年齢層にはつまらないと
#いうことはないかと

まじめ・本気を感じるなーってあたりのメモです
英語の方を読んでるので日本語版とは用語が合わないかも

内容 アプリ開発日誌
はじめに
  • テクノロジーは言語を持ち、それはコードと呼ばれる
  • コーディングは欠くことのできないスキルであり、創造的に問題を解決するのに役立つ
  • 誰にでも世界を変える何かを作る機会がある
  • アプリ開発日誌を書こう
  • この本を読み終わる頃にはあなたの作りたいアプリのプロトタイプができているはず
Lesson 1 Playground Basics
  • 今使っているアプリについて、どうしてそれを使っているのか考えてみよう
Lesson 2 Naming and Identifiers
  • プログラマーは問題を解決するために使える道具はなんでも使う
  • 定数
  • 上手に名前をつけることが大事
  • こんなアプリがあったらいいな、というリストを作ってみよう
  • 馬鹿げたアイデアでも書いておこう
  • 何度も見直そう
Lesson 3 Strings  
  • あなたが作ったアプリを使うのは誰?
  • App Storeを見て、どんな人向けのアプリなのか考えてみよう
Lesson 4 Hello, World!
  • 言語を学ぶときは世界にあいさつするのが伝統の儀式
  • ログはプログラムの動作を記録するもの
  • 「コンソール」アプリでほかのアプリが出力しているログを見てみよう
  • よいUXにはよいUIが必要
  • あなたの好きなアプリのUIについて考えてみよう
Lesson 5 First App
  • iOSアプリを作ってみる
  • Lesson 2でつくったリストを見直してみよう
  • どんな目的で、どんな問題を解決する?
  • アプリはInnovativeでDisruptiveでないといけない
Lesson 6 Functions
  • 関数はプログラムを形作るブロック
  • 複雑なことを単純に参照できるようにすることを抽象化という
  • プログラマーは同じことを繰り返し書かない
  • プログラマーは仕事のリストを短い複数のリストに分割する
  • 意味がある最小のかたまりを考える
  • 関数が何をするかわかっていれば、どうやってそれを行うかは知らなくてもよくなる
  • 共通の仕事を関数にしておけば、関数を修正するだけですべての呼び出しに反映される
  • アプリ宣言を書いてみよう
  • 私のアプリは○○します、なぜなら○○だからです
Lesson 7 Boogiebot
  • ある目的を果たすために誰かが作ってくれた関数の集まりをAPIという
  • 実行するステップを定めたものをアルゴリズムという
  • iPhoneiPadにはいろんな機能があるから、創造的な使い方を考えよう
  • Apple Developerのウェブサイトで調べてみよう
Lesson 8 Constants and Variables
  • 変数
  • 名前には、値が変わらないものと変わるものがある
  • 値が変わらないものは定数にしておけば安全
  • 今度は、アプリの機能を考えつくだけ挙げてみよう
  • 変なアイデアだと思っても全部書いておこう
Lesson 9 Types
  • 型をうまくつかうとプログラムの読み書きが容易になる
  • App Storeで似たアプリを探してみよう
  • 似たアプリのうちよいものを観察したり、レビューを読んだりしてヒントを探そう
Lesson 10 Parameters and Results
  • 複雑さを隠せることが関数のひとつの利点
  • Swiftでは、関数の名前はセンテンスになるようにつけることになっている
  • Human Interface Guidelineを読んで、アプリのUIについて考えてみよう
  • Keep it simple.
  • Be consistent.
Lesson 11 Making Decisions
  • if(やっと!)
  • 複雑な条件は関数にして名前をつけると理解しやすくなる
  • 第一印象は大事
  • どんなにすばらしいアプリも、アイコンがダサいとダウンロードしてもらえない
  • 起動したらログイン画面など出さずに即やりたいことができるように
  • はじめてのユーザにはチュートリアルでアプリのクールなところを見せる
Lesson 12 Instances, Methods and Properties
  • 型がメソッドとプロパティをまとめて複雑さを分割してくれる
  • ドキュメントを探して理解することはもっとも重要な技術のひとつ
  • あなたが考えたアプリの画面をいくつかノートに描いてみよう
  • 最初の画面は?どんなボタンが見えている?アイコンは?
  • やりたいことにたどりつくまでに何タップ必要?
  • 説明なしで機能を理解してもらうには?
Lesson 13 QuestionBot
  • できかけのアプリにコードを追加する形で、質問に答えるBotを作る
  • チームで開発していると思ってやってみよう
  • コメントやコードの構造、プロジェクトの構成が重要だということがわかるだろう
  • 関数が必要最小限のインタフェースを持ち、ひとつの機能だけを実行するようになっているのがよい
  • 関数をPlaygroundで試して、うまくいってからプロジェクトに追加してみよう
  • あなたのアプリを使うユーザをさらに具体化して考えてみよう
  • 何をしている人?何歳くらい?どうしてそのアプリを使っている?絵と文字、どちらが好き?
Lesson 14 Arrays and Loops
  • 配列にもミュータブルとイミュータブルがある
  • あなたのユーザに合うひとを探してプロトタイプを人に見せてみよう
  • 画面をカードに描き直して、アプリを使う代わりにカードをめくってもらう
  • フィードバックをもらって記録しよう
Lesson 15 Defining Structures
  • 必要なデータに合った構造を設計すれば、アプリを作るための部品が手に入る
  • アプリが扱う型の集まりをモデルという
  • Structを使ってデータに合った新しい型を自分で定義しよう
  • Structにもミュータブルとイミュータブルがある
  • あなたのアプリは開発する価値があるだろうか
  • 価値ありと思ったらフィードバックをもとに改善を考えよう
  • 残念ながら価値なしと思ったらアイデアリストに戻ろう
Lesson 16 Questionbot 2
  • Model, View, Controller
  • 本物のデバイス上でプロトタイプを作ろう
  • Keynoteを使えばモックアップが作れる
  • ユーザの使い方を観察して改善を繰り返そう
  • 指で隠れるとか、ボタンが小さすぎるとか
Lesson 17 Actions and Outlets
  • Color Pickerのアプリを一から作る
  • Interface Builderを使ってUIを作りコードと結びつける
  • UIを改善する
  • 今度は、ユーザに質問するのではなくユーザを観察してみよう
  • どこで混乱して、どこを楽しんでいる?
Lesson 18 Adaptive User Interface
  • デザインして、フィードバックをもらい、改善するというサイクルを繰り返す
Lesson 19 Enumerations and Switch
  • Enumをうまく使えばコードは読みやすく書きやすくなる
  • iOSには障害を持つひとのために多くのアクセシビリティ機能を持つ
  • より多くのユーザに使ってもらえるよう、これらの機能をうまく組み込もう
Lesson 20 Final Project
  • 最後のプロジェクト
  • 完成が近づいたら、アプリのアイコンとタイトルを考えよう
  • 日誌を読み返し、キーワードやビジュアルを手がかりにしよう
  • UIと同じように、アイコンやタイトルもほかの人に見てもらってフィードバック・改善を繰り返そう
Lesson 21 What's Next?
  • どんなアプリなら今のスキルで作れるだろうか?
  • この本を見ないで同じアプリを作ってみよう
  • これまでに作ったアプリを改造してみよう
  • すぐに始めて、アプリを作り続けよう
  • 学び続けよう