講義ページ
https://lsnl.jp/l/training
講義ページ (複数ページ版 (モバイル端末向け))
https://lsnl.jp/~ohsaki/lecture/training/2025/toc.html
[授業中に提出] リフレクションシート (パスワードが必要です)
https://lsnl.jp/app/lecture/refl/show/training
[自習後に提出] レポート送信フォーム (パスワードが必要です)
https://lsnl.jp/app/lecture/report/show/training
講義ビデオ (パスワードが必要です)
https://lsnl.jp/video/training/2025/
連絡用メイリングリスト (教員に届きます)
training-staff[atmark]lsnl.jp
本文には、必ず学生番号・氏名・メールアドレス (@kwansei.ac.jp のもの) を明記してください。
大崎 博之
関西学院大学 工学部 情報工学課程
E-mail: training-staff[atmark]lsnl.jp
4 年次の卒業研究に向けて、 コンピュータとプログラミングを活用した、 効率的な研究活動の方法を学ぶ。 また、 将来のキャリア設計についても考える。 コンピュータの高度な利用法 (Linux/macOS/UNIX の利用法、 システム管理、 開発環境、 ネットワーク/サーバ構築) や、 プログラミング技術 (自動化処理、 データ分析/統計処理、 アプリケーション開発) を実習形式で学ぶ。
- 卒業研究のテーマや研究活動の基礎を理解し、簡単な研究活動を実施できるようになる。
- コンピュータの高度な利用法を習得し、UNIX 系オペレーティングシステムを効率的に操作できるようになるとともに、システム管理ができるようになる
- Python やシェルスクリプトによる処理の自動化、データ分析/統計処理、アプリケーション開発ができるようになる
アクティブラーニング形式 (全体説明、 グループワーク (ディスカッション、 コンピュータ実習、 ペアプログラミング等)、 プレゼンテーション、 振り返り) で実施する。
Python 言語とシェルスクリプトを中心に、 ペアプログラミングによる効果的なソフトウェア開発手法も学ぶ。 受講者の希望に応じて、 その他のプログラミング言語 (C/C++、 JavaScript、 アセンブリ言語、 Lisp、 Awk、 Julia、 Perl、 Ruby、 Go、 VBA、 Matlab/Octave、 R、 React、 Java、 Rust 等) もあわせて学ぶことができる。
受講者の希望に応じて、 コンピュータシミュレーション、 マルチプラットフォーム (iOS、 Android、 Linux、 macOS、 Windows、 Raspberry Pi) 開発、 ネットワークプログラミング、 AI (人工知能)/機械学習プログラミング、 グラフィックスプログラミング等に取り組むこともできる。
その他 (基礎平常点および達成点) 100%
基礎平常点 (毎回の実習の基本的な取り組み; 75 点満点) および達成点 (課題等の達成度; 25 点) により評価する。 ただし、 3 回を超える欠席 (またはこれに相当する遅刻・早退) があった場合には不合格とする。 やむを得ぬ事情で出席ができない場合には、 担当教員に申し出ること。
2025-04-09 Debian GNU/Linux のインストールとセットアップ
2025-04-16 CLI 環境のセットアップ
2025-04-23 ウィンドウマネージャ導入
2025-04-30 エディタ (Emacs チュートリアル)
2025-05-07 タッチタイピング
2025-05-14 ツールの設計・開発 (1)
2025-05-21 ツールの設計・開発 (2)
2025-05-28 ペアプログラミング
2025-06-04 キャリア設計
2025-06-11 Python 開発環境 (1)
2025-06-18 Python 開発環境 (2)
2025-06-25 研究テーマの理解 (1)
2025-07-02 研究テーマの理解 (2)
2025-07-09 休講
注意事項、 教育方針、 学習のポイント、 病欠/公欠の時に何をすればよいか等を説明しています。
大崎が担当する科目に共通の連絡事項・アドバイス
https://lsnl.jp/~ohsaki/lecture/
1. 解説 (30 分)
2. 実習 (60 分)
3. リフレクションシート記入 (10 分)
- いろいろな人とチームになる
- チームの人数は自由に決めてよい
- しゃべる
- 質問する
- 説明する
- 動く (立ち歩く)
- チームで協力する
- チームに貢献する
- ノートパソコンを日頃から適切にクリーニングできるようになる。
- ノートパソコンの BIOS 設定の概要を理解し、必要に応じて設定をリセット/変更できるようになる。
- オペレーティングシステムをインストーラを入手し、USB メモリにインストーラを書き込めるようになる。
- Debian GNU/Linux をクリーンインストールし、インストール時にどのような設定を行っているかを理解する。
自身のノートパソコンをアルカリ電解水を適切に使用してクリーニングせよ。
自身のノートパソコンの BIOS 設定を確認し、 以下を変更せよ。 (1) BIOS 設定の初期化、 (2) トラックパッドの無効化、 (3) セキュアブートの無効化、 を実施せよ。
Debian GNU/Linux (amd64) のインストーラを作成せよ。 バージョンは 12 (bookworm)、 アーキテクチャは amd64 を選択せよ。
Debian GNU/Linux ISO image (amd64)
http://ftp.riken.jp/Linux/debian/debian-cd/current/amd64/iso-cd/
How do I write a CD/DVD/BD image to a USB flash drive?
https://www.debian.org/CD/faq/index.en.html#write-usb
課題 3 で作成したインストーラを用い、 Debian GNU/Linux をクリーンインストールせよ。 ただし、 デスクトップ環境をインストールしては「いけない」。
資料
Debian GNU/Linux インストールガイド
https://www.debian.org/releases/stable/amd64/index.ja.html
実習終了後に自習を行い、 到達目標まで到達せよ。 疑問に思った点、 わからない点は各自で信頼できる文献を用いて調査せよ。
その後、「今週の作業内容」、 「『内容目標』をどの程度達成できた/できなかったか」、 「質問・要望・コメント」、 「感想」を「レポート送信フォーム」から送信せよ。
レポート課題の内容や書き方については、 レポート送信フォームに説明があるのでそちらを参照せよ。
提出方法: 「レポート送信フォーム」から送信せよ。 レポートが再提出された場合は、 新しいほうを採点対象とする。
提出期限: 次回の講義開始の 48 時間前とする (例えば、 4/9(水) の課題であれば、 4/16(水) 3:20pm の 48 時間前である 4/14(月) 3:20pm)。 期限を過ぎたものは受理しない。
注意事項: リフレクションシートは教員のみに送付される。 レポート課題は領域実習のメイリングリストに送付される (受講者全員 + 研究室メンバに送付される) ことに注意せよ。 他の受講者や、 研究室メンバに見られて困る内容はレポート課題には記載しないこと。
2025-04-09 と同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-1
- 設定ファイルを書換え、CLI のみを使用することで自身の PC を Wi-Fi に接続できるようになる。
- Debian におけるパッケージ管理の基礎を習得し、パッケージを最新の状態にアップデートできるようになる。
- シェルを標準の bash から fish に変更し、fish のドキュメントにいつでも参照できるようになる (高機能なシェルを使えるようになる)。
- 端末マルチプレクサである screen をインストールし、基本的な操作ができるようになる (複数のシェルを切り替えて使用できるようになる)。
Debian リファレンスカード
https://www.debian.org/doc/manuals/refcard/refcard.ja.pdf
Debian リファレンス
https://www.debian.org/doc/manuals/debian-reference/index.ja.html
Debian 管理者ハンドブック
https://www.debian.org/doc/manuals/debian-handbook/index.ja.html
最初に、 CapsLock を Ctrl に割り当てておく。
# nano /etc/default/keyboard (キーボードの設定ファイルを編集)
変更箇所
-XKBOPTIONS=""
+XKBOPTIONS="ctrl:nocaps"
# /etc/init.d/console-setup.sh restart (設定ファイルを再読み込み)
- から始まる行が変更前、 + から始まる行が変更後 (diff -u の出力形式と同じ)。 先頭の - や + は行の一部ではないことに注意。
設定ファイル /etc/network/interfaces を書き換えることにより、 無線 LAN (Wi-Fi) に接続せよ。
Using ifupdown
https://wiki.debian.org/WiFi/HowToUse#Using_ifupdown
Getting WPA_Supplicant to work on boot in Debian 10
https://unix.stackexchange.com/questions/537235/getting-wpa-supplicant-to-work-on-boot-in-debian-10
# ip a (ネットワークインターフェースを確認)
# iw dev (無線インターフェースを確認)
# ip link set wlp2s0 up (無線インターフェース wlp2s0 を有効に)
# iwlist scan (利用可能な無線ネットワークをスキャンする、無線ネットワークが見えているか)
# nano /etc/network/interfaces (ネットワークの設定ファイルを編集)
# ifup wlp2s0 (無線インターフェース wlp2s0 を ON に)
# iw wlp2s0 link (無線インターフェースの状態を確認、Connected になっているか?)
# ip a (IP アドレスが取得できているか確認)
※検索エンジンで、 「Debian 無線設定」等で検索してヒットしたページ (その大部分が「石」) を参考に「しない」のが上達の秘訣。
apt コマンドを用いることにより、 Debian GNU/Linux のパッケージを最新のものに更新せよ。
6.2. aptitude、apt-get、apt コマンド
https://www.debian.org/doc/manuals/debian-handbook/sect.apt-get.ja.html
# apt update
# apt upgrade
パッケージ fish をインストールするとともに、 ログインシェルを fish に変更せよ。
Finally, a command line shell for the 90s
https://fishshell.com/
# apt install fish
$ fish
> help
> chsh
パッケージ screen をインストールし、 screen の基本的な利用法を習得せよ。 エスケープキーは Ctrl-Z に設定すること。
GNU Screen
https://www.gnu.org/software/screen/
GNU screen usage
http://gnuscreen.org/
GNU Screen (Arch Linux)
https://wiki.archlinux.org/title/GNU_Screen
# apt install screen
> echo 'escape ^Z^Z' >~/.screenrc
> screen
2025-04-09 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-6
2025-04-09 と同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-1
- ウィンドウマネージャ (xpywm) をインストールできるようになる。
- xpywm の基本的な操作法を理解し、ウィンドウに対する一般的な操作ができるようになる。
- xpywm のインストール場所および変更方法を理解し、簡単なカスタマイズができるようになる。
- xpywm と qutebrowser の組合せで、高速な操作ができるようになる。
- sudo をインストールし、sudo コマンドが実行できる状態にしておく。
- fish をインストールし、デフォルトシェルを fish に変更しておく。
- LANG が ja_JP (日本語) になっていれば、以下を実行し、デフォルトロケールを en_US.UTF-8 に変更しておく。
> sudo dpkg-reconfigure locales
xpywm、 xpymon、 xpylog が利用可能な状態の X ウィンドウシステムを起動せよ。
xpywm のキーボードおよびマウス操作法を暗記せよ。
xpywm の文字およびフレームの色を自分好みのものにカスタマイズせよ。
Web ブラウザ (qutebrowser) を起動し、 検索エンジンで「debian sudo」を検索し、 1 番目の検索結果の Web ページを開くために必要なキー操作と、 そのストローク数を答えよ。
もしまだなら、 事前に sudo コマンドのインストールと設定を済ませておく。
sudo コマンドのインストール・設定方法
# apt install sudo
# adduser 自分のログイン名 sudo ← 自分自身を sudo グループに追加する
いったんログアウト
インストール用スクリプトを wget で入手し、 シェル (sh) で実行する。 その後、 さまざまな設定ファイルを格納したアーカイブ (home.tgz) をホームディレクトリ上で展開する。
> wget -O - lsnl.jp/xpywm | sh
> tar xzvf home.tgz
> startx
home.tgz を展開すると、ホームディレクトリ以下の設定ファイルが上書きされることに注意せよ。
以下に操作法の一覧がある。
https://github.com/h-ohsaki/xpywm
プログラム本体 (Python のスクリプト) xpywm の場所は which xpywm でわかる。
> which xpywm
/usr/local/bin/xpywm
このファイル xpywm 中の、 以下のような箇所
FRAME_COLOR = 'aquamarine1'
TITLE_COLOR = 'aquamarine3'
にある色名 (aquamarine1 や aquamarine3 など) を他の色名に書換えればよい。 X ウィンドウシステムが認識する色の名前は、
/usr/share/X11/rgb.txt
に書かれている。
xpywm の所有者は root のため、 (1) root の権限で書換える、 (2) ファイルの所有者を自分に変更する (chown コマンド)、 (3) ファイルを所有者以外でも書換えらえるようにする (chmod コマンド) などの方法がある。
<Alt+Ctrl+3>odebian sudo<Enter>fgl
17 ストロークただし、 最後の 2 文字 (gl) は検索エンジンや検索結果によって変化する。
2025-04-09 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-6
2025-04-09 と同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-1
- Emacs の基本的な操作方法を習得し、ファイルを作成・編集できるようになる
https://lsnl.jp/~ohsaki/lecture/training/2025/priv/03.pdf
UNIX では Ctrl キーを多用するので、 CapsLock キーを Ctrl キーに割り当てておく。
/etc/default/keyboard の
XKBOPTIONS=""
という行を
XKBOPTIONS="ctrl:nocaps"
に書き換える。その後、以下を実行。
# /etc/init.d/console-setup.sh restart
Emacs をインストールせよ。
Emacs のチュートリアルを起動し、 「もし Emacs が反応しなくなったら」までを実行せよ。
「Hello!」という文字列が書かれた ~/foo.txt というファイルを Emacs のみを用いて作成せよ。
Emacs のキーバインド一覧を表示し、 どのようなコマンドがあるかを眺めてみよ。 また、 (1) M-d、 (2) C-SPC、 (3) C-w、 (4) C-y というキー操作によってどのような処理が実行できるかを調べよ。
> sudo apt install emacs
> Alt + Ctrl + 2 (Alt と Ctrl を押しながら 2 を押す (「emacs &」で起動してもよい)。
> C-x RET l Japanese RET (言語環境を日本語に変更、M-x set-language-environment RET でもよい)
> M-h t (M-x help-with-tutorial RET でもよい)
※ C-x は Ctrl キーを押しながら x キーを押す
※ M-x は Alt キーを押しながら x キーを押す
※ RET は Enter キー (もしくは C-m)
> C-x C-f foo.txt RET (M-x find-file foo.txt RET でもよい)
> Hello!
> C-x C-s (M-x save-buffer RET でもよい)
※ UNIX では ~ はホームディレクトリを表す。
> M-h b (M-x describe-bindings RET でもよい)
> M-d: kill-word (単語単位の削除 (キル → キルリングに入るタイプの削除))
> C-SPC: set-mark-command (現在のポイント(カーソル位置)をマークする)
> C-w: kill-region (リージョン (マークとポイントの間) をキルする)
> C-y: yank (キルしたテキストをペーストする)
2025-04-09 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-6
(Emacs に限りませんが) オンラインドキュメントではなく、 書籍で知識を吸収することをおすすめします。 Emacs に関する良書は多くありませんが、 読むなら以下の本をすすめます。 「GNU Emacs マニュアル」は原文が GPL で公開されているので、 翻訳版も GPL で公開されています。
Richard Stallman, ``GNU Emacs マニュアル,'' 共立出版, 1988.
https://lsnl.jp/~ohsaki/lecture/training/2025/priv/GNU_Emacs_Manual.pdf
GNU Emacs マニュアル 29.4
https://ayatakesi.github.io/emacs/29.4/html/index.html
ただし、 翻訳の質は共立出版のもののほうがはるかに良いです。
Debra Cameron, James Elliott, Marc Loy, Eric Raymond, Bill
Rosenblatt, ``入門 GNU Emacs 第 3 版, '' オライリー・ジャパン, 2007.
追加の資料です。
日本のEmacsユーザーのためのハブサイト
https://emacs-jp.github.io/
2025-04-09 と同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-1
- タッチタイピングの利点を理解し、他人に説明できるようになる。
- タッチタイピングにおけるホーム行 (home row) を理解し、両手のそれぞれの指で担当すべきキーを押せるようになる。
- US 配列と JIS 配列の違いを理解し、適切なキーボードを選択できるようになる。
- タイピング練習ソフトウェア (pytyping) をインストールし、毎日コツコツとタッチタイピングの練習ができるようになる。
資料
Touch typing
https://en.wikipedia.org/wiki/Touch_typing
How to learn Touch Typing
https://www.unipage.net/en/touch_typing_how_to_learn
Touch Typing Finger Placement
https://agilefingers.com/articles/touch-typing-finger-placement
Keyboard layout
https://en.wikipedia.org/wiki/Keyboard_layout#Japanese
タッチタイピングの利点は何か。
タッチタイピングにおけるホーム行 (home row) において、 (1) 右中指が担当するキー、 (2) 左人差し指が担当するキーをそれぞれ答えよ。
US 配列と比較した時の JIS 配列の欠点は何か。
pytyping をインストールし、 タッチタイピングを練習せよ。
まず、 これまでのタイピング方法で、 どの程度の WPM (Word Per Minute) が得られるかを試し、 その値 (WPM) を記録せよ。
その後、 タッチタイピングで、 遅くてもよいので何度も練習を繰り返せ。
- 入力速度が向上する。
- 視点の切り替えが不要になり、生産性が向上する。
- 頸部の疲労が軽減される。
(1) 8, I, K, ,
(2) 4, R, F, V, 5, T, G, B
コンピュータのキーボードはもともと US 配列で設計されているため、 JIS 配列にするためにさまざまな歪みが生じている。
- キーのレイアウトに無理がある。
- キーの配列が美しくない (ガタガタ・バラバラ)。
- 重要なキー (スペースバー、シフトキー、バックスペースキー) が小さい。
- (かな入力しない人には)「かな」の刻印が邪魔。
> wget --user=******** --password=******** https://lsnl.jp/~ohsaki/lecture/training/2025/priv/pytyping
> sudo install -m 755 pytyping /usr/local/bin/
> wget --user=******** --password=******** https://lsnl.jp/~ohsaki/lecture/training/2025/priv/rfc2914.txt
> sudo mkdir -p /usr/local/share/pytyping
> sudo intall -m 644 rfc2914.txt /usr/local/share/pytyping
> pytyping -n 1
※ それぞれのコマンドが何を実行しているのか、また、各コマンドがなぜ必要なのかもあわせて理解せよ。
2025-04-09 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/training/2025/#8-6