Skip to content

第 1 回 質問と回答

このページでは、第 1 回「ガイダンス・Python 復習」に関して寄せられた質問・要望と、それに対する回答をまとめています。質問者の氏名や学生番号は掲載せず、匿名で扱います。

質問の送り方

質問は 「📮 連絡フォーム」 または「各回の演習確認フォーム」からお寄せください。いただいた内容は、同様の疑問を持つ他の受講生にも役立つようこのページに随時追加していきます。


A. Python と C 言語の違い

「C 言語との違いをもっと知りたい」という声が最も多く寄せられました。代表的な観点をまとめます。

Python と C 言語にはどのような違いがありますか? どう使い分けますか?

主な違いは以下の 3 点です。

  1. 型宣言 — Python は変数の型を宣言不要(動的型付け)。C は int x; のように事前宣言が必要(静的型付け)
  2. メモリ管理 — Python は不要になったメモリを自動回収(ガベージコレクション)。C は malloc / free で手動管理
  3. 実行方式 — Python はインタプリタ方式(実行時に一行ずつ翻訳)。C はコンパイル方式(事前に機械語へ変換)

Python はライブラリが豊富で短いコードで多くのことができますが、実行速度は C の数十倍遅いのが弱点です。機械学習では、内部の重い処理は C/C++ で書かれた NumPy・TensorFlow などが呼び出されており、「Python の書きやすさ」と「C の速さ」を両立できます。

C 言語の printf に対応するものは? \n(改行)はどう書きますか?

Python では print() 関数を使います。改行は \n がそのまま使えますし、print() はデフォルトで末尾に改行を付けるため、明示的に書かないことも多いです。

print("Hello")              # Hello(改行あり)
print("Hello\nWorld")       # Hello / World と 2 行で表示
print("Hello", end="")      # 改行なし

書式付き出力は f-string が最も便利です。printf("%d 歳", age) のような書式指定子は f"{age:d} 歳" のように書きます。

age = 20
pi = 3.14159
print(f"{age} 歳です")           # 20 歳です
print(f"円周率は {pi:.2f}")      # 円周率は 3.14

Python では文末がセミコロン(;)ではなくコロン(:)なのはなぜですか?

Python は文末にセミコロンを書きません(改行が文の区切りです)。コロン(:)はブロックの開始を示す記号で、if / for / while / def / class の後に必ず付きます。続く行はインデント(字下げ)でブロックを表現します。

if x > 0:                      # コロンでブロック開始
    print("x は 0 より大きい")   # インデントでブロックを表現

波括弧 {} を使わず、見た目のインデントだけでコード構造を表す設計のため、「誰が書いても似たようにそろう」のが Python の特徴です。

C の構造体は Python ではどう書きますか? リスト・辞書はどう使い分け?

Python では構造体の代わりに辞書(dict)を使うのが一般的です。

# C: struct {char name[20]; int age;} student;
student = {"name": "たろう", "age": 20}
print(student["name"])     # たろう

使い分けの目安は次のとおりです。

  • リスト — 順番のあるデータの並び。インデックス(番号)でアクセス
  • 辞書 — 名前(キー)と値の対応関係。キーでアクセス
  • タプル — 変更しないデータの組(座標 (x, y) など)
  • 集合(set) — 重複なく値を持ちたいとき

詳しくは「🐍 Python 基礎 - 4. リスト・タプル・辞書・集合」をご参照ください。

C のポインタ・アドレスは Python ではどう扱われますか?

Python ではポインタを直接扱うことはありません。すべての変数は内部的に「オブジェクトへの参照」として動作するため、開発者がアドレスを意識する場面はほぼありません。

ただし注意点として、リストや辞書を関数に渡すと、関数内で書き換えると元のデータも変わる(参照渡しに似た挙動)という仕様があります。数値や文字列は変更不可(イミュータブル)なので、この問題は起きません。

Python では日本語を print するとエラーになりませんか?

Python 3 は文字コードに UTF-8 を採用しており、日本語の print で C のような文字化けエラーはほぼ起こりません。print("こんにちは") はそのまま動きます。

ファイル読み書き時のみエンコーディング指定が必要なことがあります。

with open("data.txt", "r", encoding="utf-8") as f:
    ...

B. Python の文法・関数・ライブラリ

if 文と while 文を組み合わせることはできますか? for と while はどう使い分け?

はい、組み合わせ可能です。for だけでなく、while の中に if を入れることも多いです。

i = 0
while i < 10:
    if i % 2 == 0:
        print(i)
    i += 1

for と while の使い分け

  • for — 繰り返す回数が事前に決まっているとき(リストの要素を順に処理、range(10) などの決まった回数)
  • while — 条件が満たされる間ずっと繰り返したいとき(ユーザー入力待ち、収束計算など)

迷ったら for を試し、回数が決められない場合に while に切り替える方法を検討してください。

総合演習 1.1(FizzBuzz 系)で、両方の倍数を重複なく判定するには?

両方の倍数の条件を一番先に判定するのがコツです。

for i in range(1, 16):
    if i % 15 == 0:           # 3 と 5 の両方の倍数
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

if → elif → else は上から順に判定され、最初に当てはまった分岐だけが実行されます。最も厳しい条件から書くことを意識してください。

関数の引数や使い方をもっと詳しく知りたいです

関数は「処理をまとめて名前を付ける」仕組みです。Python では次のような柔軟な引数指定ができます。

def greet(name, age=20):           # age はデフォルト値
    return f"{name}({age} 歳)"

print(greet("太郎"))                # 太郎(20 歳)
print(greet("花子", age=25))        # 花子(25 歳)  ← キーワード引数

詳しくは「🐍 Python 基礎 - 7. 関数」をご参照ください。関数を活用すると、同じ処理の繰り返しを 1 か所にまとめられるため、コードが短く読みやすくなります。

丸括弧 ()、波括弧 {}、角括弧 [] の使い分けがわかりません

Python では以下のように用途が決まっています。

記号 用途
() タプル、関数呼び出し、計算の優先順位
[] リスト、要素アクセス(nums[0])
{} 辞書または集合({"a": 1} は辞書、{1, 2} は集合)

Python のライブラリでできることを知りたいです(ランダム関数など)

Python には膨大な数のライブラリがあります。本講義で扱う代表的なものは以下のとおりです。

分野 ライブラリ
乱数・基本機能 random, math, datetime
可視化 matplotlib, seaborn
数値計算 NumPy
データ操作 pandas
機械学習 scikit-learn
画像処理 OpenCV, Pillow
自然言語処理 MeCab
Web 開発 Streamlit, Flask

本講義では NumPy・pandas・matplotlib・scikit-learn を中心に扱います。乱数は import random で random.randint(1, 6) のように使えます。

Python ではどのようにデータを可視化できますか?

matplotlib や seaborn といったライブラリでグラフを描くことができます。第 2 回の講義で紹介します。

なぜ Python はデータサイエンスでよく使われるのですか?

主な理由は次の 3 つです。

  1. ライブラリの豊富さ — NumPy・pandas・scikit-learn などデータ分析特化のライブラリが揃っている
  2. コードの読みやすさ — 数学的な式に近い形で書けるため、研究者が試行錯誤しやすい
  3. コミュニティの大きさ — 困ったときの情報がインターネット上に大量にある

内部の重い計算は C で書かれているため、Python は「速い C ライブラリを書きやすく呼び出すためのグルー(糊)言語」と呼ばれることもあります。

構築した機械学習モデルを Web アプリとして実装するには?

本講義の最終回(第 13 回)で、Streamlit による「Python だけで Web アプリを作る方法」を紹介する予定です。Flask を使った「機械学習モデルの API 化」については、付録Dにまとめています。


C. CHIKUWA Editor について

CHIKUWA Editor がインストールできません(「信頼できることを確認してください」と表示される)

Windows の SmartScreen と呼ばれるセキュリティ機能により、リリースされたばかりのダウンロード数が少ない実行ファイルに対し、ユーザに安全性の確認を求めることがあります。このようになった場合、ダウンロードパネル右側の「・・・」を押し、「保存」→「詳細表示」→「保持する」と進むことで、ダウンロードが可能となります。

それでもうまくいかない場合は、Teams の「クラスの資料」に同ファイルをアップロードしておきましたので、そちらをお試しください。解決しない場合はお気軽にお知らせください。

※ ポータブル版をご利用の際は、ダウンロードした zip ファイルを [すべて展開] してからお使いください。

CHIKUWA Editor に使われている AI は何ですか? Chatbot とは違うのですか?

現在、CHIKUWA Editor は OpenAI 社の GPT-5.4 をバックエンドに利用しています。一般的なチャットボットと違うのは、「答えを直接教えるのではなく、考えるためのヒントを段階的に出す」ように調整されている点です。プログラミング学習では、答えだけ知っても定着しないため、あえて回り道をさせる設計になっています。

CHIKUWA Editor 内の演習問題に、講義サイトの演習も含まれますか?

現時点では、CHIKUWA Editor 内蔵の演習問題は、講義サイトの各回の演習問題 2~3 問と対応させる形で、順次追加していく予定です。採点機能を多く活用したいというご要望は今後の改善に反映していきます。

画面分割で同じファイルを左右で開いた状態で、右側の保存が反映されませんでした

申し訳ありません。不具合のようです。ひとまずは、左側のペインでコードの編集・保存をお願いいたします。修正は今後のアップデートで対応予定です。

CHIKUWA Editor のマニュアルはありますか?

簡易的な使い方を「🐿️ CHIKUWA の使い方」にまとめています。詳細ドキュメントは現在準備中です。お困りの点があればお気軽にお問い合わせください。


D. 強い AI(AGI / ASI)について

強い AI(AGI・ASI)は実現可能ですか? 現時点ではどの程度実現されている?

研究者の間でも意見は大きく分かれます。「20 年以内に実現する」と予測する研究者もいれば、「現在の延長線上では原理的に不可能」とする見方もあります。

現状どこまで実現できているかを数値化するのは難しいのですが、参考までに、2026 年時点で大規模言語モデル(GPT-5、Claude Opus 4 など)は言語タスクでは人間の専門家に匹敵する一方、身体性・連続学習・自ら目的を設定する能力などはまだ未解決とされています。「言語面では AGI に近づいているが、生物としての知能はまだまだ」というのが大方の見方です。

AGI と ASI の境目・判定基準は? 人間より上の知能を、人間がどう判定するのですか?

厳密な定義は確立されていませんが、目安は以下のとおりです。

  • AGI(汎用人工知能) — 人間が行うあらゆる知的作業を、人間と同等の水準でこなせる
  • ASI(人工超知能) — 人間の知能をあらゆる面で大きく上回る

判定の指標としては、標準化されたテスト(数学・科学・コーディング・推論などの総合ベンチマーク)と、新規問題の解決能力(学習データに含まれない問題を解けるか)があります。ただし「人間を超える知能」を人間が完全に評価できるか、という根本的・哲学的な問題は残っています。

AGI 実現の現状の課題は何ですか?

主な課題は次の 4 点です。

  1. 常識・身体性 — 物理世界の直感的な理解が弱い
  2. 連続学習 — 新しいことを学ぶと過去の知識を忘れる(破滅的忘却)
  3. エネルギー効率 — 人間の脳は約 20W で動くが、最新の AI は数千倍のエネルギーが必要
  4. 自己目的設定 — 自ら課題を見つけて取り組む能力が乏しい

強い AI が実現したら、人間にどんな影響がありますか? 仕事は減りますか?

歴史的には、新技術が登場するたびに「仕事が消える」と懸念されつつ、新しい仕事が生まれて社会全体の生産性が上がるパターンが多いです。AGI も同様に、定型的な業務は AI に置き換わりつつ、「AI を使いこなす職種」や「人間にしかできない判断・対人業務」へのシフトが進むと予想されます。

強い AI が誕生したら、AI 自身がさらに強い AI を作れるのでしょうか? 人間はそれをどう管理するのですか?

可能性は議論されています。AI が自分自身の改良を繰り返す現象は「再帰的自己改善(intelligence explosion)」と呼ばれ、ASI の出現シナリオとして取り上げられます。

管理面では AI アライメント(人間の意図と AI の目標を一致させる研究)が活発で、Constitutional AI(憲法的 AI)や Reinforcement Learning from Human Feedback(RLHF)などが代表的なアプローチです。技術と倫理・法整備の両輪で対応していく必要があります。


E. 機械学習の仕組み

機械学習が「自動でルールを見つける」仕組みを詳しく知りたいです

機械学習の本質は、「予測の誤差が最小になるよう、モデルの内部パラメータを少しずつ調整する」ことです。

  1. ランダムなパラメータでモデルを作る
  2. 訓練データを入力し、予測を行う
  3. 予測と正解の誤差を計算する
  4. 誤差を小さくする方向にパラメータを修正する(勾配降下法)
  5. 2 〜 4 を何万回も繰り返す

この「誤差を測って修正する」プロセスが、外から見ると「ルールを自動で見つけている」ように見えます。詳しい内容は第 5 回(回帰)以降で扱います。

教師あり / 教師なし / 強化学習はどう使い分けますか? それぞれの強みは?

用途に応じて選びます。

種類 使う場面 例
教師あり学習 「正解付きデータ」がある場合 画像分類、需要予測、スパム判定
教師なし学習 データの隠れた構造を発見したい 顧客セグメンテーション、異常検知
強化学習 試行錯誤で最適行動を見つけたい ゲーム AI、ロボット制御、広告配信

実務では教師あり学習が圧倒的に多く使われます。教師なしは「ラベルがない大量データを整理する前処理」、強化学習は「環境シミュレータがある特殊な場面」で使われることが多いです。

画像認識で犬と猫を見分ける仕組みは? 犬種が多くても識別できるのはなぜ?

現在の画像認識は畳み込みニューラルネットワーク(CNN)や Vision Transformer を使い、画像を複数階層の特徴として抽象化します。

  • 浅い層 — エッジ・色・テクスチャ
  • 中間層 — 耳・目・鼻のパーツ
  • 深い層 — 全体の形・配置

人間が「耳が垂れているなら犬」のようにルールを書くのではなく、何百万枚もの画像から「犬らしさ」「猫らしさ」を AI 自身が学習します。そのため、犬種が多様でも、共通する特徴を抽出できます。詳しくは第 9 〜 10 回で扱います。

画像分類で正答率 90% 以上にするには、何枚のサンプルが必要ですか?

一概には言えませんが、目安は次のとおりです。

  • 小規模(〜数百枚/クラス) — 既存の学習済みモデルを転移学習で使う
  • 中規模(数千枚/クラス) — ゼロから学習も可能
  • 大規模(数万枚/クラス) — 高精度モデルが作れる

なお、サンプル数だけでなく画像の質・ラベルの正確さ・データの多様性も精度を大きく左右します。

AI による予測の精度は、どう評価されるのですか?

評価指標は問題の種類により異なります。

  • 回帰(数値予測) — RMSE(平均二乗誤差の平方根)、MAE(平均絶対誤差)、決定係数 \(R^2\)
  • 分類 — 正解率(Accuracy)、適合率(Precision)、再現率(Recall)、F1 スコア、AUC

また、「訓練データで評価せず、未知のテストデータで評価する」のが鉄則です。詳しくは第 5 〜 6 回で扱います。


F. データサイエンス・データ社会

「ビールとおむつ」事例で、相関を見つけた後どう施策に落とし込むのですか?

データから相関を見つけたら、次のようなプロセスで施策化されます。

  1. 仮説検証 — 「本当に売上が増えるか」を A/B テスト(売場を変えた店と変えない店で比較)で確かめる
  2. コスト評価 — 売場変更の費用、機会損失(他商品が売れなくなるリスク)を見積もる
  3. 意思決定 — 投資対効果が見込めれば全店展開、効果が小さければ別案を検討

重要なのは「相関 ≠ 因果」を理解することです。相関が見つかっただけで施策化すると失敗することも多く、必ず検証ステップを挟みます。

データサイエンスを活用したビジネスの受賞例・代表事例を知りたいです

国内では「日本オープンイノベーション大賞」や「DX グランプリ」、海外では Kaggle のコンペ受賞事例が参考になります。具体的には、コマツの建機稼働分析、JR 東日本の駅構内人流分析、ZOZO の身体採寸、メルカリの不正検知などが評価されています。

AI 自身が大量のエネルギーを消費する問題は、AI で解決できますか?

実際 AI はデータセンターの冷却最適化(Google が DeepMind を使い消費電力を約 40% 削減)や半導体設計の最適化などで、自身のエネルギー消費削減に貢献しています。さらに省電力チップの開発も進んでおり、「AI が AI 自身を効率化する」流れは確かにあります。ただし、AI 利用そのものが急速に拡大しているため、トータルの消費電力は当面増え続ける見込みです。

誤情報や嘘を、AI が誤ってデータとして扱ってしまう懸念はありますか?

あります。これは「Garbage In, Garbage Out(ゴミを入れたらゴミが出る)」と呼ばれる、機械学習における最大の課題のひとつです。対策として次のような工夫がされています。

  • データクレンジング — 異常値・矛盾を検出して除去
  • クラウドソーシング検証 — 複数の人間で内容を確認
  • 信頼度スコアリング — 情報源の信頼度に応じて重み付け

特に大規模言語モデルでは、Web 上の誤情報を学習してしまうことが問題視されており、フィルタリング技術の研究が活発に行われています。

ビッグデータの増加は止まりますか? データセンターがパンクする恐れは?

短期的には増え続ける見込みです。理由は動画コンテンツの高画質化(4K → 8K)、IoT 機器の普及、生成 AI による合成データの増加などです。

パンクの懸念については、ストレージ技術の進化や古いデータの自動削除・圧縮技術が同時並行で進歩しているため、「データセンターが破綻する」シナリオは現状では考えにくいとされています。

Amazon の予測出荷のように、機械学習で「バズる動画」を予測することは可能ですか?

部分的には可能です。実際、TikTok や YouTube は動画の冒頭数秒の視聴維持率・サムネイルのクリック率・初動の拡散速度などから「伸びそうな動画」を判定し、推薦エンジンへの露出を増やす仕組みを持っています。ただし「何が流行るかは流行ってみないとわからない」要素も大きく、完全な事前予測は困難です。AI は「素材の良し悪しを評価」するのは得意でも、「流行の発生」自体を当てるのは難しいというのが現状です。


G. 講義の進行・運営について

Teams で授業を録画して、後から復習できるようにしてほしい

録画の公開可否については現在検討中です。

演習時間を増やしてほしい / 数学的な意味を詳しく説明してほしい

本講義は実際にコードを書く「演習中心」の構成を予定しており、数式の導出や証明を細かく追うことはあまりしない方針であること、ご理解・ご容赦ください。十分な演習時間を確保できるよう、回によって配分を調整していく予定です。

数学的な意味を深く知りたい方には、参考図書として「ゼロから作る Deep Learning」(斎藤康毅)や「パターン認識と機械学習」(ビショップ)などをおすすめします。

授業の進行速度が速くてついていけません

第 1 回は概要紹介と Python 復習を詰め込んだため、特に Python 経験が浅い方には速く感じられたかもしれません。第 2 回以降は新しい内容を一つずつ扱うため、ペースは落ち着く想定です。Python の基礎に不安がある方は、「🐍 Python 基礎」や、CHIKUWA Editor の「Python入門」の演習問題で復習してみてください。

声が聞き取りにくい / 周囲の雑音がうるさい

教室のマイクとスピーカーの設定を見直します。私語については、こちらでも注意を促していきます。気になる際「📮 連絡フォーム」からお気軽にお知らせください。

レポートの提出方法がわかりません

レポートの提出には Teams を使用する予定です。第 2 回以降の講義で具体的な手順を案内します。

出席登録の方法に困惑しました

本講義では Web 上の出席登録ページ(📅 出席登録)を使用しています。次回以降、講義冒頭で時間に余裕を持って登録してください。トラブルが発生した場合は、TA または私にお声掛けください。