879 Views
December 17, 21
スライド概要
トピックス:情報化社会の到来,情報化社会での知の蓄積と流通,コンピュータでできること,コンピュータの特質,コンピュータ活用での基礎
コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
cs-15. 全体まとめ (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1
アウトライン • 情報化社会の到来 • 情報化社会での知の蓄積と流通 • コンピュータでできること • コンピュータの特質 • コンピュータ活用での基礎 2
15-1 情報化社会の到来 (コンピューターサイエンス) 金子邦彦 3
情報化社会 • コンピュータを個人が持つ • コンピュータがさまざまな仕事を行う • コンピュータがネットワーク化される 4
スマートスピーカ―を手作りする記事 Jasper ソフトウエア(http://jasperproject.github.io/)と、 小型コンピュータ RaspberryPi のセット 安価、手軽に、スマートスピーカーを手作りできる キーワード:音声コントロール、小型コンピュータ、スマートハウス、 音声によるSNSへの投稿 5
人や自転車などの,オブジェクトの発見・検知 元画像 人工知能による読み取り結果 • 人間の「目」の一部機能をコンピュータで再現. 画像の中のオブジェクトを,人工知能が発見・検知 • SSD (Single Shot MultiBox Detector) は公開の技術 https://arxiv.org/abs/1512.02325 6
車両の発見・検知 人工知能は,車両の場所と向き(前なのか後ろなのか)を素早 く発見できるようになってきた (Dlib を使用) 7
顔と表情の読み取り https://cloud.google.com/vision Googleによるオンラインデモ 8
人工知能による翻訳 https://www.deepl.com/ 9
フェイクビデオ + 写真 → ビデオ 人工知能により 合成されたビデオ 10
11
15-2 情報化社会での 知の蓄積と流通 (コンピューターサイエンス) 金子邦彦 12
情報化社会での知の流通、共有 • インターネットが、くまなく普及 • 知(データやソフトウエア)が,公開(オープ ン)され、広く流通,共有される • 知は蓄積され,大規模に,次世代に継承される • あらゆる人が知の発信者 13
Google Earth は,無料で利用可能なオ ンラインの地球儀 Google Earth の起動 ① ウェブブラウザで次の URL を開く https://earth.google.com ② 「Earthを起動」をクリック 14
Google Earth の検索機能 メニューの 「検索」 15
Google Earth で「福山城」を検索したところ 16
無料データの例 - インター ネット 無料で利用できる地図 コンピュータ 無料の地図(広島県部分を抜粋) 今や地図は「オープン化」している ・国土地理院 ・OpenStreetMap 個々人のもとへ ・Google Map ※ 中には,独自の情報を重ね合わせて 再配布を条件付きで許可している場合も 17
オープンなデータ、オープンなソフ トウエア • インターネットで公開されたデータやソフトウ エア • 一定の条件下で無料で利用可能 • 利用では、マナーも大切 ・作者が定める利用条件を確認 ・著作権を尊重 ・「うまく動かない」からといって作者に苦情をい うのはマナー違反になることも 18
WikiPedia 世界中が編集に参加している百科事典 https://ja.wikipedia.org/ 19
OpenStreetMap 世界中が編集に参加している地図 https://openstreetmap.jp/ 20
15-3 コンピュータで できること (コンピューターサイエンス) 金子邦彦 21
① データの作成、保管、整理、処理 22
さまざまなソフトウエア • オフィスソフト 電子メール, オンライン ストレージ なども Word (ワープロ) Excel (表計算) PowerPoint (プレゼン) https://portal.office.com でオンライン利用 • Windows に標準添付のもの ファイルマネージャ (エクスプローラー) Web ブラウザ エディタ (メモ帳) 23
表計算ソフトウエア • データの記録、保管、共有 • 表計算の機能 = 集計・集約、グラフ作成など
② 算法(アルゴリズム)をもとに, コンピュータが問題を解く 25
方程式を解く 4x + 1 = 0 を解きたい Python の拡張機能 scipy を利用 次のように入れて,実行ボタンを押す.結果 -0.25 を確認 from scipy import optimize def foo(x): return 4 * x + 1 print( optimize.fsolve(foo, 10) ) 26
方程式を解く コンピュータが x2 - 2 = 0 を解いている コンピュータが x2 – 2x - 4 = 0 を解いている 27
最適化 • ある制約のもとで, ある尺度での値が最適になるように, 調整を行うこと 最適なポイント 28
線形計画法の例 ・資源 ・生産物 キリマンジャロ、コロンビア ブラックコーヒー(x)、ミルクコーヒー(y) ・資源と生産物の関係 キリマンジャロ = 0.15 x + 0.05 y コロンビア = 0.05 x + 0.1 y ・資源に関する制約 キリマンジャロ 最大 50 コロンビア 最大 40 ・目的 150 x + 120 y をなるべく多くすること 一次式 一次式 29
線形計画法の例 最大の収益は 62000 だと分かる 30
③ ビジュアルな表現、シミュレーション 31
3次元コンピュータグラフィックス モデリング シミュレーション Blender を用いた街並み再現 Blender は、一定の条件下で、無料で利用できる 3次元コンピュータグラフィックスのソフトウエア 32
3次元スキャナで読み込んだ3次元データの 例 ◆ 3次元データは, インターネットで,容 易に入手可能 • http://sourceforge.n et/projects/pointclo uds/files/PCD%20d atasets/ • https://github.com/P ointCloudLibrary/da ta • http://pointclouds.or g/media/ Lauranaデータ biwi face データ 01 33
Blender でのシミュレーションの例 モデリング シミュレーション Blender 3次元ゲームエンジン機能を用いた 物理シミュレーション(落下、衝突、ころがり) 34
円周率の算出のためのシミュレーション 半径1の円の中にある点の数を数える 点の数が 60 なら,円の面積は 60 * 4 / 100 点は100個 縦の長さ2,横の長さ2の正方形 35
15-4 コンピュータの特質 (コンピューターサイエンス) 金子邦彦 36
① コンピュータを使うからといって,計算が完 璧に正確というわけではない print(1/3) 0.00000000000000003333333333 3333333333333333333333333... が誤差! 37
② 算法(アルゴリズム)は分かっていても、解 くのに時間がかかる問題がある このことは暗号の基礎 ③ コンピュータを使っても解くことが不可能な 問題がある チューリングマシンの停止問題 など 38
暗号を解読する Python プログラム Diffie-Hellman法の暗号を解読するプログラム 参考ウェブページ http://nbviewer.jupyter.org/github/yoavram/CS1001.py/blob/master/recitation4.ipynb 39
暗号作成より,暗号解読の方が手間がかかる • 暗号解読の算法(アルゴリズム)は発見済み ということが多い → プログラムを作成可能 • しかし,プログラムが答えを出すまでに時間がかかる場合がある すでに,2012 年に,このようなレポートが. https://www.dit.co.jp/service/security/report/03.html 英大小文字+数字+記号を組み合わせた ZIP のパスワード 6桁の解読時間: 2分24秒 = 超危険 8桁の解読時間: 14日 = 危険 10桁の解読時間: 341年 40
15-5 コンピュータ活用での基礎 (コンピューターサイエンス) 金子邦彦 41
データの共有 データを共有する場合のイメージ コンピュータ 利用者A ネット ワーク 利用者B 利用者C 記憶 装置 情報システム 42
リレーショナルデータベースシステム 自在なデータ操作 検索 集計・集約 並べ替え リレーショナル リレーショナル データベース データベース 管理システム リレーショナルデータベースシステム データの種類ごとに分かれた、 たくさんのテーブルが格納される 43
プログラムとは • プログラムとは、コンピュータが自動で動く ための手順を書いたもの • プログラムの起動によって、コンピュータが 動き始める 44
プログラミング • プログラムを設計し製作すること(プログラミ ング)はクリエイティブ • プログラムを作ることは,「部品」を組み立て て,作品を作り上げることに似ている • プログラムをマスターすることは、コンピュー タをマスターすることに直結.コンピュータを 自在に操ることができるようになる 45
• 複数のプログラミング言語を学 ぶことは大事. 賛成できますか? プログラミング 言語は複数ある • 「1つを知っていれば,どの言 語も大体似ているので,応用が 利く」という考え方もある. • 「やりたいこと,学びたいこと に向いた言語を,そのときどき で選ぶのが,一番良い」とも. • 人によって「好きな言語が違 う」ということも 46
なぜプログラミング言語は たくさんあるのでしょうか? それぞれ 特徴があ る Java R SQL MATLAB / Octave どのコン 初心者向 コン ピュータ け.その ピュータ でも同じ おかげで, の性能を 「データ 処理」に 特化した 「データ ベース」 に特化し 「数値計 算」, 「信号処 プログラ 多数の拡 最大限引 ムが動く. 張機能も. き出す. コマンド 言語 たコマン ド言語 理」など に特化し たコマン ド言語 普及度は トップレ ベル. Python C / C++ 47
Python プログラム見本 x = 100 if (x > 20): print("big") else: print("small") s=0 for i in [1, 2, 3, 4, 5]: s=s+i print(s) • すぐに実行できる • さまざまな「パッケージ」で 機能を拡張できる • Windows でも Linux でも,ほ ほ同じプログラムで動く 48
式の抽象化と関数 100 * 1.1 a * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 変数 a を使って,複数 の式を1つにまとめる (抽象化) 式「a * 1.1」を含む 関数 foo を定義 関数 foo を使用. 100, 150, 400 は引数 49
式の抽象化と関数 抽象化前 類似した複数の式 実行結果 抽象化後 関数の定義と使用 同じ 実行結果になる 50
• プログラミングでの根本問題は 何でしょうか? 誤り(バグ)の無いプログラムの 作成 私の意見 • プログラミングの一番の基礎は 何でしょうか? • 抽象化を行うこと. • 抽象化により,繰り返し同じこ とを書くことが減り,バグを防 げる. • プログラムの変更も簡単に. 51