授業日程
アルゴリズム、プログラムによる社会変革の仕組み
情報科学Iの続きとして、アルゴリズムによる社会変革の背景の仕組みについて学習する。さらに、アルゴリズムを実現し実行するためのコンピュータとインターネットの仕組みを学習する。特にウェブ利用者を観察するロボットについて、その習性と仕組みを知る。アクティブなウェブに欠かせないJavaScriptについて入門書を使いながら言語を理解する。アルゴリズムとプログラムを理解した上で、映画や音楽業界が消費者をコントロールする仕掛けを知る。
大学 gmail
Gmail に**大学のアカウント(学籍番号@g.matsuyama-u.ac.jp)**を使ってログインする。
件名には、授業科目名を必ず書き、
本文中に、学籍番号と氏名を書くこと。
授業で出された問題への解答は、この大学のアカウントからメールで私に送信する。私のメールアドレスは授業中に示す。
大学のメールは、グーグルの「G Suite アカウント」によって管理されているものです。いくつか注意点があります。
課題
自然数 a,b,c について、 a + b = c の式を考える。
例)
8 + 9 = 17,
5 + 16 = 21 などの2つの自然数の足し算を考える。
ただし、 6 + 9 = 15 のような式はその対象としない。理由は、6,9,15はどれも3で割り切れるから。(互いに素である a,b,c について考える)
はじめの 8 + 9 = 17 ついて、左辺と右辺の数をそれぞれ素因数分解して、異なる素数を書き出すと 2, 3, 17 の3個しかないことがわかる。この3つの素数をかけ合わせると、102 (= 2 x 3 x 17)となる。次の式は、異なる素因数は 2,3,5,7 の4個で、その積は210 となる。ふたつの式ともに、積は右辺の数よりもはるかに大きくなることに注目する。異なる素因数の積が右辺の c よりも小さくなることはあるのだろうか。
ところが、 5 + 27 = 32 の式について同様に異なる素因数の積をもとめると、2×3×5で30だから、32よりも小さい。理由は、27と32が素因数に分解すると、それぞれ3と2の小さな素数になるためだ。
ただ、このように素因数の積が右辺のcよりも小さくなる例は珍しいような気がする。これを実際に計算して確かめてみよう。
具体的に「1から100までのa,bについて、a,b,cの異なる素因数の積がc(=a+b)より小さくなる例」を探してみよう。
自然数 a,b について、a+b=c を満たす a,b,c の異なる素因数の積が c より小さくなることはどうやら限られている?
この素朴な足し算とかけ算だけの初歩的な算数でできあがった次のような予想がある。
abc予想
第1回目 イントロダクション
この科目ではプログラミングについても少しその考え方をかじってみるが、現代のクライアント・サーバモデルでは、クライアントプログラミングとサーバプログラミングがある。この授業では、クライアント側でのプログラミングを中心とする。
参考のために、BASIC言語で書いた同様のプログラムを見てみる。
授業の進め方について。
講義ノートは、情報科学Ⅱを参考にしてください。
国別ソーシャル・ネットワークサービスの利用分布図 - Wikipedia
ソーシャル・ネットワークサービス
おまけ
地元紙の電子版を読む。松山大学のホームページの下にあるリンクをたどると愛媛新聞電子版ログインページにつながる。
ログイン後、次のようにジャンル別メニューの中から愛媛新聞を選んで電子版愛媛新聞を読むことができる。
紙と同じイメージで購読することもできる。松山大学学生限定。
第2、3回目 インターネット ボット、ウェブ ロボットとは何か
はじめに、人工知能、機械学習、深層学習という言葉の意味と違いについて考える。
誤解しているかもしれない言葉の違い:人工知能、機械学習、深層学習
人間とボットは、50%と50%の割合
良いボットと悪いボットの割合は?
人間のように話しかけてくるプログラム。ボット(Bot)は未来のものでしょうか。いえ、もうすでにあなたの近くにいます。ボットはネットの中でどんどん成長して大きくなっているのです。
さて、いったいボットとは何か、具体的な例を取り上げてみましょう。
ボットの例
- Siri
- Cortana
- Tay ティーンエイジャー向けのチャットボットTay.aiのアカウントは凍結されたまま現在に至る。
Tay A.I. | The People's Chatbot - Internet Historian
彼女はCortana の少女バージョンとしてtwitterに登場した。あくまで実験であった。しかし、無垢な少女をインターネットに放り出すと……
Tay のツィートから …… これはヒドイというのを抜き出すと
50 Most Outrageous Racist Tweets From Microsoft's Twitter Bot "TAY"
Microsoft AI Tay の黒歴史 2016年春のこと
Tay.ai は、インターネットで最悪のことを覚えてしまった。
Microsoft Office 97 から2003 まで、マイクロソフト社はオフィスソフトにオフィス・アシスタント機能を持たせた。
ボットはテクノロジーがあるところ今やどこにでもいます。ウィルスを仕込みにやって来る悪者ボットもいれば、インターネットで情報を検索する人々のために新しいウェブページを見つけようとやって来るボットもいます。
もう少し具体的なSMS(Short Message Service)を使う例をあげてみます。
SMSあるいはSNS(Social Networking Service)
- Social Network Diagram - English
- 社交網路服務 - 中文
- Servicio de red social - スペイン
- (بالإنجليزية: Social network) - アラビア
未来はボットの世界になるか?
そうかもしれないし、そうでないかもしれない。たいていの開発者や企業は、ユーザはもうアプリをたくさん入れるのに飽きてしまったと判断している。そのかわりにボットをひとつ入れて、そのボットに頼めば、ボットがユーザに代わってたいていのことをやってくれることを願っていると考えている。食べ物を注文したり、スポーツの結果を教えてくれるように。
まだまだそんな世界は先のことのようだが、アマゾンの Alexa はちょっとその方向に向かって近づいている。
ただ、Siri が何でもやってくれる世界はまだ遠いようだ。
中央教育審議会大学分科会将来構想部会
ー2040年の姿、より
2040年という時代は、平成30年に生まれた子供が大学を卒業する年である。
国連が提唱する持続可能な開発のための目標(SDGs)は、「誰ひとり取り残されないという考えのもと、貧困に終止符を打ち、地球を保護し、全ての人が平和と豊さを享受できる社会を目指している。
自らの問題としてとらえ、身近なところから取り組む。
Society 5.0、第4次産業革命
人工知能が人間の能力をはるかに超えていくのではないかという意見。シンギュラリティ(技術特異点)
ロボットと働くー弁当つくり
テレビ東京の番組「トレたま」弁当業界の救世主より。
- 弁当工場 ー 内部について(参考資料:桐野夏生『OUT』、パートタイマーたち)
- 夜勤:午前0時半から朝5時半までベルトコンベアの立ち仕事
- 更衣室で自分の作業衣を探し、私服を着替える
- ジャンパー式の白衣、ウェストにゴムの入った作業ズボン
- 髪をネットで押さえ、シャワーキャップ型の「つくつく帽子」を被る
- 透明ビニールのエプロンを手に更衣室を出る
- トイレをすませ、マスクと長いエプロンをつけたあと、手と腕をブラシで洗い、消毒液に漬ける
- タイムカードを押して白い作業靴を履く
- 衛生監視員のチェックを受ける
- 粘着テープのローラで背をこすりあげる
- 爪と手指に傷がないかどうか
- 工場の入口扉の前で作業員たちの列にならぶ
- 扉があくと、中でもう一度手と腕を洗って消毒する。
- 足首まで届くエプロンも消毒液で拭く
- コンベアの前に行く
- ビニールの使い捨て手袋と手拭き用布巾を取る
- ヨシエが写真付き仕様書をみせる
- カレー弁当1200食
- ヨシエが「ご飯出し」、雅子が「容器渡し」
- 雅子「プラスチックの容器をさばいて、渡しやすいよう下準備」
- 邦子「カレーかけ」の楽な仕事を確保
- 弥生がやり手のない「ご飯均し」にまわる
- 主任「早く流せ!馬鹿野郎」
- ご飯均しとは、まわってきた器のご飯をカレーをかけられやすいように手で伸ばすこと。ご飯均しがきついのは、白飯は炊き立てではないから冷たく固まっている。四角く固まった白飯を一瞬のうちに平たくするには、手首と指の力がいって、さらに中腰で作業すると腰まで痛みだす。
- 雅子、ヨシエに容器を1枚ずつ手渡し。
- ヨシエ、オートメーションの口からぽろっと1個分のご飯が四角く出てくるのを容器に受け、秤に載せて分量を確認したあと下に流す
- 四角いご飯を平らに均すもの
- カレーをかけるもの
- 鶏の唐揚げを切るもの
- カレーの上に載せるもの
- 福神漬の分量をはかってカップに入れるもの
- プラスチックの蓋をするもの
- スプーンをテープで留めるもの
- シールを貼るもの
- 1個のカレー弁当の出来上がり
- カレー弁当、1200食を作り終える
- 作業班はコンベア上を片付けて、すぐ別のコンベアに移る
- 「特製幕の内弁当」、2000食
- 特製幕の内弁当は詰めるものが多いのでラインが長くなる
- 午前5時半、作業を終える
課題
- 弁当工場のベルトコンベア・ラインで、パートタイマーの女性たちとロボットは共同作業をすることができるだろうか?
- 自らのボランティア・アルバイトなどでのワークを通じて、ロボットと一緒に働くときに発生しそうな問題を指摘する。
- 弁当工場の見学を公開しているところはどのくらいあるだろうか?
- 工場ワークス求人などのウェブサイトで弁当工場の時給と傾向を調べる。
参考リンク
課題
つぎのビデオを見た感想を述べなさい。
Amazonプライムのビデオで、実際のボットではないがボットとも言えるようなビデオを閲覧しようとしたが、再生できなくなっていた。内容の問題か制限がかかったようだ[1]。
algorithmのルーツ(2次方程式を解く)
古代バビロニアでは、2次方程式の問題集があった。おそらく学校の教科書のようなもの。
出土した粘土板(タブレット)の問題集より
「正方形の面積から一辺の長さの4倍が引かれて780。一辺の長さはいくらか?」
古代バビロニアの解法。「4を半分に分割する。2と2を互いに掛ける。4を780に加えて784。その平方根は28。互いに掛けた2を28に加えて30。30が一辺の長さである。」
x2 - 4x = 780
古代バビロニアでは、2次方程式の解を代数により計算していた。粘土板の練習問題を見ても分かる通り、現代の2次方程式の解を求める公式を言葉で記述していた。「2次方程式を解くアルゴリズム」のルーツである。
古代バビロニアでは、代数により解を求めたが、古代ギリシアでは図形による幾何学的方法で解を求めていたこともあわせて考えると興味深い数学の歴史がある。
ピタゴラスの3つ組
次のような3つの数のことを「ピタゴラスの3つ組」と呼ぶ。
3,4,5
5,12,13
7,24,25
などである。
このピタゴラスの3つ組の由来は、下のような正方形数にある。
. | . | . | . | . |
__| | | | |
. . | . | . | . |
______| | | |
. . . | . | . |
__________| | |
. . . . | . |
______________| |
. . . . . |
__________________|
正方形数から次の式を得る。
1 + 3 + 5 + . . . + (2n-1) = n2
この式をコードで具体的に確かめてみよう。
J言語で、1から10個の奇数の数列をつくるには次のように書く。
1+2*i.10
1 3 5 7 9 11 13 15 17 19
それではこの1から19までの和を計算してみる。
+/ 1+2*i.10
100
次の式から、ピタゴラスの3つ組を求めてみよう。
1 + 3 + 5 + . . . + (2n-1) = n2
n=4のとき、
1+3+5+7=16=42
n=5のとき、
1+3+5+7+9=52
9は3の2乗であるから、
1+3+5+7+32=52
したがって、
42+32=52
これは、ピタゴラスの3つ組のひとつ 3,4,5 である。
一般化してみよう、
1 + 3 + 5 + . . . + (2n-1) = n2
は、次のように書ける。
(n-1)2 + (2n-1) = n2
ピタゴラスの3つ組は、(2n-1)が自然数の2乗となる場合だから 2n-1=m2とおく。すると、次の式が成立する。
((m2 - 1)/2)2 + m2 = ((m2 + 1)/2)2, ただしmは、3以上の奇数。 ... (1)
実際にm=3,5,7,9,11,... について計算してみると、
3,4,5
5,12,13
7,24,25
9,40,41
11,60,61
...
これらの数字は、古代バビロニアの数学粘土板(タブレット)に載っている。
ピタゴラスの3つ組にあらわれる3つの数については、もう少し式を整理しておく。さきほどの(1)式でつかった奇数mをあらためて(2n+1)とする。ここで、n=1,2,3 ...。すると(1)式は、次のようになる。
(2n2+2n)2 + (2n+1)2 = (2n2+2n+1)2 ... (2)
この(2)の式をピタゴラスの公式と呼ぶことにする。
n=1,2,3 ... を(2)の両辺に代入し計算すれば、それぞれの3つ組を順に求めることができる。
n=1, 42 + 32 = 52
{3,4,5}
n=2, 122 + 52 = 132
{5,12,13}
n=3, 242 + 72 = 252
{7,24,25}
...
練習問題
-
古代のタブレットを解読した結果、想像されることがある。ひとつは、2次方程式の練習問題を作成した教師らは、解がきれいな形になるように工夫をしたと思われる。現代の学校の教科書を作成するときも解がきれいな形になるように教師らは苦労しているだろうか?それは何故だろうか?意味は?
-
ピタゴラスの公式(2)をもちいて、一辺の長さが19の直角三角形の他の2辺の長さを求めよ。
課題
- 任意の2次方程式を解き、任意の3つの数がピタゴラスの3つ組かどうかを判定するアプリをつくるにはどのくらいの日数がかかるだろうか?
参考文献
第4回目 Java Script入門①
JavaScript は、このリンク先で授業の内容を解説する。JavaScriptの基本的な事柄は、下記のリンクを参照する。
とりあえず、
HTML と Script タグで動かす原始的なやり方で HTML と JavaScript を書いて、動かしてみよう。Windows で動かすには、エディタとブラウザがあればよい。titleタグは空欄にしてあるから、スクリプトにあわせて自分で適当に埋める。ただ空欄のままでも問題はない。
<html>
<head>
<title></title>
</head>
<body>
<script>
console.log("JavaScript 動いてる!");
</script>
</body>
</html>
次にScript(コード)とHTMLを分けて書くやり方。
<script>
console.log("JavaScript 動いてる!");
</script>
<script src="script.js"></script>
2048 Game
実際に、ゲームへの応用をみてみる。例として、HTML + CSS + JavaScript による 2048 ゲームである。
参考: 2048 Game - Gabriele Cirulli
15 Puzzle
15 Puzzle ゲームのサイトも、 HTML + CSS + JavaScript で作成されている。
課題 10月17日
- Gabriele のサイトで高得点を狙う。スクリーンショットを撮って記録しておく。
- 15 Puzzle のクリック数をできるだけ小くし、ゲームを完成させよう。同様に記録しておく。
15 Puzzle を解くコード
W3schools
あとは、w3schoolsにある例題を動かしてみよう。これを一通り動かせば、JavaScriptの雰囲気はつかめるはずだ。
あとは、AndroidのアプリPyでプログラミングを自習する。このPyは、iOS用のプログラミング学習もできる。
Android apps
-
アプリ Py このJavaScript 学習用アプリをインストールする。内容は次のように「はじめに」からスタートして順にドリルを解いていくとJavaScriptの書き方と意味が理解できる。
-
はじめに(Introduction)
コンソールログ命令で1+2計算
console.log(1+2)
画面に15をだすためには?をいくつに
console.log(5+?)
-
データ型と変数
-
......
iPhone apps
- アプリ Py
第5回目 Java Script入門②
前回の質問: ブラウザのバージョンについて。
今回の質問: もう一度調べてバージョンアップがあったかどうか見てみる。
Youtubeで、Yamaha MOTOBOTの走りを見ることができる。ロッシの走りと比べてどうだろうか。
- Windows OS のシステム例
C:>systeminfo
Host Name: ROADSTER-PC
OS Name: Microsoft Windows 10 Pro Insider Preview
OS Version: 10.0.17017 N/A Build 17017
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Registered Organization:
Product ID: 00330-80000-00000-xxxxx
Original Install Date: 2017/10/22, 17:42:52
System Boot Time: 2017/10/22, 17:38:20
System Manufacturer: Dell Inc.
System Model: XPS 12 9Q23
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 58 Stepping 9 GenuineIntel ~1900 Mhz
BIOS Version: Dell Inc. A06, 2013/04/11
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
System Locale: ja;Japanese
Input Locale: en-us;English (United States)
Time Zone: (UTC+09:00) Osaka, Sapporo, Tokyo
Total Physical Memory: 8,071 MB
Available Physical Memory: 4,046 MB
Virtual Memory: Max Size: 9,991 MB
Virtual Memory: Available: 4,712 MB
Virtual Memory: In Use: 5,279 MB
Page File Location(s): C:\pagefile.sys
Domain: HAIKUSPHERE
Logon Server: \ROADSTER-PC
Hotfix(s): N/A
Network Card(s): 2 NIC(s) Installed.
[01]: Intel(R) Centrino(R) Advanced-N 6235
Connection Name: Wi-Fi
DHCP Enabled: Yes
DHCP Server: 192.168.100.1
IP address(es)
[01]: 192.168.100.108
[02]: fe80::597d:d728:26f5:35e
[03]: 2001:268:c0a8:1277:9067:1c62:33f5:2
[04]: 2001:268:c0a8:7f8:9067:1c62:33f5:2
[02]: Bluetooth Device (Personal Area Network)
Connection Name: Bluetooth Network Connection 2
Status: Media disconnected
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
第6回目 Java Script入門③
人工知能(AI)に関するトピックス:朝日新聞デジタル
JavaScript のプログラム
Film 'her'
近未来 OS1 10分10秒くらいから見る。
映画 「オートマタ」
第7回目 Java Script入門④
第8回目 Java Script入門⑤
第9回目 テキストのゲーム②
第10回目 JavaScript と業界
人間のパターンを分類するアルゴリズムを利用する映画、音楽業界
第11,12回目 .NET と Mono、ソフトウェア開発業界
ロボット続き
犬とロボット
dotnetfoundation
Mono project
hello world プログラムをUbuntuで動かす。
hello.cs
using System;
public class HelloWorld
{
static public void Main ()
{
Console.WriteLine ("ようこそ Mono ワールド");
}
}
mcs hello.cs
mono hello.exe
ようこそ Mono ワールド
hello-wf.cs
using System;
using System.Windows.Forms;
public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}
public HelloWorld ()
{
Text = "ようこそ Mono 世界";
}
}
hello.aspx
<%@ Page Language="C#" %>
<html>
<head>
<title>Sample Calendar</title>
</head>
<asp:calendar showtitle="true" runat="server">
</asp:calendar>
xsp4 --port 9000
Mono Project
ネットワーク中立性の問題
第13 ビットコイン
暗号通貨ビットコイン Bitcoin
通貨単位はBTC
Bitcoin is a cryptocurrency and worldwide payment system. It is the first decentralized digital currency, as the system works without a central bank or single administrator. The network is peer-to-peer and transactions take place between users directly through the use of cryptography, without an intermediary. As such, bitcoin transactions are anonymous. Bitcoin transactions are verified by network nodes and recorded in an immutable public distributed ledger called a blockchain. Bitcoin was invented by an unknown person or group of people under the name Satoshi Nakamoto and released as open-source software in 2009.
There are lots of ways to make money: You can earn it, find it, counterfeit it, steal it. Or, if you’re Satoshi Nakamoto, a preternaturally talented computer coder, you can invent it. That’s what he did on the evening of January 3, 2009, when he pressed a button on his keyboard and created a new currency called bitcoin. It was all bit and no coin. There was no paper, copper, or silver—just thirty-one thousand lines of code and an announcement on the Internet.
ドキュメンタリー「仮想通貨 ビットコイン」
「貨幣」「市場」「経済」
ハッシュ関数について
第14回目 公開鍵暗号を理解する
第15回目 私達は自分が機械ではないことを機械に示さねばならない時代に生きている
人型ロボット「ソフィア」は人間のようになりたい?ースプートニク記事
Intelのプロセッサチップに根本的な設計上の欠陥が発覚、各OSにアップデートの必要性 - Gigazine
Reddit - 'Kernel memory leaking' Intel processor design flaw forces Linux, Windows redesign
Bugs in modern computers leak passwords and sensitive data. - spectre paper
Intel Responds to Security Research Findings
THE WORLD IS SIMULATED, PROOF OF A VIRTUAL REALITY EXISTENCE? 2017
We Are Living In A Simulation - New Evidence!
第15回目 まとめ
2017.10.5 現在は、閲覧できるようになっている。 ↩︎