SlideShare a Scribd company logo
たこ焼き屋で学ぶ
情報隠蔽
社会情報学特別講義
中央大学 飯尾 淳
2018年講義資料 Copyright © Jun Iio 2
ローカル変数とグローバル変数
●
ローカル変数
– 処理のスコープの中でしか参照できない
●
グローバル変数
– プログラムのどこからでも参照できる
●
注:スコープとは
– 処理や影響力がおよぶ範囲の一括りを示す単位
2018年講義資料 Copyright © Jun Iio 3
ローカル変数とグローバル変数の例
func1のスコープ
func2のスコープ
2018年講義資料 Copyright © Jun Iio 4
ローカル変数とグローバル変数の例
●
グローバル変数
– 変数aは,どこからでも利用できる
– 「利用できる」
●
中身を参照する
●
変数の値を書き換える
●
ローカル変数
– 変数x, yおよび引数bは,スコープの中でのみ利用
できる
2018年講義資料 Copyright © Jun Iio 5
グローバル変数のたとえ話
●
従業員が5人のタコ焼き屋で,現金出し入れ用
に,誰でも好きなときにアクセスできる金庫を
店の奥に設置
●
誰でも簡単に入出金できる
– Aさんがタコ焼き5人前の売上金として1,500円を
金庫に入れる
– Bさんが小麦粉代3,000円を金庫から出して支払う
– 従業員に今月の給料として100,000円ずつ金庫か
ら皆に支払う
…
2018年講義資料 Copyright © Jun Iio 6
グローバル変数のたとえ話
●
問題点
– どこで,いつ,誰がいくら入出金したか
– 正確に把握することが非常に難しい
●
対策
– 出納帳を置く
●
エラーの発生
– 記入する金額を間違える
– 未記入のままお金を持ち去る(不正する)
●
金額不一致が起きたときの原因究明は困難
2018年講義資料 Copyright © Jun Iio 7
問題(エラー)発生時の対応
●
グローバル変数
– あらゆるモジュールからアクセス可能
– エラーの原因となった問題がどこで発生したか追求
がたいへん困難
●
ローカル変数
– その変数に関連するエラーは「スコープ内に限られ
る」
– 原因が存在すると思われる範囲が限定されており,
追求が容易
2018年講義資料 Copyright © Jun Iio 8
たこ焼き屋で説明する情報隠蔽
●
入出金を専門に扱う「出納係」を用意し,その
人にだけ金庫を触らせる
●
手続き
– Aさんが「3人分の売り上げです」といって出納係
に1,500円を渡す
– Bさんが「小麦粉代をください」と申告して出納係
から3,000円もらう
– 「従業員の給料をください」といって出納係からそ
れぞれ100,000円もらう
●
エラーが発生したらそれは出納係の責任
2018年講義資料 Copyright © Jun Iio 9
情報隠蔽
●
「グローバル変数を使わない」
●
手続きとデータを一体化し,ブラックボックス
化する
●
金庫の例:
– もはや従業員は金庫の存在を知る必要はない
– 金の受け渡し(インタフェース)さえ知っていれば
よい
●
手続きを「構造化」し,
データは「局所化(ローカル化)」して隠蔽
2018年講義資料 Copyright © Jun Iio 10
「情報隠蔽」の効果
●
「再利用性」の向上
●
再利用とは
– プログラムを使い回すこと
●
構造化プログラミング→オブジェクト指向
– 構造化プログラミングで処理がモジュール化された
– しかし「グローバル変数」を使っていると,完全に
分離することが難しい
– オブジェクト指向で「情報隠蔽」され,モジュール
がきれいに分離,再利用性が高まった
2018年講義資料 Copyright © Jun Iio 11
(しつこく)たこ焼き屋で説明
●
出納係に関する処理とデータをモジュール化
– 「べつにたこ焼き屋じゃなくても,いんじゃね?」
→ Yes!
●
出納係モジュールの再利用
– お好み焼き屋
– うどん屋
– 定食屋,寿司屋,トンカツ屋, …
●
(おまけ)株式会社総務部

More Related Content

More from Jun Iio

OpenCampus2019_Tama
OpenCampus2019_TamaOpenCampus2019_Tama
OpenCampus2019_Tama
Jun Iio
 
不偏分散ではなぜNでなくN-1で割るのか
不偏分散ではなぜNでなくN-1で割るのか不偏分散ではなぜNでなくN-1で割るのか
不偏分散ではなぜNでなくN-1で割るのか
Jun Iio
 
2019年春季HCD研究発表会特別講話
2019年春季HCD研究発表会特別講話2019年春季HCD研究発表会特別講話
2019年春季HCD研究発表会特別講話
Jun Iio
 
UXDの課題
UXDの課題UXDの課題
UXDの課題
Jun Iio
 
2019年度BYODソフトウェアインストールガイダンス資料
2019年度BYODソフトウェアインストールガイダンス資料2019年度BYODソフトウェアインストールガイダンス資料
2019年度BYODソフトウェアインストールガイダンス資料
Jun Iio
 
Twitterでみる社会のトレンド
Twitterでみる社会のトレンドTwitterでみる社会のトレンド
Twitterでみる社会のトレンド
Jun Iio
 
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
Jun Iio
 
The presentation material for my lecture at the open campus, 22nd Sep. 2018
The presentation material for my lecture at the open campus, 22nd Sep. 2018The presentation material for my lecture at the open campus, 22nd Sep. 2018
The presentation material for my lecture at the open campus, 22nd Sep. 2018
Jun Iio
 
Lessons Learned from Data Preparation for Geographic Information Systems Usin...
Lessons Learned from Data Preparation for Geographic Information Systems Usin...Lessons Learned from Data Preparation for Geographic Information Systems Usin...
Lessons Learned from Data Preparation for Geographic Information Systems Usin...
Jun Iio
 
図書館利用実態の可視化 および 読書感想文コンクール作品の分析
図書館利用実態の可視化 および 読書感想文コンクール作品の分析図書館利用実態の可視化 および 読書感想文コンクール作品の分析
図書館利用実態の可視化 および 読書感想文コンクール作品の分析
Jun Iio
 
トイレサインとピクトグラム
トイレサインとピクトグラムトイレサインとピクトグラム
トイレサインとピクトグラム
Jun Iio
 
Introduction to "Global Studies 2018, Vietnam Program"
Introduction to "Global Studies 2018, Vietnam Program"Introduction to "Global Studies 2018, Vietnam Program"
Introduction to "Global Studies 2018, Vietnam Program"
Jun Iio
 
OAuth and SNS
OAuth and SNSOAuth and SNS
OAuth and SNS
Jun Iio
 
司書課程の学生に対するHCD教育とその反応
司書課程の学生に対するHCD教育とその反応司書課程の学生に対するHCD教育とその反応
司書課程の学生に対するHCD教育とその反応
Jun Iio
 
How Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
How Do You Enter Japanese Characters? - A Comparison between PCs and SmartphonesHow Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
How Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
Jun Iio
 
Take Care Not to Be Stung by Photographs
Take Care Not to Be Stung by PhotographsTake Care Not to Be Stung by Photographs
Take Care Not to Be Stung by Photographs
Jun Iio
 
Neo4jとProlog
Neo4jとPrologNeo4jとProlog
Neo4jとProlog
Jun Iio
 
講演スライドの撮影という迷惑行為に関する意識調査
講演スライドの撮影という迷惑行為に関する意識調査講演スライドの撮影という迷惑行為に関する意識調査
講演スライドの撮影という迷惑行為に関する意識調査
Jun Iio
 
VRとわたし
VRとわたしVRとわたし
VRとわたし
Jun Iio
 
社会科学研究者からみた機械学習
社会科学研究者からみた機械学習社会科学研究者からみた機械学習
社会科学研究者からみた機械学習
Jun Iio
 

More from Jun Iio (20)

OpenCampus2019_Tama
OpenCampus2019_TamaOpenCampus2019_Tama
OpenCampus2019_Tama
 
不偏分散ではなぜNでなくN-1で割るのか
不偏分散ではなぜNでなくN-1で割るのか不偏分散ではなぜNでなくN-1で割るのか
不偏分散ではなぜNでなくN-1で割るのか
 
2019年春季HCD研究発表会特別講話
2019年春季HCD研究発表会特別講話2019年春季HCD研究発表会特別講話
2019年春季HCD研究発表会特別講話
 
UXDの課題
UXDの課題UXDの課題
UXDの課題
 
2019年度BYODソフトウェアインストールガイダンス資料
2019年度BYODソフトウェアインストールガイダンス資料2019年度BYODソフトウェアインストールガイダンス資料
2019年度BYODソフトウェアインストールガイダンス資料
 
Twitterでみる社会のトレンド
Twitterでみる社会のトレンドTwitterでみる社会のトレンド
Twitterでみる社会のトレンド
 
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
The presentation material for my lecture at the open campus, 22nd Sep. 2018 (2)
 
The presentation material for my lecture at the open campus, 22nd Sep. 2018
The presentation material for my lecture at the open campus, 22nd Sep. 2018The presentation material for my lecture at the open campus, 22nd Sep. 2018
The presentation material for my lecture at the open campus, 22nd Sep. 2018
 
Lessons Learned from Data Preparation for Geographic Information Systems Usin...
Lessons Learned from Data Preparation for Geographic Information Systems Usin...Lessons Learned from Data Preparation for Geographic Information Systems Usin...
Lessons Learned from Data Preparation for Geographic Information Systems Usin...
 
図書館利用実態の可視化 および 読書感想文コンクール作品の分析
図書館利用実態の可視化 および 読書感想文コンクール作品の分析図書館利用実態の可視化 および 読書感想文コンクール作品の分析
図書館利用実態の可視化 および 読書感想文コンクール作品の分析
 
トイレサインとピクトグラム
トイレサインとピクトグラムトイレサインとピクトグラム
トイレサインとピクトグラム
 
Introduction to "Global Studies 2018, Vietnam Program"
Introduction to "Global Studies 2018, Vietnam Program"Introduction to "Global Studies 2018, Vietnam Program"
Introduction to "Global Studies 2018, Vietnam Program"
 
OAuth and SNS
OAuth and SNSOAuth and SNS
OAuth and SNS
 
司書課程の学生に対するHCD教育とその反応
司書課程の学生に対するHCD教育とその反応司書課程の学生に対するHCD教育とその反応
司書課程の学生に対するHCD教育とその反応
 
How Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
How Do You Enter Japanese Characters? - A Comparison between PCs and SmartphonesHow Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
How Do You Enter Japanese Characters? - A Comparison between PCs and Smartphones
 
Take Care Not to Be Stung by Photographs
Take Care Not to Be Stung by PhotographsTake Care Not to Be Stung by Photographs
Take Care Not to Be Stung by Photographs
 
Neo4jとProlog
Neo4jとPrologNeo4jとProlog
Neo4jとProlog
 
講演スライドの撮影という迷惑行為に関する意識調査
講演スライドの撮影という迷惑行為に関する意識調査講演スライドの撮影という迷惑行為に関する意識調査
講演スライドの撮影という迷惑行為に関する意識調査
 
VRとわたし
VRとわたしVRとわたし
VRとわたし
 
社会科学研究者からみた機械学習
社会科学研究者からみた機械学習社会科学研究者からみた機械学習
社会科学研究者からみた機械学習
 

Recently uploaded

2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

たこ焼き屋で学ぶ情報隠蔽

  • 2. 2018年講義資料 Copyright © Jun Iio 2 ローカル変数とグローバル変数 ● ローカル変数 – 処理のスコープの中でしか参照できない ● グローバル変数 – プログラムのどこからでも参照できる ● 注:スコープとは – 処理や影響力がおよぶ範囲の一括りを示す単位
  • 3. 2018年講義資料 Copyright © Jun Iio 3 ローカル変数とグローバル変数の例 func1のスコープ func2のスコープ
  • 4. 2018年講義資料 Copyright © Jun Iio 4 ローカル変数とグローバル変数の例 ● グローバル変数 – 変数aは,どこからでも利用できる – 「利用できる」 ● 中身を参照する ● 変数の値を書き換える ● ローカル変数 – 変数x, yおよび引数bは,スコープの中でのみ利用 できる
  • 5. 2018年講義資料 Copyright © Jun Iio 5 グローバル変数のたとえ話 ● 従業員が5人のタコ焼き屋で,現金出し入れ用 に,誰でも好きなときにアクセスできる金庫を 店の奥に設置 ● 誰でも簡単に入出金できる – Aさんがタコ焼き5人前の売上金として1,500円を 金庫に入れる – Bさんが小麦粉代3,000円を金庫から出して支払う – 従業員に今月の給料として100,000円ずつ金庫か ら皆に支払う …
  • 6. 2018年講義資料 Copyright © Jun Iio 6 グローバル変数のたとえ話 ● 問題点 – どこで,いつ,誰がいくら入出金したか – 正確に把握することが非常に難しい ● 対策 – 出納帳を置く ● エラーの発生 – 記入する金額を間違える – 未記入のままお金を持ち去る(不正する) ● 金額不一致が起きたときの原因究明は困難
  • 7. 2018年講義資料 Copyright © Jun Iio 7 問題(エラー)発生時の対応 ● グローバル変数 – あらゆるモジュールからアクセス可能 – エラーの原因となった問題がどこで発生したか追求 がたいへん困難 ● ローカル変数 – その変数に関連するエラーは「スコープ内に限られ る」 – 原因が存在すると思われる範囲が限定されており, 追求が容易
  • 8. 2018年講義資料 Copyright © Jun Iio 8 たこ焼き屋で説明する情報隠蔽 ● 入出金を専門に扱う「出納係」を用意し,その 人にだけ金庫を触らせる ● 手続き – Aさんが「3人分の売り上げです」といって出納係 に1,500円を渡す – Bさんが「小麦粉代をください」と申告して出納係 から3,000円もらう – 「従業員の給料をください」といって出納係からそ れぞれ100,000円もらう ● エラーが発生したらそれは出納係の責任
  • 9. 2018年講義資料 Copyright © Jun Iio 9 情報隠蔽 ● 「グローバル変数を使わない」 ● 手続きとデータを一体化し,ブラックボックス 化する ● 金庫の例: – もはや従業員は金庫の存在を知る必要はない – 金の受け渡し(インタフェース)さえ知っていれば よい ● 手続きを「構造化」し, データは「局所化(ローカル化)」して隠蔽
  • 10. 2018年講義資料 Copyright © Jun Iio 10 「情報隠蔽」の効果 ● 「再利用性」の向上 ● 再利用とは – プログラムを使い回すこと ● 構造化プログラミング→オブジェクト指向 – 構造化プログラミングで処理がモジュール化された – しかし「グローバル変数」を使っていると,完全に 分離することが難しい – オブジェクト指向で「情報隠蔽」され,モジュール がきれいに分離,再利用性が高まった
  • 11. 2018年講義資料 Copyright © Jun Iio 11 (しつこく)たこ焼き屋で説明 ● 出納係に関する処理とデータをモジュール化 – 「べつにたこ焼き屋じゃなくても,いんじゃね?」 → Yes! ● 出納係モジュールの再利用 – お好み焼き屋 – うどん屋 – 定食屋,寿司屋,トンカツ屋, … ● (おまけ)株式会社総務部