「コンピュータサイエンス」サポートページ

授業担当教員:金子邦彦(情報工学科), サポートページ:https://www.kkaneko.jp/cs/index.html, 場所:4号館3階PC1室(04201室), 福山大学キャンパスマップ:https://www.fukuyama-u.ac.jp/about/access/, 時間:金曜日2時限

お知らせ

受講生が各自のノートパソコンを持参し、授業中に、学修のために利用することを歓迎しています。ただし、演習は、パソコン教室でのパソコンを利用するため、ノートパソコンの持参が必要というわけではありません。

「コンピューターサイエンス」説明動画を再生
コンピューターサイエンス・ガイダンス [動画]
, [パワーポイント] (Gemini, Vrew を用いて作成)


今年度(2026年度)の資料について

第1回 無料ソフトウエア,無料データ,Scratchプログラミング,Scratchのキャラクタ

無料ソフトウェアには,フリーウェアと,ソースコードが公開され自由に利用・改変・再配布できるオープンソースソフトウェアがある。 無料ソフトウェアや無料データの利用時は,作者が定める利用条件を確認し,著作権を尊重する必要がある。 情報工学は,コンピュータを用いて問題を解決する学問分野で,対象・構造・条件を整理して解決方法を設計する。 Scratchは,コンピュータに実行させる手順であるプログラムを,ブロックを組み合わせて作るビジュアル環境である。順次実行・繰り返し・条件分岐を学ぶことができる。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[YouTube動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだプログラミングの概念を各自が実践する.

演習① Scratchの開始・ブロック操作

説明パートの1-4「プログラムとは」「イベント駆動」「順次実行」「ブロック操作の基本」に対応する演習である.Scratchを起動し,イベントブロックと動きブロックを組み合わせて,キャラクタを動かす最小限のプログラムを作成する.「旗が押されたとき」というイベントに「10歩動かす」という動作を接続する操作を通じて,イベント駆動と順次実行の基本を体験する.

URL: https://scratch.mit.edu/

前提スキル:Webブラウザの操作,URLの理解.ドラッグ操作(左ボタンを押しながら移動し,左ボタンを離す).

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://scratch.mit.edu/ を開く.
  3. 「作ってみよう」をクリックする.
  4. 「イベント」をクリックし,「旗が押されたとき」をドラッグする.
  5. 「動き」をクリックし,「10歩動かす」をドラッグし,「旗が押されたとき」と合体する.
  6. 旗ボタンをクリックする(キャラクタが少し右に動く).旗ボタンを数回クリックしてみよう.

観察と考察

演習② キャラクタ・スプライト

説明パートの1-5「キャラクタの基本」「スプライト(キャラクタ画像)」に対応する演習である.新しいスプライトを追加し,追加したキャラクタに対して個別にブロックを組み立てる.キャラクタごとに独立したプログラムを持つというスプライトの基本的な仕組みを確認する.

操作手順

  1. スプライト一覧(画面右下)の猫のアイコンにカーソルを合わせ,「スプライトを選ぶ」をクリックする.
  2. 好きなキャラクタを選ぶ.
  3. 新しいキャラクタを選んでから,演習①と同様に「旗が押されたとき」と「10歩動かす」のブロックを組み立てる.
  4. 旗ボタンをクリックするとキャラクタが動く.何度かクリックしてみよう.

観察と考察

演習③ キャラクタの制御

説明パートの1-6「①繰り返し」「②もし・・・たら,・・・する(条件分岐)」「③強制停止」に対応する演習である.「ずっと」ブロックによる繰り返し,「もし端に着いたら,跳ね返る」ブロックによる条件分岐,赤ボタンによる強制停止を組み合わせて,キャラクタが自動的に動き続けるプログラムを作成する.さらに「右に15度回す」ブロックを追加し,動きの初期方向を変更する効果を確認する.

操作手順

  1. 演習②で追加したキャラクタが選ばれていることを確認する.
  2. 「制御」を選び「ずっと」をドラッグして,「10歩動かす」を囲むように合体する(「10歩動かす」が「ずっと」の中に入る形になる).
  3. 「動き」を選び「もし端に着いたら,跳ね返る」をドラッグして,「ずっと」の中の「10歩動かす」の下に合体する.
  4. 旗ボタンをクリックするとキャラクタが動く.赤ボタンをクリックすると止まる.
  5. 赤ボタンをクリックして止めてから,「動き」の「右に15度回す」を「旗が押されたとき」と「ずっと」の間に加える.
  6. 旗ボタンをクリックするとキャラクタが動く.赤ボタンをクリックすると止まる.動き始めの瞬間に15度傾く.

観察と考察

演習④(余裕のある人向け)

説明パートの1-4「ブロックの形状と合体ルール」,1-5「キャラクタの操作」,1-6すべてに対応する活動である.演習①~③で学んだブロック操作,スプライト管理,繰り返し,条件分岐を組み合わせ,各自の工夫により自由にプログラムを作成する.ブロックの形状による合体ルールを手がかりに,未使用のブロックにも挑戦する.

操作手順

観察と考察

第2回. 人工知能の仕組み

人工知能は,コンピュータが人間のような知的能力を持つことを目指す技術である。 データから自ら学習する機械学習と,人間が書いたルールや知識を用いる知的なITシステムに大別される。 応用分野は,画像分類,顔検知,対話型AI,自動翻訳,データ分析と予測,テキストからの画像合成など多岐にわたる。 学習データに偏りがあると結果にも偏りが出るため利用には注意が必要である。AIは人間を支援する道具であり,最終的な判断は人間が行う。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[YouTube動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだAIの概念を,オンラインデモを通じて体験する.各デモの結果を観察し,考察すること.

使用するサイトの都合上、習っていない言葉(例:隠れ層)などが出てくるが、続行して欲しい。今回の説明内容に合致する外部サイトを選んでいる。

演習1. TensorFlow Playground(機械学習・ニューラルネットワーク)

ニューラルネットワークの基本構造に関する演習である.ニューラルネットワークの構造やパラメータを変更しながら,学習過程の変化を観察する.

URL: https://playground.tensorflow.org

操作手順

  1. ページを開く
  2. 画面左上の「DATA」セクションで,データセット(円形,XOR,渦巻き等)を選択する
  3. 必要に応じて、「FEATURES」セクションで入力特徴量(X1,X2等)を選択する
  4. 必要に応じて、「HIDDEN LAYERS」の「+」「-」ボタンで隠れ層の数を変更する.各層のニューロン数も「+」「-」で変更できる
  5. 画面上部の再生ボタン(▶)をクリックして学習を開始する
  6. 学習が進む様子と,出力領域の色分けの変化を観察する
  7. Learning rateやActivation関数を変更し,学習結果の違いを比較する

観察と考察

演習2. PathFinding.js Visual(知的なITシステム)

探索による問題解決に関する演習である.探索アルゴリズムが経路を見つける過程を可視化し,コンピュータによる探索の仕組みを理解する.

URL: https://qiao.github.io/PathFinding.js/visual/

操作手順

  1. ページを開く
  2. グリッド上でマウスをドラッグして壁(障害物)を配置する
  3. 緑色のノード(スタート地点)と赤色のノード(ゴール地点)はドラッグで移動できる
  4. 画面上部のドロップダウンからアルゴリズム(A*,BFS,DFS等)を選択する
  5. 「Start Search」ボタンをクリックする
  6. 探索対象のセル(水色)と最短経路(黄色)がアニメーションで表示される
  7. アルゴリズムを変更して,探索の仕方の違いを比較する

観察と考察

演習3. CNN 3D Visualization(Adam Harley)(機械学習・ニューラルネットワーク)

ニューラルネットワークの基本構造に関する演習である.畳み込みニューラルネットワーク(CNN)の内部構造を3Dで可視化し,各層がどのように入力を処理しているかを観察する.

URL: https://adamharley.com/nn_vis/cnn/3d.html

操作手順

  1. ページを開く(使用するWebブラウザの種類・バージョンによって動作しない場合がある)
  2. 左下の描画パッドに数字(0〜9)をマウスで描く
  3. 3D表示されたネットワークの各層のニューロンの活性化(色の変化)をリアルタイムに観察する
  4. 各ニューロンにマウスカーソルを合わせると,そのニューロンが何を検出しているか確認できる
  5. 異なる数字を描き,ネットワークの反応の違いを比較する

観察と考察

演習4. AutoDraw(Google)(AIによる合成)

人間の下書きをAIが清書する演習である.手描きの下書きをAIが認識し,候補イラストを提示する仕組みを体験する.

URL: https://www.autodraw.com/

操作手順

  1. ページを開く
  2. li>最初、緑色の「Start Drawing」をクリック
  3. 画面左側のツールバーから「AutoDraw」ツール(魔法の杖アイコン)を選択する
  4. キャンバスに絵(例:猫,車,花等)を手描きする
  5. 画面上部にAIが推測した候補イラストが表示される
  6. 候補の中から適切なものをクリックすると,手描きが清書に置き換わる

観察と考察

第3回. デジタル画像

デジタル画像は格子状に並んだ画素から構成され,輝度(明るさ)のみを持つ濃淡画像と,輝度と色の情報を持つカラー画像がある。 カラー画像の成分は,R(赤)・G(緑)・B(青)の3成分で表す方法と,輝度成分と色成分で表す方法がある。 畳み込み(フィルタ処理)は,周囲の画素にフィルタの重みを掛けて和をとり各画素の値とする操作で,ぼかし・エッジ検出・シャープ化などを実現する。 空間周波数は明暗の変化の細かさを表し,スペクトルの中心は低周波,周辺は高周波に対応し,高周波除去でぼかし,低周波除去で輪郭抽出ができる。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだデジタル画像の概念(画素,カラー画像の成分,畳み込み,空間周波数),画像制作におけるコンピュータの有用性を,Webブラウザ上で動作するサイトを通じて実践的に体験する.いずれもインストール不要で,マウス操作のみで体験できる.

演習① ペイントソフト Fluid Paint

Fluid Paint は油絵具の物理特性をシミュレートするペイントソフトであり,筆の色,サイズ,毛先の数(Bristle Count),流動性(Paint Fluidity)を設定して描画できる.画素ごとに色情報を持つカラー画像が生成される過程と,周囲の画素同士が相互作用してにじみや混色が生じる様子を観察できる.

URL: https://david.li/paint/

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://david.li/paint/ を開く.
  3. 画面のメニューから色(Paint Color)を選択する.
  4. キャンバス上でマウスの左ボタンを押し続けながらドラッグし,線を描く.
  5. マウスホイールをスクロールして筆のサイズ(Brush Size)を変更し,再度ドラッグして線を描く.
  6. 毛先の数(Bristle Count),流動性(Paint Fluidity)の各項目を変更し,それぞれ線を描いて筆跡の違いを確認する.
  7. 異なる色を選択し,先に描いた線の上に重ねて描画して混色の様子を観察する.
  8. 誤った操作をしたときは Undo(元に戻す)をクリックする.キャンバス全体を消去するときは Clear をクリックする.

観察と考察

演習② アート作品制作サイト Silk

Silk は対称性を持った曲線をマウス操作で描けるジェネレーティブアートのサイトである.対称(Mirror)や螺旋(Spiral)といった機能により,少ない操作で複数の曲線からなる構造を生成できる.

URL: http://weavesilk.com/

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで http://weavesilk.com/ を開く.
  3. 「Draw Something」をクリックして開始する.
  4. キャンバス上でマウスをゆっくりドラッグし,曲線を描く.初期状態では対称性が有効になっており,1本のドラッグから複数の曲線が同時に描画される.
  5. 左上のメニューの「Controls」で、色(Color)を選択する.
  6. 左上のメニューの「Controls」で、色の下にある対称数(symmetries)のスライダーを用いて対象数を変更,描画して,結果の違いを確認する.
  7. 「Mirror across center」(中心鏡映対称)のオン/オフを切り替え,それぞれで描画する.
  8. 「Spiral towards center」(中心への螺旋)のオン/オフを切り替え,それぞれで描画する.
  9. 1つ前の操作を取り消すときは Z キーを押す.キャンバスを全消去するときは Space キーを押す.

観察と考察

演習③ 流体シミュレーション WebGL Fluid Simulation

WebGL Fluid Simulation は,流体の物理シミュレーションをGPU上で実行し,マウス操作で光の渦のような流体表現を生成するサイトである.流体の各時点の状態は,前時点の各画素の値とその周囲の画素の値から計算される.設定メニューでは密度の減衰(density diffusion ),速度の減衰(velocity diffusion),渦度(Vorticity),噴出半径(Splat Radius),ブルーム(Bloom),光線(Sunrays)などのパラメータを変更できる.

URL: https://paveldogreat.github.io/WebGL-Fluid-Simulation/

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://paveldogreat.github.io/WebGL-Fluid-Simulation/ を開く.
  3. キャンバス上でマウスをドラッグし,流体の動き(splat)を生成する.
  4. マウスを動かす速さを変えて,生成される渦の様子を比較する.
  5. キャンバスの異なる位置で複数回ドラッグし,渦同士が干渉する様子を観察する.
  6. 画面右上の歯車アイコンをクリックして設定メニューを開き,密度の減衰(density diffusion ) の値を変更してから再度ドラッグする.色がどれだけの時間で消えるかを比較する.
  7. Splat Radius の値を変更し,1回のドラッグで生成される渦の大きさを比較する.

観察と考察

演習④ Setosa.io:画像にフィルタを適用

説明パートで学んだ「画像は画素値を並べた2次元配列である」「畳み込みは画像上の各位置で近傍の画素値とカーネル(フィルタ)の値の要素ごとの積の和を計算する操作である」という概念に対応する演習である.カーネル(フィルタ)を切り替えて出力画像の変化を確認する.出力画像および入力画像の任意の画素にマウスを合わせることで,3×3近傍の画素値とフィルタの値の積和演算の過程を数値で確認する.

URL: https://setosa.io/ev/image-kernels/

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://setosa.io/ev/image-kernels/ を開く.
  3. 顔画像と画素値(0〜255)の行列が表示されていることを確認する.
  4. ページ下部のプレイグラウンドで,「kernel」の下のメニューから「blur」を選び,出力画像の変化を確認する.
  5. 同様に「bottom sobel」「emboss」「identity(何も変化しないフィルタ)」「left sobel」「outline」「right sobel」「sharpen」「top sobel」を順に選び,それぞれの出力画像を確認する.
  6. 出力画像の任意の画素にマウスを合わせる.入力画像の対応する3×3近傍が強調表示され,3×3近傍の各画素値とフィルタの各値の要素ごとの積,およびその合計が表示されることを確認する.

観察と考察

演習⑤ deeplizard:畳み込みを1ステップずつ確認する

演習④で確認した「フィルタを適用すると画像がどう変わるか」を踏まえ,本演習では「そのとき何が計算されているか」を確認する.フィルタが入力行列上を1マスずつスライドする過程を可視化し,出力行列の各要素がどの入力領域から計算されたかを追跡する.出力値の正(赤)と負(青)の色分けにより,畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が画像から特徴を抽出する原理を確認する.

URL: https://deeplizard.com/resource/pavq7noze2

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://deeplizard.com/resource/pavq7noze2 を開く.
  3. 入力行列,3×3のフィルタ,出力行列の表示欄の3つが表示されていることを確認する.フィルタサイズは3×3であることを確認する.
  4. 「Play(再生)」をクリックし,フィルタが入力行列上を1マスずつスライドし,出力行列の各要素が順次計算されていく過程を確認する.
  5. 出力行列の任意の画素にマウスを合わせる.対応する入力の3×3領域とフィルタの要素ごとの積,およびその合計が表示されることを確認する.
  6. 出力行列全体を見渡し,正の値(赤)と負の値(青)の分布を確認する.

観察と考察

演習⑥ 2D Inverse Fourier Transform Playground:空間周波数を操作

本演習では,画像を周波数領域で表現したスペクトル上で編集を行い,その逆フーリエ変換(周波数を画像に戻す処理)結果を確認することで,空間周波数成分と画像の対応関係を確認する.スペクトル中心の低周波成分が画像の大局的な明暗に対応し,周辺の高周波成分が輪郭や細部に対応することを,スペクトルを削る操作を通じて確認する.

URL: https://monman53.github.io/2dfft/

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://monman53.github.io/2dfft/ を開く.
  3. 「Original image(原画像)」「Result(マスク適用後の逆フーリエ変換結果)」「Masked spectrum(編集可能なマスク付きスペクトル)」「Spectrum(スペクトル)」の4つが表示されていることを確認する.
  4. 右下の「白」のボタンをクリックする。このとき Result に原画像が表示されることを確認する.これは全ての周波数成分が通過している状態に対応する.
  5. Masked spectrum の周辺部(高周波成分)を左ドラッグで削る.削るための大きさは、マウスホイールで調整できる。マウスホイールで,削る範囲を調整して,様々な削り方を試す.結果として、Result の画像から輪郭や細部が失われていく過程を確認する.
  6. 次に,Masked spectrum の中心部(低周波成分)を左ドラッグで削る.Result の画像から大局的な明暗が失われ,輪郭成分が残ることを確認する.
  7. 途中で、右下の「白」のボタンをクリックして、もとに戻しながら、色々と試してみる。

観察と考察

第4回. ストリートビュー,3次元コンピュータグラフィックス

Google Mapのストリートビューは地図上の地点における道路からの画像を閲覧する機能で,地名や施設名で検索できる。 オブジェクトを様々な方向から撮影し3次元データを得る処理を3次元再構成という。ポリゴン(平らな多角形)の集合体であるポリゴンメッシュで3次元モデルを表現できる。 Google Earthは無料のオンラインの地球儀で,2次元・3次元の地図表示やストリートビューの機能を持つ。 Blenderは無料の3次元コンピュータグラフィックス(3DCG)の作成・編集ソフトウェアで,3次元モデル制作,アニメーション,画像出力などの機能を持つ。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

[演習の詳細を表示するには、この行をクリックしてください]

演習① Google Mapのストリートビューを用いた探索

ストリートビューは,地図上の地点における道路からの画像を閲覧する機能である.Google Mapではストリートビューのモードへ切り替えて利用する.本演習では,Google Mapで地名等を検索し,ストリートビューでの表示と移動を行う.

URL: https://www.google.co.jp/maps

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://www.google.co.jp/maps を開く.
  3. 検索欄に地名,施設名,住所などのキーワードを入力して検索する.
  4. 右下の「人型のボタン」をクリックして,ストリートビューのモードへ切り替える.

    道路沿い等に多数の青色の表示が付くことを確認する.

  5. 青色の表示をクリックして,その場所のストリートビューを表示する.
  6. マウスの左ボタンを押しながらマウスを動かして,見ている向き(注視方向)を変える.
  7. マウスを道路の上に置くと,「^」の記号が入った白丸が表示される.

    白丸をクリックして移動する.

  8. 別の場所のストリートビューを見るときは,左上の「←」をクリックして元の地図に戻る.

ヒント

考察ポイント


エベレスト

富士山

演習② Google Earthを用いた探索

Google Earthは,無料で利用可能なオンラインの地球儀である.Google Earthには,写真,3次元コンピュータグラフィックス,写真+標高,地球儀,ストリートビューの機能がある.本演習では,Google Earthで地名等を検索し,自由な視点移動を行いながら,ストリートビューとの違いを確認する.

URL: https://earth.google.com

操作手順

  1. Webブラウザを起動する.
  2. Webブラウザで https://earth.google.com を開く.
  3. もし、プロジェクト一覧の画面が表示された場合は,「新規」をクリックして「新しい地図」を選ぶ.
  4. 検索欄に地名,施設名,住所などのキーワードを入力して検索する.
  5. 検索結果から場所を選ぶ.
  6. マウス操作により視点を移動する.
  7. 右下の「2D」「3D」ボタンをクリックして,2次元表示と3次元表示を切り替え,両方の表示を確認する.
  8. 別のキーワードで再度検索し,異なる場所を同様に確認する.

ヒント

考察ポイント

演習③ Blenderの体験

Blenderは,3次元コンピュータグラフィックス(3DCG)の作成・編集ソフトウェアであり,無料で利用可能である.3次元モデル制作,アニメーション,レンダリング(画像生成)などの機能を提供する.本演習では,Blenderの起動,立方体の確認,球と円柱の追加と移動,色の設定とレンダリングを行う.

Blender ダウンロードページ:https://www.blender.org/download/

Blender のインストールの説明: https://www.kkaneko.jp/db/cg/blenderinst.html

事前準備:上記ダウンロードページから Blender を入手し,インストールしておくこと.

注意:オブジェクトはカメラから見える範囲に配置すること.カメラの移動については本演習では扱わないので,興味のある人は各自で調べてほしい.

操作手順

  1. Blenderを起動する.
  2. 3Dビューポート内に表示されている立方体(Cube)を確認する.カメラとライトもあわせて配置されている.
  3. 立方体を左クリックして選択する.右上のアウトライナー(オブジェクト一覧)から選択することもできる.
  4. 選択した立方体に対して,移動の操作を行う.キーボードの G キーを押した後にマウスを動かして位置を決め,左クリックで確定する.軸を固定したい場合は,G キーの後に X/Y/Z のいずれかを押す.3Dビューポート上のギズモ(矢印)をドラッグして移動することもできる.
  5. 余裕があれば,選択した立方体に対して,回転(R キー),拡大・縮小(S キー)の操作も試してみる.いずれもキーを押した後にマウスを動かして変形量を決め,左クリックで確定する.
  6. 球を追加する.3Dビューポートのヘッダの「追加(Add)」→「メッシュ(Mesh)」→「UV球(UV Sphere)」を選ぶ(キーボードの SHIFT + A でも同じメニューが開く).
  7. 追加した球を選択し,移動する.

    左クリックして選択する.右上のアウトライナー(オブジェクト一覧)から選択することもできる.

  8. 同じ手順で円柱を追加する.「追加(Add)」→「メッシュ(Mesh)」→「円柱(Cylinder)」を選ぶ.
  9. 追加した円柱を選択し,移動する.

    左クリックして選択する.右上のアウトライナー(オブジェクト一覧)から選択することもできる.

  10. 色を設定するオブジェクトを選択する(立方体・球・円柱のいずれでもよい.時間に余裕があれば,3つそれぞれに異なる色を設定してもよい).

    左クリックして選択する.右上のアウトライナー(オブジェクト一覧)から選択することもできる.

  11. プロパティから「マテリアル」を開く.

    「マテリアル」が見えないときはスクロール.

  12. 「新規(New)」をクリックする.

    「新規(New)」が表示されない場合は,問題ない.次へ進む(表示されないのは,マテリアルがすでに作成済みであるため.問題ない).

  13. 「ベースカラー(Base Color)」をクリックする.カラーピッカーが開くので,色を設定する.
  14. F12キーを押してレンダリングを行う.新しくレンダリングの結果の画像の画面が開く.この画面で,設定した色を確認する.F12キーが効かない,または無い場合は,メニューの「レンダー(Render)」→「画像をレンダリング(Render Image)」を実行する.確認したら,レンダリングの画面を閉じる.

ヒント

考察ポイント

第5回. コンピュータの構成要素とデータ処理の仕組み

コンピュータは,プロセッサ(計算),メモリ(一時保存),入力装置,出力装置,補助記憶装置の5要素で構成され,プロセッサとメモリ間でデータがやり取りされる。データは二進数(0と1のビット列)で扱われ,メモリは1バイト(8ビット)単位にアドレス(0から始まる通し番号)が付与される。文字はASCIIなどのルールで数値に変換される。16進数(0〜9,A〜F)は二進数4桁を1桁にまとめる表記法である。論理演算(AND,OR,NOT)の組み合わせで足し算などの算術演算が実現でき,負の整数は2の補数(最上位ビットで符号を表現)で扱う。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習①:文字コードを観察する

前提

手順

ステップ 1:1文字の文字コードを表示する

  1. ブラウザで次のページを開く。https://trinket.io/python/595c091dd9
  2. 表示されているプログラムを確認する。
    c = 'A'
    print(hex(ord(c)))
  3. 実行ボタン(▶)を押す。
  4. 結果欄に 0x41 と表示されることを確認する。

ステップ 2:入力した文字列を文字コードへ変換する

  1. ブラウザで次のページを開く。https://trinket.io/python/17fb2ed2d5
  2. 実行ボタンを押す。
  3. 結果欄を一度クリックしてから、文字列(例:abcde)を入力し、Enter キーを押す。
  4. 各文字の文字コードが1行ずつ16進数で表示されることを確認する。

ヒント

考察ポイント

  1. 'B' を入力したときの出力を表から予想し、実行して確かめる。資料 ('A' → 01000001 → 16進数 41、'B' → 01000010 → 16進数 42)と対応がとれるはず。
  2. 大文字と小文字を続けて入力(例:Aa)し、文字コードの違いを観察する。
  3. 文字列 abcde を入力すると、5行の文字コードが出力される。これは 文字列が1文字ずつ文字コードに変換されること を示している。

演習②:論理演算(AND、OR)を観察する

前提

手順

ステップ 1:プログラムを実行する

  1. ブラウザで次のページを開く。https://trinket.io/python/7f31113af9
  2. 表示されているプログラムを確認する。
    a = True
    b = False
    
    print("a and b =", a and b)
    print("a or b =", a or b)
  3. 実行ボタン(▶)を押す。
  4. 結果欄に次のように表示されることを確認する。
    ('a and b =', False)
    ('a or b =', True)

ステップ 2:4通りの組み合わせを確かめる

ab の値を次の4通りに書き換え、それぞれ実行ボタンを押して結果を確認する。

ヒント

考察ポイント

  1. a = Trueb = True のときの a or b の結果について、資料 「論理和と『選択』の違い」(焼き芋大会の例)と関係づけて、両方が True のときも OR の結果が True になることを確認する。

演習③:論理演算で1桁の足し算を作る

前提

手順

ステップ 1:プログラムを書き換えて実行する

  1. ブラウザで演習②と同じページを開く。https://trinket.io/python/7f31113af9
  2. プログラムを次のコードに書き換える。
    a = True
    b = True
    
    upper = a and b
    lower = (a or b) and not (a and b)
    
    print("a =", a, ", b =", b)
    print("上位ビット =", upper)
    print("下位ビット =", lower)
  3. 実行ボタン(▶)を押す。
  4. 結果欄に次のように表示されることを確認する。
    a = True , b = True
    上位ビット = True
    下位ビット = False

ステップ 2:4通りの組み合わせを確かめる

ab の値を次の4通りに書き換え、それぞれ実行ボタンを押して結果を確認する。

ヒント

考察ポイント

  1. a = Trueb = True のときの結果(上位ビット True、下位ビット False)が、二進数の足し算 1 + 1 = 10 に対応していることを確認する。

第6回. デジタル社会でのマナー,情報セキュリティ―デジタル時代のガイド ー

情報の真偽は,疑問を持つ姿勢,情報源の確認,および複数の情報源との照合により判断する。 個人情報や私的な内容は,一度発信すると取り消せず世界中に拡散する可能性があるため,慎重に扱う。 不審な警告やオファーには応じず,落ち着いて対処したうえで,他者に相談して被害を防ぐ。 AIに入力した情報は学習データとして利用される場合があるため,個人情報の入力は控える。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習1:ウェブブラウザでの通信内容

概要

ウェブブラウザでの情報アクセスについて、実際の通信内容を確認する。Google Chrome に標準搭載されているデベロッパーツール(ブラウザに付属する開発者向けの確認ツール)を用いて観察する。

体験内容

使用するツール

安全性について

デベロッパーツールは、ブラウザがすでに受信したデータを表示するだけの機能であり、外部への送信や PC 内のファイルの書き換えは行わない。アクセス先の www.fukuyama-u.ac.jp は公開サイトであるため、アクセスに問題はない。

手順

  1. Google Chrome を起動
  2. サイト(https://www.fukuyama-u.ac.jp)をアドレスバーに入力して開く。
  3. キーボードの F12 キーを押し、画面の右側または下部にデベロッパーツールを表示する(F12 が反応しない場合は、ページ上で右クリックし「検証」を選択する)。デベロッパーツールは、ブラウザの画面内に分割表示される。閉じるときは右上の「×」ボタンを押す。
  4. 「DevTools is now available in Japanese」と表示されたときは「Switch DevTools to Japanese」を選び、日本語表示に切り替える(この案内は初回のみ表示される。表示されない場合は次の手順に進む)。
  5. デベロッパーツール上部のタブから「ネットワーク (Network)」を選択する。

    ネットワーク (Network) タブが見当たらない場合は、タブ列の右端にある「»」マーク(隠れたタブを展開する記号)をクリックし、一覧から選ぶ(下図)。

  6. ネットワーク (Network) タブを表示した状態で、ブラウザの再読み込みボタンを押す(または Ctrl+R キーを押す)。タブ内のリストに、ページ表示時に発生した通信が一覧表示される(再読み込みを行うのは、デベロッパーツールを開く前に発生した通信が記録されていないためである)。
  7. リストの一番上に表示される項目(www.fukuyama-u.ac.jp)をクリックする。一番上の項目が、ページ本体(HTML文書)の通信に対応する。
  8. 右側に詳細パネル(選択した通信の中身を表示する区画)が開く。
  9. 詳細パネル内の「ヘッダー (Headers)」タブを選択し、ヘッダーの内容(通信の制御情報)を確認する。
  10. 次に「レスポンス (Response)」タブを選択し、ボディの内容(届けられた本文データ。ここではHTMLのソースコード)が表示されることを確認する。
  11. 補足として、デベロッパーツール上部の「Security」タブを選択すると、現在表示しているページの接続において通信が暗号化されているかを確認できる。
  12. 暗号化通信であるHTTPSであっても、ブラウザのデベロッパーツールでは送受信されたデータが画面上で読める形式で表示される。これは、ブラウザが受け取ったデータを復号した後の状態(暗号化を解いた後の元のデータ)を表示しているためである。通信自体は暗号化されている。

考察ポイント

  1. 1つのページの表示にあたり、画像、スタイルシート(ページの見た目を指定するファイル)等の取得を目的として複数の通信が発生していることを観察する。

演習2:AIのバイアスの観察

概要

画像生成AI(指示文に基づき画像を自動生成するAI)を利用し、特定の属性(職業、役割など)を含むプロンプト(AIへの指示文)を入力することで、AIの出力に現れる偏り(バイアス)と、AIの責任ある利用について検討する。

体験内容

使用するツール

安全性について

Microsoft 365 Copilot Chat は、大学契約の Microsoft 365 環境に含まれる正式なサービスである。操作はブラウザ内で完結し、追加のソフトウェアはインストールしない。Microsoft の公式仕様(エンタープライズデータ保護。組織契約者向けに入力データの取り扱いを保護する仕組み)により、大学アカウントでのサインイン時に入力したプロンプトと応答は、Microsoft の大規模言語モデル(テキストを生成するAIの基盤)の再学習には用いられない。利用者側で守る点は、自身や他人の氏名、住所、顔写真、未公表の研究内容などをプロンプトに入力しないことである。

手順

  1. ブラウザで Microsoft 365 Copilot Chat のページ(https://m365.cloud.microsoft/chat)にアクセスする。
  2. 大学から付与されたアカウントでサインインする。サインイン後、チャット入力欄が表示される画面に遷移する。
  3. チャット入力欄に、画像生成を指示するプロンプトを入力する。本演習では、次の3つのプロンプトを1つずつ順に試行する(3つをまとめて1回で入力するのではなく、1回の入力につき1つのプロンプトを送信する)。プロンプトの先頭には、いずれも 画像を作成してください: を付与する。
    • 画像を作成してください:ナース
    • 画像を作成してください:ソフトウエアエンジニア
    • 画像を作成してください:社長
  4. 画像が生成されるまで待機する(生成には数秒から数十秒を要する場合がある)。生成結果が表示されない(テキスト応答のみが返る)場合は、画像として出力してください と追記して再送信する。
  5. 各プロンプトについて、生成された人物の性別、人種、年齢、服装、背景などの属性を観察し、偏り(バイアス。特定の属性に出力が偏る現象)の有無を考察する。
  6. 生成結果に偏りが見られた場合、同じプロンプトを再実行し、偏りが継続するか観察する(生成AIは実行のたびに異なる画像を出力するため、複数回実行して傾向を確認する)。そのうえで、偏りの原因として考えられる事項(学習データの構成、社会通念上の典型的なイメージの反映など)を考察する。

ヒント

考察ポイント

  1. 3つのプロンプトの生成結果について、性別、人種、年齢、服装、背景の各属性に偏りが見られたかを確認する。
  2. 偏りが見られた場合、学習データの構成や社会通念上のイメージなど、考えられる原因を整理する。
  3. AI生成物を SNS で公開する際に注意すべき点(出典の明示、事実の確認、個人情報の取り扱い)を考察する。

演習3:サイトの安全性チェックサービス

概要

公開されている安全性チェックサービス(URLを入力するとそのサイトの安全性に関する情報を返すサービス)を用いて、Webサイトの安全性を確認するためのヒントを得る手順を学ぶ。

体験内容

使用するツール

安全性について

使用するサービスは公開された Web サービスであり、ブラウザのみで動作する。送信されるのは利用者が入力した URL の文字列のみであり、利用者の PC がスキャンされることはない。

手順

  1. Google Transparency Report の Safe Browsing site status のページ(https://transparencyreport.google.com/safe-browsing/search)を開く。
  2. ページ中央の検索ボックスに、確認したいサイトのURL(ドメイン名。例:www.example.com の形式。https:// は省略可)を入力する。本演習では、次の3つを順に入力する。
    • 福山大学公式サイト:www.fukuyama-u.ac.jp
    • google.com
    • 自身がよく利用するサイト(公開されたサイトに限る。限定公開などにしている自分のSNSのURLは入力しない)
  3. 表示される内容を確認する(「No unsafe content found」と表示された場合は、Google の調査時点で不正な内容が検出されなかったことを示す。検出された場合は、その旨が表示される)。

考察ポイント

  1. フィッシング詐欺への対策(メールに記載されたURLの確認など)における本サービスの利用方法を考察する。
  2. 診断結果のみではサイトの信頼性を100%判断できない理由を、自分の言葉でまとめる(例:Google の調査が及んでいない新規サイト、調査時点以降に不正化したサイトの存在など)。

第7回. プログラミング思考の基礎

プログラミング思考は、分解・パターン・抽象化・アルゴリズム化などの要素がある。 プログラムの書き方の基本は「オブジェクト.メソッド(引数)」である。 変数は値に貼る名札、オブジェクトはその先の実体と確認すると分かりやすい。 LLMはプログラミング学習にも役立つ。ただし、AIが生成したコードは必ず検証する。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習① CodeCombat(コードコンバット)による Python プログラミング入門

CodeCombat(コードコンバット)は,ゲームをクリアするために必要なプログラムを書くことで,Python の基本を楽しく学ぶことができるオンライン教材である.登録不要・無料の範囲で,クラスコードを使わずに Python の最初の 5 つのレベルを学ぶことができる.本演習では,オブジェクト・メソッド・引数というプログラミング思考を支える基本概念を,キャラクタを動かす操作を通じて体験する.

CodeCombat のサイト:https://codecombat.com

操作手順

  1. Web ブラウザで https://codecombat.com を開く.

    ※ 課金のメッセージなどで心配なことがあるときは,無理に使い続けないこと.

  2. 表示が日本語になっていない場合は,右上のメニューで,言語設定を「日本語」に変更する.アカウント登録やログインは行わない.
  3. トップ画面の「Start Playing」をクリックする.
  4. クラスコード入力画面にクラスコードは入力せず,そのまま「今すぐプレイ」をクリックする.
  5. コース一覧の中から 「KITHGARD DUNGEON(キースガードのダンジョン)」を選び,「ゲームスタート」をクリックする.音が出るので,このときに各自で音量を調整する.
  6. 「キースガードのダンジョン」の最初のダンジョンを選ぶ.いまから4つのレベルのクリアを目指す(そこから先は有料で各自の会員登録が必要).
  7. レベル開始画面で「ゲームスタート」をクリックする.
  8. 使用言語の選択画面で 「Python(デフォルト)」を選び,「次へ」をクリックする.
  9. 使用可能なアイテムをダブルクリックして装備する.
  10. 「ゲームスタート」をクリックし,続いて「レベルスタート」をクリックする.
  11. 編集画面が表示されたら,試しに hero.moveDown() という行を追加し,「実行」をクリックしてキャラクタの動きを確認する.hero.moveRight() で右に,hero.moveDown() で下にキャラクタが動くことを確かめる.
  12. 画面に表示されている「ミッション(目標)」を読み,目標達成に必要なメソッド呼び出しを編集画面に書き加える.書き換えと「実行」を繰り返し,「目標:成功!」と表示されるまで進める.
  13. 成功したら「完了」をクリックし,完了確認画面で「続ける」をクリックする.
  14. マップに戻ったら,青い旗をたどって次のレベルに進む.新しい装備が増えた場合は,ダブルクリックして装備する.
  15. 無料・登録不要の範囲で進められる 4 つのレベルを順にクリアする.「プラチナを購入」とあるものは、有料で各自の会員登録が必要
  16. クラスコードを入れると、別の種類の演習になる

ヒント

考察ポイント

第8回. Python プログラミング基礎①

プログラミングはアイデアを形にする創造的作業である。 変数は値(オブジェクト)を指す名札であり、代入「左辺=変数、右辺=式」で値を結びつけ書き換える。 計算(演算子)・出力(print)・入力(input)・外部機能の取り込み(import)が基本要素である。 タートルグラフィックスでは図形描画を通じ、発想力・自主性・省察(ふりかえり)の姿勢を育てる。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

このガイドは,ブラウザだけで Python を実行できる学習サイト Trinket を用いた演習である.各演習は,trinket のページを開いて実行結果を確認することが基本である.Trinket は,画面左で編集,画面右の「Result」で結果を確認し,「Run」で実行,「STOP」で停止する.

演習オンラインガイド

ブラウザだけで Python を実行できる学習サイト Trinket を用いた演習である.各演習は,trinket のページを開いて実行結果を確認することが基本である.Trinket は,画面左で編集,画面右の「Result」で結果を確認し,「Run」で実行,「STOP」で停止する.

演習① 変数と代入,+を用いた文字列連結

変数に値を代入し,print() と + による文字列連結で,変数の内容を画面に表示する演習である.

使用する trinket のページ:https://trinket.io/python/abafd851480a

手順

  1. Webブラウザで,URL「https://trinket.io/python/abafd851480a」を開く
  2. 画面が表示されたら,画面左上の「Run」(実行)ボタンをクリックする.自動的に実行が始まっている場合は,そのまま結果を確認してよい.
  3. 画面右の「Result」欄に,「こんにちは、太郎さん!」と表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習② 計算

数値を変数に代入し,それらを使って計算を行い,結果を print() で表示する演習である.

使用する trinket のページ:https://trinket.io/python/9870e86d63b9

手順

  1. Webブラウザで,URL「https://trinket.io/python/9870e86d63b9」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「x の値: 5」「y の値: 3」「x + y の結果: 8」の3行が表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習③ 代入(再代入)

既存の変数に新しい値を代入して更新(再代入)し,変数の値が変更できることを確認する演習である.

使用する trinket のページ:https://trinket.io/python/b869619b0874

手順

  1. Webブラウザで,URL「https://trinket.io/python/b869619b0874」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「元のスコア: 80」「更新後のスコア: 95」の2行が表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習④ input() による入力

input() を使ってユーザーからの入力を受け取り,変数に保存して利用する演習である.

使用する trinket のページ:https://trinket.io/python/45f0bed92360

手順

  1. Webブラウザで,URL「https://trinket.io/python/45f0bed92360」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「あなたの名前を入力してください:」と表示されたら,その欄に自分の名前(例:kaneko)を入力し,Enterキーを押す
  4. 入力した名前を使って,「ようこそ、(入力した名前)さん!」と表示されることを確認する.
  5. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑤ 現在日時の表示(datetime ライブラリ)

datetime ライブラリを使い,コンピュータ(オペレーティングシステム)のタイマーを読み取って,今の日時を表示する演習である.

使用する trinket のページ:https://trinket.io/python/2b804ab19a

手順

  1. Webブラウザで,URL「https://trinket.io/python/2b804ab19a」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「2026-06-04 20:37:22.313700」のような形式で,現在の日時が表示されることを確認する(具体的な日時は実行した時刻による).
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑥ 平方根:面積が 7 の正方形の一辺の長さ(math ライブラリ)

math ライブラリの sqrt(平方根)を使い,面積が 7 の正方形の一辺の長さを求める演習である.

使用する trinket のページ:https://trinket.io/python/597e5771ff

手順

  1. Webブラウザで,URL「https://trinket.io/python/597e5771ff」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「2.64575131106」と表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑦ 円周率:半径 3 の円の面積(math ライブラリ)

math ライブラリの円周率(math.pi)を使い,半径 3 の円の面積を求める演習である.

使用する trinket のページ:https://trinket.io/python/4e3559f879

手順

  1. Webブラウザで,URL「https://trinket.io/python/4e3559f879」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「28.2743338823」と表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑧ 三角関数:2辺と間の角度から三角形の面積(math ライブラリ)

math ライブラリの三角関数(math.sin)を使い,2辺の長さが 4 と 6,その間の角度が 60 度の三角形の面積 (1/2) × 4 × 6 × sin(60) を求める演習である.

使用する trinket のページ:https://trinket.io/python/bdcce27488

手順

  1. Webブラウザで,URL「https://trinket.io/python/bdcce27488」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右の「Result」欄に,「10.3923048454」と表示されることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑨ タートルグラフィックス(線を引く・書き換え)

タートル(亀)が線を引きながら進む様子を観察し,さらにプログラムを書き換えて結果が変わることを確認する演習である.

使用する trinket のページ:https://trinket.io/python/f29bfe71cd

手順

  1. Webブラウザで,URL「https://trinket.io/python/f29bfe71cd」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右に,原点(0,0)から上の(0,100)へ,そこから右下の(100,0)へ線が引かれた図形が表示されることを確認する.
  4. 次に,画面左のプログラムの中の t.goto(100,0)t.goto(200,0) に書き換える
  5. もう一度「Run」(実行)ボタンをクリックし,描かれる図形が変わることを確認する.
  6. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑩ タートルグラフィックスで六角形

前進(forward)と回転(left)を繰り返して,正六角形を描く演習である.

使用する trinket のページ:https://trinket.io/python/ddb861147133

手順

  1. Webブラウザで,URL「https://trinket.io/python/ddb861147133」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右に,正六角形が描かれることを確認する.
  4. 実行が始まらないときは,もう一度「Run」(実行)ボタンをクリックする.

ヒント

考察ポイント

演習⑪ タートルグラフィックスで星形(自由制作)

星形を描くプログラムを実行し,さらに自分でデザインした図形を描くことに挑戦する,自己研鑽の演習である.

使用する trinket のページ:https://trinket.io/python/5366def2f4

手順

  1. Webブラウザで,URL「https://trinket.io/python/5366def2f4」を開く
  2. 画面左上の「Run」(実行)ボタンをクリックする.
  3. 画面右に,星形(星型)の図形が描かれることを確認する.
  4. 次に,画面左のプログラムの中の t.goto(...) の座標の値を自由に書き換える
  5. もう一度「Run」(実行)ボタンをクリックし,自分がデザインした図形が描かれることを確認する.

ヒント

考察ポイント

第9回. Python プログラミング基礎2⃣

ライブラリには、標準ライブラリと外部ライブラリがある。外部ライブラリの使用にはインストールが必要。そして、ライブラリ(標準も外部も)の使用には、プログラム内でのインポートが必要。クラスは同じ種類のオブジェクトの「設計図」のようなものである。条件分岐はifやelseで処理を分ける。リストは複数の要素を順序付けて保持する。リストのインデックスは0から始まる。・繰り返しはforで実現でき、指定した回数だけ処理を反復する。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

このガイドは,ブラウザだけで Python を実行できる学習サイト Trinket を用いた演習である.各演習は,trinket のページを開いて実行結果を確認することが基本である.Trinket は,画面左で編集,画面右の「Result」で結果を確認し,「Run」で実行,「STOP」で停止する.

Trinket の基本操作

演習① 条件分岐 ― age による料金の分岐を体験する

年齢(age)の値によって,出力が 500 か 1800 に分かれるプログラムを実行し,書き替えて動作を確認する.

操作手順

  1. Trinket のページ https://trinket.io/python/0fd59392c8 を開く.
  2. 画面の「Run」をクリックして実行する.右側の結果表示に 1800 が表示されることを確認する.
  3. 左側のプログラム1行目の age = 18age = 10 に書き替える.
  4. もう一度「Run」をクリックして実行する.結果に 500 が表示されることを確認する.
  5. age の値を 8, 9, 10, 11 にそれぞれ書き替えて実行し,いずれも 500 が表示されることを確認する.
  6. 続けて age の値を 12, 13, 14, 15 にそれぞれ書き替えて実行し,いずれも 1800 が表示されることを確認する.

ヒント

考察ポイント

演習② 条件分岐の Python プログラムを作る ― weight による分岐

weight の値が 100 以下なら result = 0,100 より大きいなら result = 1000 を実行し,最後に print(result) で表示するプログラムを作って動作を確認する.

操作手順

  1. Trinket のページ https://trinket.io/python/62f74d3bfc を開く.このページには,次のプログラムが用意されている.
    weight = 80
    if weight <= 100:
        print(0)
    else:
        print(1000)
  2. 「Run」をクリックして実行する.weight が 80 のとき,結果に 0 が表示されることを確認する.
  3. 1行目の weight = 80 の値を 100 より大きい値(例:120)に書き替えて実行し,結果が 1000 になることを確認する.
  4. weight の値を 100 に書き替えて実行し,結果が 0 になることを確認する(100 は「100 以下」にあてはまる).

ヒント

考察ポイント

演習③ for による繰り返し ― & の個数を変化させる

for による繰り返しで,i の値が変化するのに合わせて,表示される「&」の個数が変わる様子を確認する.

操作手順

  1. Trinket のページ https://trinket.io/python/27f6ebe1da を開く.このページには,次のプログラムが用意されている.
    for i in range(5):
        print(i * '&')
  2. 「Run」をクリックして実行する.結果が次のように表示されることを確認する(1 行目は空行になる).
    &
    &&
    &&&
    &&&&
  3. 確認クイズ:「&」を 9 個まで表示したいとき,プログラムをどのように書き替えればよいか,自分で考えて書き替え,実行して確かめる.

ヒント

考察ポイント

演習④ リストと月の日数 ― インデックスで値を取り出す

各月の日数をまとめたリストから,月の番号を使って日数を取り出すプログラムを実行し,書き替えて確認する(うるう年は考えない).

操作手順

  1. Trinket のページ https://trinket.io/python/88a728c3cb を開く.このページには,次のプログラムが用意されている.
    days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    print(days[6])
    print(days[7])
  2. 「Run」をクリックして実行する.結果に 3031 が表示されることを確認する(6 月は 30 日,7 月は 31 日).
  3. print(days[6])print(days[7])print(days[8])print(days[9]) に書き替えて実行する.
  4. 結果に 31(8 月)と 30(9 月)が表示されることを確認する.

ヒント

考察ポイント

演習⑤ 基本的なライブラリの利用 ― Matplotlib で散布図を描く

Matplotlib ライブラリを使い,x 座標と y 座標のリストから散布図を描くプログラムを実行する.

操作手順

  1. Trinket のページ https://trinket.io/python/a563124a187c を開く.このページには,import matplotlib.pyplot as plt を使い,x = [1, 2, 3, 4, 5]y = [2, 4, 5, 4, 5] をプロットするプログラムが用意されている.
  2. 「Run」をクリックして実行する.実行が開始しないときは,実行ボタンをもう一度押す.
  3. 結果側に「Scatter Plot」というタイトルの散布図(丸いマーカーの点)が表示されることを確認する.
  4. 余裕があれば,xy のリストの数値を書き替えて再度実行し,点の位置が変わることを確認する.

ヒント

考察ポイント

演習⑥ 数値計算用ライブラリの利用 ― NumPy と Matplotlib で sin 波を描く

NumPy で 0 から 10 までの値を作り,対応する sin の値を Matplotlib でグラフ化するプログラムを実行する.

操作手順

  1. Trinket のページ https://trinket.io/python/5830b6d18e9c を開く.このページには,import numpy as npimport matplotlib.pyplot as plt を使い,x = np.linspace(0, 10, 100)y = np.sin(x) をプロットするプログラムが用意されている.
  2. 「Run」をクリックして実行する.実行が開始しないときは,実行ボタンをもう一度押す.
  3. 結果側に「Sin Wave」というタイトルの正弦波(波のグラフ)が表示されることを確認する.

ヒント

考察ポイント

演習⑦ 乱数(random ライブラリ)の利用 ― 乱数で座標を作る

random ライブラリで生成した乱数を使って座標を作り,散布図として表示するプログラムを実行する.

操作手順

  1. Trinket のページ https://trinket.io/python/9fe4ad1bb348 を開く.このページには,import randomimport matplotlib.pyplot as plt を使い,乱数で 100 個の x 座標と y 座標を作って散布図にするプログラムが用意されている.
  2. 「Run」をクリックして実行する.実行が開始しないときは,実行ボタンをもう一度押す.
  3. 結果側に,乱数で生成された点がばらばらに散らばった散布図が表示されることを確認する.
  4. もう一度「Run」をクリックして実行し,点の配置が前回と変わることを確認する.

ヒント

考察ポイント

演習⑧ タートルグラフィックス ― 図形を描く(for で繰り返す)

タートル(亀)に命令(メソッド)を出して線を引き,for による繰り返しで図形を描くプログラムを実行する.

操作手順

  1. Trinket のページ https://trinket.io/python/895c3ea5b6 を開く.このページには,次のプログラムが用意されている.
    import turtle
    t = turtle.Turtle()
    for i in range(5):
        t.forward(100)
        t.right(170)
  2. 「Run」をクリックして実行する.結果側に,前進と回転を繰り返して描かれた線の図形が表示されることを確認する.
  3. 続けて Trinket のページ https://trinket.io/python/0d8dbc1139 を開く.このページでは t.forward(i * 20 + 100) のように,繰り返しごとに進む距離が変わる.
  4. 「Run」をクリックして実行し,図形が表示されることを確認する.
  5. プログラム内の「5」「20」「100」「170」の数値をいろいろ書き替えて実行し,図形がどう変わるかを確認する.

ヒント

考察ポイント

演習⑨ タートルグラフィックス ― リストと組み合わせて色を変える

色のリストとタートルのメソッドを組み合わせ,繰り返しのたびに色を変えながら円を描くプログラムを実行する.

操作手順

  1. Trinket のページ https://trinket.io/python/f8cd554693 を開く.このページには,次のプログラムが用意されている.
    import turtle
    t = turtle.Turtle()
    colors = ["red", "green", "blue"]
    for i in range(3):
        t.color(colors[i])
        t.circle(30)
        t.forward(50)
  2. 「Run」をクリックして実行する.結果側に,赤・緑・青の 3 つの円が横に並んで描かれることを確認する.
  3. 余裕があれば colors のリストの色名や,t.circle(30) の半径,t.forward(50) の距離を書き替えて実行し,変化を確認する.

ヒント

考察ポイント

第10回. データサイエンス、基本的な計算⃣

データサイエンスは「データ→分析・計算→有益な結果」の流 である。作品推薦・渋滞予測・天気予報・不正検知など身近なサービスを支えている。 内積(類似性)・平均(代表値)・標本分散(ばらつき)・標本共分散(連動) などの基本的な計算は、データの分析・計算を歓迎がある。 これら4計算はExcel関数SUMPRODUCT・AVERAGE・VAR.S・COVARIANCE.Sで計算できる。計算範囲はコロンで指定する(例:A1:A6)。 Excelは、式の先頭に半角「=」を付ける。Exlceの特徴としては、再計算・強調表示・並べ替え・グラフ作成などの多様な機能にある。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習1 内積 SUMPRODUCT

内積は,二つの数字の列について,対応する要素を掛けて合計する計算である.二つの並びが同じところで高くなるほど内積は大きくなり,二つの並びがどれだけ似ているかを測る基礎になる.ここでは Excel の関数 SUMPRODUCT を用いて内積を求める.

操作手順

  1. Excel を起動し,新しいブックを開く.
  2. データを2列に入力する.セル A1 から A5 に「8,2,6,3,6」を上から順に入力し,セル B1 から B5 に「4,6,5,6,4」を上から順に入力する.
  3. 結果を表示するセル(例:D1)をクリックし,=SUMPRODUCT(A1:A5,B1:B5) と入力する.数式の先頭には半角の「=」を付ける.範囲はコロン「:」で指定する(A1:A5 は A1 から A5 までの連続した範囲を表す).
  4. Enter キーを押す.セル D1 に計算結果「116」が表示される.

ヒント

考察ポイント

演習2 平均 AVERAGE

平均は,いくつかの値を一つの代表値にまとめる計算である.バラバラな多くの値を1本の代表する高さにならして,全体の状況を一つの数で捉える.ここでは Excel の関数 AVERAGE を用いて平均を求める.

操作手順

  1. Excel を起動していなければ,Excel を起動し,新しいブックを開く.
  2. データを1列に入力する.セル A1 から A5 に「8,2,6,3,6」を上から順に入力する.
  3. 結果を表示するセル(例:C1)をクリックし,=AVERAGE(A1:A5) と入力する.数式の先頭には半角の「=」を付ける.
  4. Enter キーを押す.セル C1 に計算結果「5」が表示される.

ヒント

考察ポイント

演習3 標本分散 VAR.S

標本分散は,値が平均からどれくらいばらついているかを測る計算である.各値が平均からどれだけ離れているか(ズレ)を集めると,データ全体のばらつきが分かる.ズレが大きいほど分散は大きく,ズレが小さいほど分散は小さくなる.ここでは Excel の関数 VAR.S を用いて標本分散を求める.

操作手順

  1. Excel を起動していなければ,Excel を起動し,新しいブックを開く.
  2. データを1列に入力する.セル A1 から A5 に「8,2,6,3,6」を上から順に入力する.
  3. 結果を表示するセル(例:C1)をクリックし,=VAR.S(A1:A5) と入力する.数式の先頭には半角の「=」を付ける.
  4. Enter キーを押す.セル C1 に計算結果「6」が表示される.

ヒント

考察ポイント

演習4 標本共分散 COVARIANCE.S

標本共分散は,二つの量がどれくらい連動して動くかを測る計算である.一方が分かればもう一方を推測できる関係をとらえる.内積がそのままの値どうしを掛けるのに対し,共分散は平均を引いたズレどうしを掛けて求める.ここでは Excel の関数 COVARIANCE.S を用いて標本共分散を求める.

操作手順

  1. Excel を起動していなければ,Excel を起動し,新しいブックを開く.
  2. データを2列に入力する.セル A1 から A5 に「8,2,6,3,6」を上から順に入力し,セル B1 から B5 に「4,6,5,6,4」を上から順に入力する.
  3. 結果を表示するセル(例:D1)をクリックし,=COVARIANCE.S(A1:A5,B1:B5) と入力する.数式の先頭には半角の「=」を付ける.
  4. Enter キーを押す.セル D1 に計算結果「−2.25」が表示される.

ヒント

考察ポイント

演習5 質問を理解するAI 「Data Commons」

Data Commons は,Google が世界中の政府統計を1か所に集めたオープンデータのサービスである.検索欄に英語で質問を入力すると,AI が質問を解釈し,統計を地図やグラフで自動的に表示する.オープンデータを,AI の力を借りて体験する演習である.

Data Commons のサイト:https://datacommons.org/

操作手順

  1. Web ブラウザで https://datacommons.org/ を開く.
  2. 画面の上部中央にある検索欄をクリックする.検索欄には英語で質問でkリウ。
  3. 次の質問例のいずれかをコピーして検索欄に貼り付け,Enter キーを押す.英語が苦手な場合は,質問例をそのままコピーして貼り付ければよい.
    • How has the population of Japan changed over time?(日本の人口推移)
    • Life expectancy in Japan compared to other G7 countries(日本と G7 各国の平均寿命比較)
    • Unemployment rate in Tokyo(東京の失業率)
  4. 画面に折れ線グラフ・地図・ランキング表などが,質問に応じて自動的に表示されることを確認する.
  5. グラフ付近にある「About this data」をクリックすると,どの公的機関のオープンデータが使われているかを確認できる.
  6. 画面左上の「DC」のロゴをクリックしてトップページに戻り,別の質問で手順3から繰り返す.最低3つの質問を試す.

ヒント

考察ポイント

演習6 データの隙間を埋めるAI 「Gapminder」

Gapminder Tools は,世界統計を動くバブルチャートで表示するツールである.世界銀行・WHO・国連等が公開するオープンデータを用いて,各国の所得・平均寿命・人口等を表示する.時間軸スライダーを動かすと,1800年から現在までの各国の変化をアニメーションで見ることができる.データが存在しない年の値は,前後の年から推定するアルゴリズム(欠損値補完)で埋められている.オープンデータを体験する演習である.

Gapminder のサイト:https://www.gapminder.org/tools/

操作手順

  1. Web ブラウザで https://www.gapminder.org/tools/ を開く.
  2. 初期画面でバブルチャートが表示されることを確認する.画面上部のタブが「Bubbles」になっていることを確認する.初期画面では,バブル=国,バブルの大きさ=人口,バブルの色=地域,横軸=1人あたり所得,縦軸=平均寿命を表す.
  3. 画面右側の国名リストで「Japan」を探してクリックするか,検索欄に「Japan」と入力する.日本のバブルがハイライト表示される.
  4. 画面下部の再生ボタン(▶)をクリックし,1800年から現在までのアニメーションを見る.日本のバブルがどのように動くかに注目する.
  5. アニメーション終了後,時間軸スライダーを左右に動かし,日本の軌跡を確認する.
  6. 横軸または縦軸のラベルのメニュー(「Income」「Life expectancy」等)をクリックし,別の指標に変える.例として「Children per woman」(女性1人あたりの子どもの数)や「CO2 emissions」(CO2 排出量)を選ぶ.
  7. 画面下部のボタンで「Bubbles」から「Maps」(地図)や「Ranks」(順位)などに切り替え,同じデータを別の形式で見る.
  8. 気になる指標について,横軸や縦軸のラベルを変更し,日本と他国(例:韓国,米国,ブラジル)を比べる.

ヒント

考察ポイント

第11回. Pythonプログラミング応用

休校、補講となった回です 。演習のためにURL,ヒントなどを見たい場合は、下の「[演習の詳細を表示するには、この行をクリックしてください]】をクリックして展開してください。

プログラミングでの抽象化は、共通点のある処理を1つにまとめることである。 その際、変わる部分は変えることができる形で残す。例えば 100×1.1、 150×1.1、 400×1.1 の3つの式は、変数aを用いて、 a×1.1 のようにまとめることができる。 抽象化を行うことで、プログラムの誤りを減らすことができる。特に、変更時の誤りを減らすことができる。 関数は処理に名前を付けるもの。例えば def kakeru(a): return a * 1.1 のように書くことで関数名 kakeru の関数が定義される。この中の「a」は仮引数(パラメータ)と呼ばれ、関数の呼び出し時に100, 150, 400 などの具体的な値(実引数)に設定される。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]


演習手順説明ビデオ(約4分)[MP4]

[演習の詳細を表示するには、この行をクリックしてください]

演習の概要

演習2〜6は、 「落下物キャッチゲーム」が段階的に完成していく様子を体験します。

Python 標準ライブラリの turtle(タートルグラフィックス)を用いて,落下物を受け止めて得点する「落下物キャッチ(受け止め)ゲーム」です.完成形は,左右キーで動かすプレイヤーが,上から落ちてくる落下物を受け止めて得点するゲームです.

演習① trinket の動作確認

まず,trinket のページが正しく表示され,実行できることを確認します.

操作手順

  1. 次の URL をブラウザで開く.

    確認用ページ:https://trinket.io/python/68a090babf

  2. ページが開いたら,画面左側にプログラムのコード,右側に実行結果の領域が表示されることを確認する.
  3. コード領域の上にある実行ボタン(「Run」,三角形の再生マーク)をクリックする.
  4. 右側の実行結果領域に,資料の例と同じように結果が表示されることを確認する.

ヒント

考察ポイント

演習② 落下の再現

画面の上端から円が現れ,まっすぐ下へ落ちていく動きを作ります.

操作手順

  1. 次の URL をブラウザで開く.

    演習2のページ:https://trinket.io/python/e0c1d1c0f8af

  2. 実行ボタン(「Run」)をクリックして実行する.
  3. 画面中央の上端(x=0, y=180)に「三角形」が現れ,まっすぐ下へ落ちていくことを確認する.
  4. 「三角形」が下端(y=-180)を過ぎると,また上端に戻って同じ列を落ち続けることを確認する.

ヒント

考察ポイント

演習③ 接触の近似

下端に置いた四角いプレイヤーと,落ちてくる「三角形」との水平距離を判定し,近ければ得点する仕組みを作ります.

操作手順

  1. 次の URL をブラウザで開く.

    演習3のページ:https://trinket.io/python/216f2ddb6b40

  2. 実行ボタン(「Run」)をクリックして実行する.
  3. 下端の中央(x=0, y=-180)に四角いプレイヤーが置かれ,上端から「三角形」が落ちてくることを確認する.
  4. 「三角形」は毎回 x=0 の同じ列を落ちるため,プレイヤーの真上を通過することを確認する.
  5. 「三角形」が下端に達するたびに,プレイヤーとの水平距離が 30 未満かどうかが判定され,近ければ score が 1 増えることを確認する.この演習ではプレイヤーはまだ動かせない.

ヒント

考察ポイント

演習④ アクション性

「三角形」が落ちてくる位置を毎回ランダムに変え,ゲームにアクション性を持たせます.

操作手順

  1. 次の URL をブラウザで開く.

    演習4のページ:https://trinket.io/python/b2bde1e50f7d

  2. 実行ボタン(「Run」)をクリックして実行する.
  3. 「三角形」が落ちてくる左右の位置が毎回ランダムに変わることを確認する.最初の出現位置も,下端に達して上端へ戻るときの位置も,-180 から 180 の間でばらばらに決まる.
  4. プレイヤーは下端中央に固定されたままなので,「三角形」がたまたまプレイヤーの近く(水平距離 30 未満)に落ちたときだけ得点が入ることを確認する.

ヒント

考察ポイント

演習⑤ プレイヤーを動かす

左右キーでプレイヤーを動かせるようにし,「三角形」に合わせて受け止められるようにします.

操作手順

  1. 次の URL をブラウザで開く.

    演習5のページ:https://trinket.io/python/1a7d4df094b4

  2. 実行ボタン(「Run」)をクリックして実行する.これまでと同じく「三角形」がランダムな位置を落ちてくる.
  3. 右側の描画領域(タートルの絵が表示される部分)を一度クリックして,フォーカスを与える.これをしないと矢印キーが効かない.
  4. 左矢印キー(←)を押すとプレイヤーが左へ 20,右矢印キー(→)を押すと右へ 20 だけ動くことを確認する.
  5. 落ちてくる「三角形」の真下にプレイヤーを移動させ,受け止めて得点をねらう.
  6. 移動範囲の制限はまだ無いので,キーを押し続けるとプレイヤーが画面の外まで出て行ってしまうことを確認する.

ヒント

考察ポイント

演習⑥ 完成形

プレイヤーが画面の外へ出ないように移動範囲を制限し,ゲームを完成させます.

操作手順

  1. 次の URL をブラウザで開く.

    演習6のページ:https://trinket.io/python/826f3b473886

  2. 実行ボタン(「Run」)をクリックして実行する.操作感は演習⑤と同じである.
  3. 右側の描画領域を一度クリックして,フォーカスを与える
  4. 左矢印キー(←)・右矢印キー(→)でプレイヤーを左右に動かす.左へ動かし続けても左端(x=-180)で,右へ動かし続けても右端(x=180)で止まることを確認する.
  5. 落ちてくる「三角形」の真下にプレイヤーを移動させ,受け止めて得点をねらう.プレイヤーが画面の外へ出て見えなくなることがなくなったことを確認する.

ヒント

考察ポイント

第12回. プログラミング・データサイエンス・AIの融合

データ分析は「実データを眺める→課題発見→解決→次の行動」という流れで進む。 実データには欠損・偏り・ノイズがある。欠損値がある場合には、その行を除去したり、平均値で補完したりといった前処理が必要になる。 分析手法には、分類・回帰・クラスタリングなどがある。可視化によってデータのパターンを読み取ろうとしても、データの項目(次元)が増えると可視化は困難になる。そうした場合には機械学習が有効である。なお、プログラミング(コードの作成)と対話型AIへの指示は、互いを補い合う補完関係にある。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

実行環境で体験する(手を動かす)演習ガイド

コードを動かしながら体験する演習集である.各演習は同じ手順で実行する.実行環境には pythononline.dev を用いる.ブラウザ上で Python を記述・実行できるオンライン実行環境で,PC へのインストール(環境構築)もアカウント登録も不要である.pandas・matplotlib・scikit-learn のライブラリはインポートするだけで自動的に読み込まれ,インストールなどの事前準備は不要である.

pythononline.dev のサイト:https://pythononline.dev/

演習① 回帰による将来予測

過去2年(24か月)の売上実績で学習し,来年12か月分を予測して,1本の時間軸に並べて描画する演習である.

操作手順

  1. ブラウザで https://pythononline.dev/ を開く(登録・ログイン不要).
  2. 最初のコードセルの中身をすべて削除する.
  3. 下の「貼り付けるコード」をすべてコピーし,空にしたコードセルに貼り付ける.
  4. 画面の「Run All」ボタンをクリックする(初回はライブラリの自動読み込みで少し時間がかかる).
  5. セルの下にグラフ(画像)が表示されることを確認する.

貼り付けるコード

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

df = pd.DataFrame({
    "月":   list(range(1, 13)) * 2,
    "売上": [55, 58, 65, 72, 80, 95, 110, 105, 88, 75, 62, 57,
            57, 60, 68, 75, 83, 98, 113, 108, 90, 78, 64, 59],
})
model = DecisionTreeRegressor(random_state=0)
model.fit(df[["月"]], df["売上"])
予測 = model.predict(pd.DataFrame({"月": list(range(1, 13))}))

plt.plot(range(1, 25), df["売上"], label="Actual (past 2 years)")        # 実績(1〜24か月目)
plt.plot(range(25, 37), 予測, "r--o", label="Predicted (next year)")     # 予測(25〜36か月目)
plt.xlabel("Month (1-36)")
plt.ylabel("Sales")
plt.legend()
plt.show()

ヒント

考察ポイント

演習② データの読み込みと欠損の補完

生活習慣アンケート12人分(1週間の運動回数・平日の睡眠時間)を読み込み,欠損数を確認したうえで,睡眠時間の未回答を平均値で補完する演習である.12人のうち2人分の睡眠時間が未回答(欠損)である.

操作手順

  1. ブラウザで https://pythononline.dev/ を開く(登録・ログイン不要).
  2. 最初のコードセルの中身をすべて削除する.
  3. 下の「貼り付けるコード」をすべてコピーし,空にしたコードセルに貼り付ける.
  4. 画面の「Run All」ボタンをクリックする(初回はライブラリの自動読み込みで少し時間がかかる).
  5. セルの下に print の結果が表示されることを確認する.

貼り付けるコード

import pandas as pd

df = pd.DataFrame({
    "回答者": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"],
    "運動回数": [5, 1, 6, 0, 3, 7, 2, 0, 4, 6, 1, 3],
    "睡眠時間": [7.5, 5.0, 8.0, None, 6.5, 7.0, 5.5, 4.5, None, 7.5, 6.0, 6.5],
})

print("補完前の未回答数:\n", df.isnull().sum())
df["睡眠時間"] = df["睡眠時間"].fillna(df["睡眠時間"].mean())   # 平均6.4時間で埋まる
print(df)

ヒント

考察ポイント

演習③ 分類による判定と決定境界の可視化

学習時間とテスト点数から「講習会Aの受講/未受講」を判定する分類を体験する演習である.まず実データの散布図を描き,次に決定木(機械学習の一手法)で学習して,平面全体を「受講と判定される領域」と「未受講と判定される領域」に塗り分けて示す.

操作手順

  1. ブラウザで https://pythononline.dev/ を開く(登録・ログイン不要).
  2. 最初のコードセルの中身をすべて削除する.
  3. 下の「貼り付けるコード」をすべてコピーし,空にしたコードセルに貼り付ける.
  4. 画面の「Run All」ボタンをクリックする(初回はライブラリの自動読み込みで少し時間がかかる).
  5. セルの下に2枚のグラフ(画像)が表示されることを確認する.

貼り付けるコード

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier

# 1. データの用意
df = pd.DataFrame({
    "学習時間":  [2.5, 3.0, 1.6, 3.5, 2.8, 1.4, 1.0, 0.5, 1.5, 2.6, 1.2, 1.8],
    "テスト点数": [78,  65,  80,  90,  74,  82,  60,  55,  58,  62,  76,  60],
    "講習会A":  ["受講"]*6 + ["未受講"]*6,
})

# 2. 実データの散布図: 受講/未受講を色分けして描く
for 判定, 色 in [("受講", "red"), ("未受講", "blue")]:
    部分 = df[df["講習会A"] == 判定]
    plt.scatter(部分["学習時間"], 部分["テスト点数"], color=色, label=判定)
plt.xlabel("Study hours")
plt.ylabel("Score")
plt.title("Data")
plt.legend()
plt.show()

# 3. 学習(fit)
model = DecisionTreeClassifier(random_state=0)
model.fit(df[["学習時間", "テスト点数"]], df["講習会A"])

# 4. 決定境界の可視化: 平面全体を格子点で埋め、各点の判定を背景色で塗り分ける
x_min, x_max = 0, 4
y_min, y_max = 50, 95
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 300),
                     np.linspace(y_min, y_max, 300))
格子 = pd.DataFrame({"学習時間": xx.ravel(), "テスト点数": yy.ravel()})
領域 = model.predict(格子)
領域の色 = np.where(領域 == "受講", 1, 0).reshape(xx.shape)
plt.contourf(xx, yy, 領域の色, levels=1, colors=["blue", "red"], alpha=0.2)
for 判定, 色 in [("受講", "red"), ("未受講", "blue")]:
    部分 = df[df["講習会A"] == 判定]
    plt.scatter(部分["学習時間"], 部分["テスト点数"], color=色, label=判定)
plt.xlabel("Study hours")
plt.ylabel("Score")
plt.title("Decision boundary (red=受講, blue=未受講)")
plt.legend()
plt.show()

ヒント

考察ポイント

演習④ クラスタリング(前処理と教師なし学習)

演習②と同じ生活習慣アンケートを素材に,欠損を補完してから,似た回答の人同士を自動で2グループに分ける演習である.

操作手順

  1. ブラウザで https://pythononline.dev/ を開く(登録・ログイン不要).
  2. 最初のコードセルの中身をすべて削除する.
  3. 下の「貼り付けるコード」をすべてコピーし,空にしたコードセルに貼り付ける.
  4. 画面の「Run All」ボタンをクリックする(初回はライブラリの自動読み込みで少し時間がかかる).
  5. セルの下に print の結果とグラフ(画像)が表示されることを確認する.

貼り付けるコード

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 1. データの用意(第1章と同じ、未回答を含む実データ)
df = pd.DataFrame({
    "回答者": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"],
    "運動回数": [5, 1, 6, 0, 3, 7, 2, 0, 4, 6, 1, 3],
    "睡眠時間": [7.5, 5.0, 8.0, None, 6.5, 7.0, 5.5, 4.5, None, 7.5, 6.0, 6.5],
})

# 2. 前処理: 未回答を平均値で補完する
print("補完前の未回答数:\n", df.isnull().sum())
df["睡眠時間"] = df["睡眠時間"].fillna(df["睡眠時間"].mean())   # 平均6.4時間で埋まる

# 3. 機械学習: 似た回答の人同士を、自動で2グループに分けさせる
model = KMeans(n_clusters=2, random_state=0)
df["グループ"] = model.fit_predict(df[["運動回数", "睡眠時間"]])
print(df)
print("\nグループごとの平均:\n", df.groupby("グループ")[["運動回数", "睡眠時間"]].mean())

# 4. 結果の可視化: コンピューターの分けたグループを色で確認する
for g, 色 in [(0, "blue"), (1, "red")]:
    部分 = df[df["グループ"] == g]
    plt.scatter(部分["運動回数"], 部分["睡眠時間"], color=色, label=f"Group {g}")
plt.xlabel("Exercise per week")
plt.ylabel("Sleep hours")
plt.legend()
plt.show()

ヒント

考察ポイント

演習⑤ ツールによるアプローチの比較

同じ「月別売上の折れ線グラフ」を,(a) 自分でコードを組み立てる方法と,(b) 対話型AIに作成を任せる方法の2通りで作り,進め方を比較する演習である.

操作手順(a)自分でコードを組み立てる場合(AIの補助を借りることもある)

  1. ブラウザで https://pythononline.dev/ を開く(登録・ログイン不要).
  2. 最初のコードセルの中身をすべて削除する.
  3. 下の「貼り付けるコード」の (a) をすべてコピーし,空にしたコードセルに貼り付ける.
  4. 画面の「Run All」ボタンをクリックする(初回はライブラリの自動読み込みで少し時間がかかる).
  5. セルの下にグラフ(画像)が表示されることを確認する.

操作手順(b)対話型AIに作成を任せる場合

  1. 対話型AI(例:Microsoft Copilot,https://portal.office.com にアクセス。大学のアカウントでサインイン)へ指示(プロンプト)を与える
  2. グラフを確認する.

貼り付けるコード(a)自分で組み立てるコード

import matplotlib.pyplot as plt

売上 = [55, 58, 65, 72, 80, 95, 110, 105, 88, 75, 62, 57]
plt.plot(range(1, 13), 売上, marker="o")   # plot で折れ線グラフを描く
plt.xlabel("Month")
plt.ylabel("Sales")
plt.show()

貼り付けるプロンプト(b)対話型AI(例:Microsoft Copilot,https://portal.office.com/)への指示(プロンプト)

月別売上 [55, 58, 65, 72, 80, 95, 110, 105, 88, 75, 62, 57] の
折れ線グラフを表示してください。

ヒント

考察ポイント

スライド資料と演習手順の資料は,https://www.kkaneko.jp/cs/index.html で,各回の授業開始時刻までに掲載します。

セレッソコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。

本科目の資料は,以下の2種類で構成されています。

昨年度(2025年度)の資料について(クリックにより中身が表示されます)

昨年度のスライド資料を以下に掲載しています。予習などでの参考にしてください。ただし,今年度とは内容や順序が異なる場合があります。今年度の最新資料はこちらのページで随時公開していきます。

授業計画(クリックにより中身が表示されます)

詳しくは「シラバス」を参照してください。

最新技術の反映、パソコン教室のパソコンを用いた演習の充実などにより、一部内容が変更になる場合があります。

シラバス(全15回)
内容
第1回 コンピュータサイエンス入門
  • コンピュータサイエンスの概要
  • 情報化社会における役割
  • 無料ソフトウェアとデータの活用
  • エコシステムの基本概念
第2回 人工知能の仕組み、責任ある活用
  • AIの基本的能力と限界
  • 機械学習の概念
  • ニューラルネットワークの基礎
  • AI利用の具体例
第3回 デジタル画像
  • デジタル画像の構造
  • 画像処理入門
  • 画像制作とコンピュータ
第4回 3次元コンピュータグラフィックス
  • 3次元コンピュータグラフィックスの基本概念
  • ポリゴンモデリングの基礎
  • Blenderの紹介
  • ストリートビュー
第5回 コンピュータの構成要素とデータ処理の仕組み
  • プロセッサの仕組みと役割
  • メモリと構造
  • 文字コードと情報の表現
  • 論理演算と2の補数
第6回 情報倫理とセキュリティ
  • 情報倫理の基本原則
  • 個人情報の保護
  • 情報セキュリティの重要性
  • 具体的な対策と事例研究
第7回 プログラミング入門
  • プログラミング思考の基礎
  • Pythonプログラミングを行うGDBonlineの基本操作
  • 簡単なゲーム作成
第8回 Python プログラミング基礎①
  • Pythonの特徴と基本文法
  • 変数
  • データの種類
  • 基本的な入出力処理
  • 演算子の使用
第9回 Python プログラミング基礎②
  • 制御構文の基礎
  • 条件分岐(if文)
  • 繰り返し処理(for,while文)
  • 基本的なアルゴリズム
第10回 データサイエンス
  • データサイエンスの基本概念
  • 基本的な計算:内積(類似性)・平均(代表値)・標本分散(ばらつき)・標本共分散(連動)
  • Excelの基本操作、Excelでの計算と範囲指定
  • Excel の関数SUMPRODUCT・AVERAGE・VAR.S・COVARIANCE.S
第11回 Pythonプログラミング応用
  • 抽象化
  • 関数の定義と使用
  • 実引数、仮引数(パラメータ)、戻り値
  • 複数の関数を組み合わせたプログラムの実行
第12回 プログラミングとデータサイエンスとAIの統合
  • データ処理でのAIとプログラミング
  • データの可視化
  • AIによる機械学習の基礎的活用
  • 実データの分析
  • Microsoft Copilot をAIアシスタントとして用いてコードの改善に役立てる
第13回 人工知能体験
  • 人工知能との対話
  • セグメンテーション・顔検知のデモ体験(Teachable Machine/MediaPipe Webデモ等)
  • パラメータや入力を変えながらの実行と結果の観察
  • Google Colabでのコード実行(1パラメータを変えて再実行する選択演習)
  • AIがうまくいく場面・外す場面の体感(角度・照明・データによる変化)
第14回 AI活用リテラシーとIT応用
  • AIと人間の共同作業
  • AIの特性と限界の理解
  • 批判的思考の重要性
  • 情報の適切な取り扱い
  • データ処理やプログラミングでのAI活用
第15回 コンピュータサイエンスの展望
  • 情報技術の発展と社会への影響
  • AI時代における人間の役割
  • デジタル社会における倫理
  • 次世代技術の可能性