Python
OpenCV
Kivy
Pyaudio
JupyterLab

Pythonのテキスト作りました

●テキスト本体(PDF形式202ページ:2.55MB) 2018/08/11更新
 言及している主なモジュール:
 Kivy, socket, threading, concurrent, requests, BeautifulSoup,
 mpmath, subprocess, datetime, wave, PyAudio, Tkinter
 →テキスト中のサンプルプログラム
●モジュールブック(PDF形式106ページ:2.71MB) 2018/08/15更新
 言及しているモジュール:
 OpenCV, Pillow, pygame, Eel, NumPy, matplotlib,
 SymPy, hashlib, Cython, Numba, ctypes, JupyterLab
 →モジュールブック中のサンプルプログラム
---------------------
Pythonを用いたゼミ活動の紹介をしています.
 →Pythonを応用した活動の紹介
---------------------
Pythonを盲信する学生が出てくるといけませんので,Pythonの長所/短所について冷静に考えてほしくて記事を書いています.
 →Pythonの長所と短所についての考察
---------------------
【有用なリンク】
・Windows用コンパイル済みモジュール
 標準的なインストール方法でだめな場合に重宝します.(自己責任でお願いします)
---------------------
【データ処理関連】
 Pythonでデータ処理するための基礎知識についてテキスト作っています.まだ試作品でして,ご意見やご助言いただきたいです.
→Pythonによるデータ処理のテキスト
---------------------
 
(2017/05/16)
学校でプログラミング教えています.
学生に教えるためのPython3の入門テキストを作りました.
既に何かの言語を習得している人が迅速にPythonに慣れるための入門書というスタンスです.
 
GUIライブラリ「Kivy」を使ってアプリを作れるところまで一気に解説しています.(Kivyの入門)それと,Webスクレイピング用にrequests, BeautifulSoup4の入門的解説もしています.
(Tkinterに関しても基本的な解説をしています)
 
まだまだ完成度が低い状態ですが,教えならがテキストも修正・アップデートしてゆきます.
無料で公開しますので,ご意見いただけたら嬉しいです.
(誤った箇所を見つけられましたら是非ご一報くださいませ)

紹介ページ
 
「これ使いたい」という方は大歓迎です.ご意見をいただきながら完成度を高めて行きたいです.
特に学校でプログラミングの指導をしておられる先生方に使っていただけたらと思います.現場から上がってきた要求やご指摘などいただけましたら幸いです.(可能な限りテキストに反映します)
 

補足(更新に関すること,ご案内など)

--------------
【補足】(2018/08/15)
 モジュールブックのSymPyの解説に若干の加筆.
 
--------------
【補足】(2018/07/25-08/11)
 クロスプラットフォームのアプリやモジュールを作る際に,計算機環境に関する情報を取得する必要が出てきます.それでplatformモジュールの基本的な使い方をテキスト本体に載せました.
 
strftimeの書式指定の解説に誤りがありました.お詫びします.
最新版に差し替えてくださいませ.
 
その他,些細な修正とアップデートしました.
(環境変数の参照,文字列の処理など)
 
 テキスト本体のサンプルプログラムはKivyやサウンドまで含めて,一応3.7で動作することを確認しました.でも,3.7を人に薦めるのはもうちょっと先にします.
 
--------------
【補足】(2018/07/25)
 「Kivyが動かなくなった」という相談を受けることが最近少し増えています.基本的には
「Kivy関連パッケージを全てアンインストールしてから再インストールしてください」
と助言していますが,それでも解決できないケースがありました.私が対応したケースでは「SDL2.dllのバージョン違い」が原因となっていました.対応策としてSDLの公式サイトから最新の安定版のSDL2.dllを入手してインストールしてから,Kivyのアンインストール&再インストールをしたところKivyが動作しました.(この件,テキスト本体にも載せました)
 
ご参考まで.
 
(更に補足)
 SDLに限らず,dllは必ず「正しい出処」から入手してくださいませ.一見して「公式サイト」や「正規の再配布サイト」に見えて,実はマルウェアが付いてくるところがありますのでご注意ください.
 
--------------
【補足】(2018/07/21)
 テキスト本体にAnacondaに関する概略的な紹介を載せました.Pythonをはじめるに当たって,PSFの純正ディストリビューションを使用するかAnacondaを使用するかで迷う人が多いようです.データ処理をやるにはAnacondaが良いですね.特にAnacondaは大量のライブラリ(モジュール)が予め付いている上にパッケージ管理もやりやすいので,学生さんにはおすすめです.各種モジュールのインストールで苦戦することが無くなると思います.
 
注意するべき点としては,
・PSF版とAnacondaを混在させるのはあまり良くない
・Anaconda環境下でのPIPは慎重に
というのがあります.最悪の場合はPython環境を破壊してしまい,再インストールする羽目になります.もちろん多くの場合はAnaconda環境下でPIPでモジュールをインストールしても「大体は大丈夫」ですが,常に注意してくださいませ.
 
 余談ですが,PSF版のWindows用PythonはMicrosoft社のCコンパイラでビルドされており,AnacondaのPythonはGCCでビルドされているようですね.
 
 更に余談ですが,WindowsでPythonを使う場合,PSF版やAnacondaでもなくMSYS/MinGW環境の利用という選択肢があります.これはWindows環境でUNIXライクな開発環境(POSIX環境)を実現するものでして,VirtualBoxとか使ってシステムを仮想化するのとは全く違ったものです.こちらの場合でも,Python用のビルド済みパッケージが揃い始めていますので,選択肢が増えて良い感じだと思います.ただしMSYS/MinGWでのPython利用は学生にはお薦めできません.
 
--------------
【補足】(2018/07/17)
 Pythonとモジュール群を活発に利用し始めると,パッケージ管理が煩わしくなりますね.今のテキストでは,素のPythonのインストーラ(PSF版)によるインストール方法と,PIPによる基本的なパッケージ管理について解説していますが,そろそろAnacondaも無視できない感じがしています.
(自宅でPython使う学生はAnacondaを選ぶようです)
 
ちょっと考えてみます.
 
--------------
【補足】(2018/07/07-15)
 テキスト本体に加筆.collectionsモジュールのnamedtupleに関して基本的な解説を載せました.かなり便利なデータ構造です.「クラス定義するほどでもないんだけど…」というときにnamedtupleを使いましょう.
 
 テキストを公開してから1年以上になって内容が1段階そろった感がありますので,そろそろ全体の校正作業(クリーニング)を一度やった方がよいですね.
しばらく細かい修正を続けます.
 
 あと,Python3.7もウォッチし始めています.今の所,テキスト本体で紹介しているサンプルは大体動いていますが,私の環境ではKivyがまだダメですね…
3.7を実戦投入するのは今は控えたほうが安全です.各種モジュールが3.7に対応するにはもう少し時間がかかりそうです.
 
3.6と3.7を同時にインストールしておいて,起動時にバージョンを選ぶこともできますので,一応3.7も入れておいて動作を確認するのも良いかと思います.切り替え起動の方法についてもテキスト本体に解説を載せました.(2.7も同居可能です)
 
--------------
【補足】(2018/07/04-05)
 モジュールブックに Eel の基本的な使い方を載せました.HTML5の枠組みでGUIが構築できるのは大変にありがたいですね.しかも大変に手軽な使い勝手です.Eelは今後の発展が期待できますね.アプリ開発にPythonとJavaScriptが同時に利用できるので利便性の大きさははかり知れません.(EelのGUI基盤はGoogle Chromeです)
 
Eel使用上の注意点としては,Python⇔JavaScript間での値のやり取りがあります.互いに異なるプロセスですから,関数呼出しに引数を渡すことはできますが,素朴にreturnで値を返すことができません(不可能ではありませんが,ちょっと面倒な作業になります)ので,ちょっと独特の工夫(割と単純な)が必要になります.
 
でもHTML5に慣れた人にとっては,Eelの利用は最も手軽な形のGUIアプリ構築の手段となります.しかもHTML5ですからGUIの機能性,デザイン性共に抜群です.更に,JavaScriptの各種ライブラリが使えるので,大げさに表現しますと「どんなアプリでも作れる」感じで嬉しくなりますね.
 
JavaScriptのテキストも作っています.こちらはかなり「未完成感」が強いですが,またご意見くださいませ.
 
--------------
【補足】(2018/07/01-04)
 テキスト本体にexec関数,eval関数に関する基本的な解説を載せました.データをプログラムとして実行できる,とても便利な関数です.
 
 あと,TkinterとPillowを組み合わせて画像表示をする際,PhotoImageの扱いに意外な注意点がありますね… 「Tkinterで画像が表示されない…,原因がわからない…」そんなことになりそうな落とし穴がありますので,ご一読を.
 
--------------
【補足】(2018/06/18-07/01)
 テキスト本体にTkinterの基本的な解説載せました.
あと,用語の乱れ("関数"と"メソッド"の取り違え)をいくつか発見したので修正しました.
またしばらくはアップデート(修正)が続くと思います.
 
引き続き「感想」「誤りの指摘」「要望」くださいませ.
お待ちしています.
 
--------------
【訂正とお詫び】(2018/06/09)
 テキスト本体に重大な誤りがありました…
モジュールの作成方法の説明の中の誤りを修正しました.
 
使ってくださっている方々にお詫び申し上げます.最新版に差し替えてくださいませ.
 
ご指摘くださったM.K.さん,ありがとうございます.本当に助かります.
 
今後もご指摘いただけたら幸いです.
 
--------------
【補足】(2018/06/04)
 「Tkinterの解説はしないのか?」というメッセージがちらほら…(公開当初から…)
Kivyだけで良いかと思っていましたが,気軽さの面ではTkinterも無視はできないですね.検討します.
 
--------------
【補足】(2018/05/26-29)
 テキスト本体に加筆.datetimeの日付・時刻の書式整形方法(strftimeによる書式整形)の解説を追加しました.
 あと,リストの要素を並べ替えるsortメソッドに関して若干の加筆.
 
--------------
【補足】(2018/05/22-23)
 テキスト本体に加筆.Kivyのテキスト入力(TextInput)で,複数行を扱うかどうかの設定に関して説明を加えました.
それと「イテレータ」について初歩的な解説を入れました.入門書には必要ないかと考えていましたが,紹介くらいはしておかないと,学生が後々困るのではないかと感じた次第です.
 
 あと,ファイルサイズの取得方法の解説を追加して,更に,文字列検索の finditer に関する解説に誤りを見つけましたので修正しました.
 
その他,「関数」と「メソッド」の言葉の取り違えなど,用語の誤りをいくつか修正.ただし,用語がまだ怪しいところがありそうです…(修正つづく)
 
--------------
【ご案内】(2018/05/12)
 データ処理パッケージの基本的な使用方法についてテキスト(試作品)を公開しました.
Pythonによるデータ処理のテキスト
 「データ処理」は個別の目的があってはじめて意味を持ちますので「言語の解説」の範疇に収まりません.それで,自分が教える範囲のみのことを書いていますと,かなり偏狭な内容になりますので,是非ともまたアドバイスやご指摘いただきたくお願いいたします.
 
--------------
【補足】(2018/05/12)
 テキスト本体に加筆.sysモジュールによる標準入出力の使用の際に,エンコーディングを設定(文字コードを指定)する方法を追記しました.
 
--------------
【補足】(2018/05/05)
 テキスト本体に加筆.書式整形の方法とpathlibモジュールの使用方法に関して若干加筆しました.
 
--------------
【補足】(2018/05/01)
 テキスト本体に加筆.バイナリファイルから,指定したバイト数だけデータを読み込む方法について加筆しました.
 
「何故もっと早く説明を入れなかったのか?」と思う今日このごろです.この分で行くとまだ色々ありそうですね.
 
--------------
【ご案内】(2018/04/25)
 テキスト本体を入手してくださった方からご意見いただきました.
「量が多すぎますね」とのことですが,最初は1章,2章,4章だけ使っていただけば良いですよ.要するに,はじめに必要となるのは60ページ強です.
 
Kivy,サウンドなどは後回しにして,必要に応じてご使用ください.
PDFを紙に印刷出力する場合は「両面印刷」をお薦めします.
 
--------------
【補足】(2018/04/24)
 テキスト本体に加筆.「標準エラー出力」については何も触れていなかったので,今回加筆しました.
 
--------------
【ご案内】(2018/04/21)
 Jupyter関連モジュールが急に動作しなくなったと数人の方からご相談いただいています.
 
私の環境でも発生しましたが,関連パッケージを一旦アンインストールして,新たにインストールし直したら解決しました.
 
--------------
【補足】(2018/04/21)
 モジュールブックに加筆.Jupyter Notebook上でinput関数を使用した例を掲載しました.
 
--------------
【補足】(2018/04/11-16)
 テキスト本体に加筆.誤りを見つけて修正しました.
forなどの繰り返しでよく使用するrangeですが,これはrangeクラスのオブジェクトを返す関数であると見るわけですね.(ややこしい…)関数なのかオブジェクトなのかを間違えることがありそうです.
 
 これでなんとか新学期の素材準備ができたような感じです.しかし,アップデートは当分終わりそうにありません.
 
--------------
【補足】(2018/04/01-6)
 モジュールブックにJupyter Labに関して若干の加筆.数式処理モジュール(SymPy)使用時に数式をMathJaxで整形表示する方法と,サウンド再生に関する方法の基本的な解説を加筆しました.
 
--------------
【補足】(2018/03/22)
 テキスト本体に加筆.Python3では変数名に日本語が使えるのですね.完全に盲点でした.学生から「変数名に日本語使えるんですか?」と聞かれて,「だめ! 半角アルファベットで書き始めること!」とか言ってしまったような気がします.大変恥ずかしい…
 
--------------
【補足】(2018/03/16)
 モジュールブックに加筆.JupyterLabの基本的な使い方の解説を載せました.
 Pythonを対話モードで使う場合に表やグラフを扱うケースでは,やっぱりそれなりの見やすさと使いやすさが重要になりますね.特にデータ解析やモデリングなんかをやる場合はJupyterLabが良いと思います.
Pythonスクリプトをアプリとして実行するスタイルも重要ですが,「ワークベンチ」として対話的に使うスタイルも今後重要になると思います.JupyterLabがPython利用のインターフェースの標準になるような予感もありますね.
 統計解析と機械学習のテキストを執筆中ですが,作業を例示する部分は全てJupyterLabで書き直そうと思います…
 
 JupyterLabは今後頻繁にアップデートされそうですね.目が離せません.
 
--------------
【補足】(2018/03/09)
 テキスト本体に加筆.pipコマンドでパッケージ管理する場合,pipコマンドのディレクトリがコマンドサーチパスに登録されていない場合に,直接pipコマンドを実行することができません.その場合はPython処理系を介してpipを実行することになります.その方法について加筆しました.
 
--------------
【補足】(2018/02/19-20)
 テキスト本体に若干の加筆.Pythonでは関数定義の内外でのグローバル/ローカル変数の区別(変数のスコープ)が微妙な印象を与えます.慣れないうちは不思議な挙動に悩まされることもあります.
 うっかりすると見つけにくいバグをつくることになりますので,これに関して加筆しました.
 
 バイト列を文字列オブジェクトに変換する際に,文字コードの体系が分からない場合がありますが,それを識別するための chardet パッケージについても基本的な解説を加えました.
 
 春休みに入りますので,更新作業が増えます.
 
--------------
【補足】(2018/02/12-16)
 モジュールブックに加筆.pygameライブラリでスプライトを扱う方法について基本的な解説を加えました.ゲーム開発には必須の機能ですね.
 
 テキスト本体もメンテナンスはじめました.新学期に向けて何回かアップデートする予定です.
 サンプルプログラムのMacの環境における動作検証が甘いとのご指摘を頂きました.一度,全て検証しますのでちょっとお待ち下さい.
 
--------------
【補足】(2018/01/16)
 テキスト本体の条件判定の部分に加筆.条件式に特殊な値を与えた場合の挙動について解説.
 
真理値(True/False)以外の値の論理演算(and,or,not)はあまり使わない方が良いようです.といいますか,論理演算の結果どのよう値になるかについては個別に検証すべきだと思います.そうでないと見つけにくいバグを作ってしまうことにつながります.
 
 あと,テキスト中に掲載しているサンプルプログラムの一覧も公開しました.ダウンロード可能です.学生(初心者)向けに「かなり冗長に」作ったプログラムですので,そのへんご了解くださいませ.余分な変数を用意したり,余計に行を分割したりと「だらだら」しています.実際はもっと簡潔に書けますので,どうぞご自由に改良してください.良いトレーニングになると思います.
 
--------------
【補足】(2018/01/13-14)
 テキスト本体に加筆.「四捨五入はどうやるんですか?」という素朴な指摘が来ましたので加筆.
 モジュールブックにも加筆.NumPyでCSVデータを読み込む際に,見出し行をスキップする方法を加筆しました.
 
 pygameでスプライトが使えるのですね.ゲーム作りが楽しくなりそうです.使い方を調べてモジュールブックに加筆しようと思います.(春休みの課題ですね)
 
--------------
【補足】(2018/01/08)
 テキスト本体にケアレスミス発見… 修正しました.
パラパラ見ていただけでミスが見つかりました.このぶんでいくと,かなり変なところが点在してそうですね…
 
今度の春休みにはしっかりオーバーホールして新学期に備えようと思います.
(もちろん随時修正していきます)
 
--------------
【補足】(2018/01/01)
 新年,明けましておめでとうございます.みなさん,今年もよろしくお願いします.
 
テキスト本体,モジュールブック共,若干の加筆しました.今年もご指摘,ご意見いただけますようお願いいたします.
 
--------------
【補足】(2017/12/29)
 テキスト本体とモジュールブックに加筆.卒業研究もラストスパートとなって,指導しながら次々と具体的な追記項目が上がってきています.来月いっぱいは更新が多くなるかもしれません.
 
--------------
【補足】(2017/12/22-23)
 テキスト本体に加筆.文字列の置換方法,正規表現による文字列検索の部分に加筆.(その他,若干の加筆)
 
統計解析と機械学習に関するテキスト&教材の準備について現状報告.
統計学の最も基本的な部分(確率分布,推定,仮説検定など)の実演と解説ができた感じですが,モデリングや機械学習に関する部分はこれからです.
 
学校(職場)で使える形になるのは来年度中になりそうです.
 
--------------
【補足】(2017/11/08)
 テキスト本体に加筆.PyAudioとwaveモジュールに関する部分に,音声再生の終了検出や繰り返し再生の方法についての解説を追加.
 
--------------
【補足】(2017/11/04)
 モジュールブックに索引項目の追加.それに体裁の乱れを修正しました.
 
他大学の先生(友人)から問い合わせがありまして 「テキストの使用上の許諾とかどうなっているのか?」 とのことでした.
公開しているテキストは「フリーソフト」とします.著作権は保持していますが,商用/非商用問わず自由に使ってください.印刷と再配布もしていただいて構いませんが,内容は変更せずにお願いします.
 
そんなことより,修正依頼とかツッコミがいただける方がありがたいので奔放にやっております次第です.(ご指摘お待ちしております)
 
--------------
【補足】(2017/11/03)
 テキスト本体の誤りを修正しました.
今回もご指摘くださったY.N様,ありがとうございます.
 
--------------
【補足】(2017/11/01)
 テキスト本体に加筆.久しぶりにKivy関連です.
アプリケーションの開始時と終了時のハンドリング方法について加筆.
 
統計解析と機械学習に関するテキスト&教材の準備について現状報告.
作業は進んでいるのですが,取り扱う内容の射程が思っていたよりも広くて溜息が出ています…
 
要望としていただいているものとしては,各種パッケージの使い方をコンパクトに取りまとめて欲しいというのが多いですが,パッケージの数も多い上,この分野は基礎知識(統計学)が無いと学生にとっては全く意味不明になりますので,基礎的な統計学に関しても言及しはじめています…
 
というので,日の目を見るまでまだ時間がかかりそうです.
 
--------------
【補足】(2017/10/22)
 モジュールブックに加筆.
 
NumPyでユーザ定義関数を「ベクトル化」する方法について加筆しました.
データサイエンス・機械学習のための教材準備をしている最中ですが,多量のデータに対する処理の効率化が重要になってきますので,ベクトル化で処理を高速化する方法について書いた次第です.
 
データサイエンス・機械学習のための準備ですが,サンプルデータの用意と基礎理論の分かりやすい解説の思案に時間がかかっています…
 
また,学生を実験台にしながら…(笑)
 
--------------
【補足】(2017/10/21)
 モジュールブックに加筆.
 
SymPy(数式処理モジュール)のグラフ描画機能に関する説明を加えました.
 
--------------
【補足】(2017/10/19)
 Kivy利用時に発生するトラブルへの対処について,テキスト本体に加筆しました.(付録の章に加筆)
 
Kivyが使用するグラフィックAPIを選択設定できます.これがうまく設定されていないと,Kivyを使ったプログラムが動かないことがあります.
 
再度Y.N様からご指摘,ありがとうございます.
テキストの編集を私1人でやっている関係上,多くのケースを予めテストすることができない状況にありますので,ご指摘いただけると助かります.
 
別件で,matplotlibに関してモジュールブックも加筆しました.
グラフの見出しやラベルに日本語フォントを使用する方法の説明を加えました.
 
--------------
【補足】(2017/10/14)
 テキスト本体にあった誤字の修正.
 
ご指摘くださったY.N様,ありがとうございます.
 
現在,統計解析と機械学習に関するモジュールの使用方法について解説の準備をしています.(今度はかなり時間がかかりそうですが…)
ご指摘,ご要望お寄せいただけますと助かります.(To:皆様)
 
--------------
【補足】(2017/10/13)
 モジュールブックに加筆.
 
matplotlib で複数のグラフを1枚に描画する方法(subplotsの使用方法)について解説を加えました.
 
--------------
【補足】(2017/10/08)
 map, lambda, filter に関してテキスト本体に加筆.
 
Pythonらしいスッキリしたプログラムの記述に役立ちます.
「PythonはLISPみたい」という感想があります.この特徴は個人的に気に入っております.
 
--------------
【補足】(2017/10/04)
 テキスト本体,モジュールブック共に若干の修正・加筆.
 
・WAV音声をNumpyで読み込んだ際の左右の音声の格納順番
・Numpyで使える関数の紹介を少々
 
--------------
【補足】(2017/10/01)
 モジュールブックに ctypes の解説を加筆しました.
 
C言語&Pythonでしっかり開発できるように,データの受け渡し(引数と戻り値の扱い)の方法について説明を加えました.
 
--------------
【補足】(2017/09/29)
 モジュールブックに ctypes の使い方(導入的レベル)を加筆しました.
 
当然といいますか,最速です.(C言語ですので当たり前ですね)
 
今後は,Cython, Numba, ctypes をゼミ活動で使ってみて,得られたTipsを追記していこうと思います.
 
--------------
【補足】(2017/09/27)
 モジュールブックに Numba の使い方(導入的レベル)を加筆しました.
 
Cython, Numbaを触ってみた感触ですが,速度チューニングの「勘所」をしっかり把握しないといけない感じがあります.
 
やっぱり速度対策は「Cで書いてPythonから呼び出す」というのが確実かもしれません.
 
これに関しましても,是非ご意見いただきたいです.
 
次の速度対策は ctypes ですね.
 
--------------
【補足】(2017/09/24)
 Cythonの解説を書いた途端に他大学の先生方から助言いただきました.
「Numbaというのがありますよ」とか
「Cプログラムとつなげるにはctypesが良いですよ」とか…
大変ありがたいです.とても良さそうなので使い方を整理してみようと思います.
 
 Cythonは「独自の言語」という感じで,Pythonから少し離れてしまう感がありますね.それで「LLVMを応用したNumbaの方が良いのではないか」というご意見でした.元のPythonと互換性が高いならありがたい限りですね.調べてみます.
 
--------------
【補足】(2017/09/22)
 モジュールブックに Cython の使い方を書き始めました.
ゼミでPython使っていますが,そろそろ実行速度に対する不満の声が出始めています.C言語がまだ苦手な人に向けて,手軽にPythonプログラムを高速化する方法として紹介しています.
 
Cythonに関する解説はまだまだ加筆が続きそうです.
 
--------------
【補足】(2017/09/18)
 テキスト本体内の用語の表記を部分的に修正・加筆しました.
 
--------------
【補足】(2017/09/11)
 mpmathの使い方について,テキスト本体に若干の加筆.
 
--------------
【補足】(2017/09/10)
 モジュールブックに加筆.PillowでアニメーションGIFを作成する方法の簡単な解説を入れました.
 
--------------
【補足】(2017/09/07)
 「データベースへのアクセス方法も重要では?」と他大学の先生から助言あり.
すみません,体が1つしかないもので… でも自分の「やることリスト」には入れておきます.(SQLite と MySQL というところでしょうか)
 
今の優先順位からすると,機械学習に向けた方面を念頭に置いています.
 
--------------
【補足】(2017/09/06)
 本日,アクセス数が15,000を超えました.そろそろ責任が重くなってきました.テキストのほころびが怖くなってきます.
 
テキスト本体,モジュールブックの両方において,用語が少々怪しい感じのところがあります.
 
インポートして使用するライブラリにおいて,「クラス・メソッド」なのか「ライブリの関数」なのかはっきりしない書き方の部分が散見されますね.
 
もう少し我慢しておつきあいお願いします.
 
--------------
【補足】(2017/09/04)
 MacにKivyをインストールする方法を加筆.Macユーザの方からのリクエストがありましたので加筆しました.
 
--------------
【補足】(2017/09/01)
 やっぱりデータサイエンスのテーマを扱うためにpandasモジュールの使い方を教える用意をした方がよさそうですね.日本語処理の方法の整理が一段落したらこちらに取り掛かろうかと考えています.
 
結局この夏休みは,日本語音声の入出力と形態素解析の方法の整理に時間を費やした感じです.
 
--------------
【補足-2】(2017/08/31)
 知人のMacファンからお叱りを受けました.MacのOSの名称が誤っているとのことで,早速修正しました.
 
--------------
【補足】(2017/08/31)
 テキスト本体に,AppleのMac(OS X, mac OS)にPython3をインストールする方法を加筆.Macユーザからの相談があったので加筆しました.
 
Pythonインタプリタ,PIPコマンドの起動方法がWindowsとMacで少しだけ異なる点があります.
 
--------------
【補足】(2017/08/26)
 ファイルやフォルダ(空)を削除する方法についてテキスト本体に加筆.
あと,条件式の書き方についての説明が無かったので加筆.
 
--------------
【補足】(2017/08/25)
 テキスト本体に加筆.桁数の大きな数の計算をするために mpmath モジュールの使い方の簡単な説明を入れました.
 
マンデルブロ集合の画像をどこまでも拡大するというのをテーマに持つ学生に対応するためですが,実際には GMP を使って C で書くことになります.
Pythonの長所短所を理解することができるテーマですね.
 
あと,関数定義の内部で大域変数を扱う方法について加筆.といいますか,基礎事項の解説し忘れですね.
 
--------------
【補足】(2017/08/22)
 テキスト本体に申し訳ない誤植を発見.修正しました.
Kivyの解説の「ウィンドウサイズを固定(リサイズを禁止)する設定」のところでタイプミスしていました…
 
--------------
【補足】(2017/08/19)
 学生から質問を受けました.
「withってどういう構文なんですか?」
という質問です.
 
Pythonらしい部分だと思いますので加筆しようと思いますが,分かりやすい解説をうまく書けるかどうか,ちょっと時間をかけて考えてみます.
 
--------------
【補足】(2017/08/14)
 テキスト本体にconcurrent.futuresモジュールの基本的な使用方法を加筆.
サンプルプログラムを掲載して,マルチスレッドとマルチプロセスの間で実行時間の違いを調べる方法を例示しました.
 
CPUやコアの数が多い計算機環境でそのメリットが分かります.
 
--------------
【補足】(2017/08/13)
 subprocessモジュールに関してテキスト本体に加筆.外部プロセスの終了に同期する方法(waitメッソド)の説明を追加.
 
--------------
【補足】(2017/08/12)
 テキスト本体に若干の加筆.コマンド引数の取得方法の説明が抜けていました.
あと,pathlibも便利そうなので基本的な使用方法の解説を入れました.
 
他大学の先生から並列処理に関してご指摘いただきました.threadingモジュールではCPUコアの多いマシンの性能が活かせないとのこと.これは私の無知でした.
concurrent.futuresモジュールが良いとのことですので,色々と試行してからそのうちテキスト本体に加筆しようと思います.
 
--------------
【補足】(2017/08/11)
 Kivyに関してテキスト本体に加筆.一度登録したウィジェットを後から削除する方法の説明を追加.
 
アプリ作りについて具体的に試行錯誤する学生が出はじめました.
凝ったGUIの構築方法を模索するにつれ,今後Kivyの加筆が続く予感がします.
 
--------------
【補足】(2017/08/09)
 Kivyに関してテキスト本体に加筆.(スクロールビュー/ScrollViewの使用方法)
「サイズの大きなウィジェットをスクロール表示したい」という学生からの相談を受けて加筆しました.確かに重要な機能です.
 
--------------
【補足】(2017/08/05)
 テキスト本体に,例外処理に関する加筆.
 
私の主観かもしれませんが,Pythonを学ぶと「自分にもアプリが作れる」という意識を持つ学生が増えるような気がしています.
 
 一斉の授業ではJavaを使ってプログラミング系の教育をしていますが,ゼミでPythonやった場合の方が手応えがあるような感じがあります.
(現実的な教育成果が見られるのはまだ先ですが…)
 
--------------
【補足】(2017/08/02)
 モジュールブックのSymPyの解説に加筆.
 テキスト本体の例外処理の解説部分に若干の加筆.あと体裁修正と索引の追加.
 
--------------
【補足】(2017/07/31)
 添字の使い方に関する加筆.まだまだ基礎事項の加筆が止まりませんね.
 
--------------
【補足】(2017/07/30)
 近い将来ビッグデータを取り扱うことに備えて,ファイルのランダムアクセスの方法について加筆しました.といってもファイルのシークの方法程度です.
テキスト本体
 
--------------
【補足】(2017/07/29)
 家のPCでもPythonやりたいという学生が出てきました.大変良いことです.それでインストール方法に関する相談を受けるようになってきました.
ただ,Kivy に関する最新情報は本家の英語のサイトでないと見れません…
それで,テキスト本体に,Pythonのインストール方法とPIPコマンドの使い方,それにKivyのインストール方法を加筆しました.
テキスト本体
 
 http://www.lfd.uci.edu/~gohlke/pythonlibs/ に,コンパイル済みのwheelバッケージ(Windows用)がありますね.PIPでネットからの直接インストールが失敗する場合などに重宝します.「非公式」とありますので自己責任で…
 
 @dario_okazakiさんによる「Kivyドキュメントサイトの日本語翻訳」が一応出来上がったとのことです.
Kivyドキュメントサイト
大変ありがたいです.学生にも薦めます.
 
--------------
【補足-2】(2017/07/25)
 テキスト中の恥ずかしい間違いを見つけた学生は,鬼の首を取ったように喜びますね.
 
今のところクレーマーに噛みつかれたりしてはいませんが,ほころびへの対応をぼちぼちと…
 
あと,学生からではなく他大学の先生からのリクエストで「pandasの使い方まとめて欲しい」というのがあります.
 
成績の処理が終わって,夏休みに入ったらpandas触ってみようかと思います.(執筆はいつになるかわかりませんので念のため)
 
--------------
【補足】(2017/07/25)
 モジュールブックに pygame の導入的解説を入れました.
モジュールブック
 
モジュールの名前からしますと「ゲーム開発ライブラリ」という印象ですが,その実態は SDL をちょっとラップして使いやすくしたという感じですね.
特にゲーム開発に有利な機能が提供されているわけでもありません.(そのあたりはゲーム開発専用プラットフォームには全くかないません)
 
「とにかく簡単に使えて,軽快に動作するウィンドウ描画ライブラリが欲しい」という場合に適しています.「立派なGUIライブラリは不要!」という人にも良いと思います.
 
気になるのは,PygletやPySDLと今後どのような関係になるかです.
PygletやPySDL2がpygameに取って代わるような雰囲気もありますが,pygameの活気が衰えるかどうかもよくわかりません…
それぞれの住み分けになるかもしれませんが,今後各モジュールには注目すべきですね.
 
pygameの特徴は「とにかく簡単で高速」という点ですが,線の描画に関しては不満が残ると思います(笑) 使ってみるとわかります…
ベタ塗りの描画に関しては今のところ特に不満はありません.
 
Kivyは私も大好きでして今後注目なんですが,実験的な描画をPythonで迅速にやるにはpygameが圧倒的に有利だと思います.もちろんゲーム開発にも向いていると思います.(念のため)

Kivyは「ちゃんとしたアプリ」を作る場合にお薦めしています.
 
--------------
【補足】(2017/07/23)
 ウィンドウ描画とキーボード&マウスのハンドリングを高速に実行する必要が出てきたため,Pygameの使用方法についてまとめはじめました.
 
近々,モジュールブックに加筆しようと思います.
 
--------------
【補足】(2017/07/17)
 テキスト本体に加筆.辞書型オブジェクトの解説部分に,辞書にキーが存在するかどうかを検査する方法を追記しました.あと,データ型の変換についても追記.
意外なくらい初歩的な事柄の解説が抜けていると実感.やっぱり実際にテキストを使い始めるとほころびが次々と見つかりますね.
テキスト本体
 
--------------
【補足】(2017/07/16)
 モジュールブックにhashlibの導入解説を入れました.
モジュールブック
(暗号学的ハッシュ生成モジュール)
 パスワード文字列の秘匿化や,文書のデジタル署名作成に必要です.
 
--------------
【補足】(2017/07/15)
 テキスト本体の「forを使ったリストの生成」の部分の加筆,それに文字と文字コード相互の変換について加筆しました.
テキスト本体
 
学生に使わせはじめると,次々と加筆箇所が出てきます.
 
--------------
【補足】(2017/07/11)
 各テキストに「免責事項」加筆しました.
 
--------------
【補足】(2017/07/10)
 テキスト本体をほんの少し加筆しました.(サブプロセスの部分)
あと,文字列の連結方法の解説を追加しました.(重要な方法なのに解説を逃していました)
テキスト本体
 
--------------
【補足】(2017/07/08)
 テキスト本体の索引がお粗末だったので少しテコ入れしました.
テキスト本体
 
--------------
【補足】(2017/07/02)
 「pandasモジュールの解説はしないのか?」と質問(リクエスト?)をいただきました.
 
 ちょっと待ってくださいね.私も体が1つしかないもので… ただ,気にはしていましたので夏休みくらいには着手するかもしれません.実際に私のゼミ活動でも必要になるでしょうから…(いつになるか確約なしですが)
 
pandas は統計解析に便利そうですね.
 
--------------
【補足】(2017/06/27)
 モジュールブックに numpy, matplotlib の記述をはじめました.
モジュールブック
 
これからはゼミの活動に伴って,モジュールブックの加筆が増えそうです.
 
--------------
【補足】(2017/06/25)
 subprocess モジュールを使用して外部のプログラムを起動する方法について加筆しました.
テキスト本体
複数の外部プログラムを起動して,それらと非同期にパイプI/Oする方法についても解説しています.
 
asyncio モジュールに関しては「初心者」「入門」の域を超えそうなので,このテキストとは別の形で解説コンテンツにしようと考えています.(若干方針変更)
 
あとは,numpy, matplotlib モジュールの入門解説をモジュールブックに載せると,しばらくゼミの教材として使えそうな感じです.
 
あと,乱数生成の方法を加筆しました.(ゲーム作成には欠かせません)
 
--------------
【補足】(2017/06/18)
 Pythonで高速に数値演算するには numpy が定番ですね.ただ研究課題のあらゆる局面で numpy が万能というわけでもなく,任意に立てた微分方程式の数値解を得るにはやっぱり個別にシミュレーションプログラム書くことになります.
 
 numpy に関しては,その内モジュールブックに入門解説を記述しようと思いますが,うちのゼミのテーマに早く対応しないといけないので,しばらくはC言語でシミュレーションコード書くことにします.
 
ということで,Cで書いたプログラム(実行可能ファイル)をPythonから呼び出して,スピードを要する部分だけCに投げるという方策を取ります.
といいますか,多くのモジュールがそんな風に外部プログラム呼び出しているようですね.
 
というわけで,subprocess, asyncio モジュールの使い方を早急にまとめてテキスト本体に組み込むつもりです.
 
--------------
【補足】(2017/06/10)
 KivyのKV言語,初心者向けに情報整理しないといけないですね.
学生の学び方と,相談の仕方を見ていて思いました.
 
次のテーマですね.ちょっと時間いただいて,またテキスト修正・追加します…
 
--------------
【補足-2】(2017/06/08)
 Kivyのテキスト入力がWindows/Macの日本語入力メソッドに対応していないと学生から「落胆の声」が出ました.でも,まだこれからです.
 
入力中の表示が崩れたりしますが,一応はなんとか日本語入力できますね…
Kivyはまさに発展途上.「最も将来性が高くて,これから注目のUIですよ!」と学生を説得しています.個人的な期待も込めていますが,しばらくKivyと付き合って行きます.

その内,アップデートで大幅に改善されることは間違いないと思います.
 
--------------
【補足】(2017/06/08)
 Kivyドキュメントサイトの日本語翻訳が進んでいるようです.
Kivyドキュメントサイト
 
ありがたいことです.
詳細なリファレンスが必要なときに役立ちます.
 
--------------
【補足】(2017/06/06)
 モジュールブックにSymPyの導入解説を入れました.
モジュールブック
(数式処理モジュール)
MathematicaやMaximaみたいなことが可能になります.
 
「何でSymPy?」と思われるかもしれませんが,うちのゼミのテーマで「使いやすい数式処理システムのユーザインターフェースの提案」みたいなことをやってまして,そういう事情です.
 
SymPyはすごいパッケージでして,グラフィカルな機能を除けば商用システムと張り合うレベルですね(おそらく)
マニュアルもPDFで1,700ページ以上ありますし…
 
数式電卓として使うにはフリーのMaximaか,お金がある人はMathematicaが良いと思います.手軽に3次元プロットまでできますし.(無理してSymPyを素のまま数式電卓にするのは,私個人としてはあまりおすすめではありません.面倒くさいと思いますよ…)
 
SymPyは数式処理機能を組み込んだアプリ(教育系ソフトとか,思考サポートアプリとか)を開発する場合に威力を発揮すると思います.
 
--------------
【補足】(2017/06/03)
 Kivyについて:ActionBar(Kivy流のメニュー), ScreenManager, Carousel, TabbedPanel の基本的な使い方の解説を追加しました.(学生からの要望に応えました)
 
あと,Kivyで時間イベント(タイマー)のハンドリングをするのに必要なClockモジュールについても基礎解説を追加しました.
GUIアプリで,タイミングで起動する処理の繰り返しに for や while を使おうとする学生がいました.そうではなくて,タイマーを仕掛けるのです.
 
これで,一通りアプリ作りの指導ができるかと…
 
そろそろ,ほころびが気になりますが,時間をかけてつぶしていきます.
テキスト本体
まずいところありましたら,ご連絡いただけますと助かります.すぐに修正・アップロードさせていただきます. 
--------------
【補足-2】(2017/06/03)
 Kivyでアプリ作る際,KV言語を使うと,ちょっと初心者にはデバッグがしんどい感じですね…
 
Pythonプログラムで間違いやるとエラーメッセージが分かりやすいですが,KVの中で起こした間違いの検出がなかなかやりにくいですね…
要するに,「KV言語の何行目に○○○なエラーがある」というメッセージが出ないわけです.
 
熟達者にとっては開発効率の面でKV言語はありがたいでしょうが,初心者にとってKV言語は勉強の能率を落としてしまう可能性が大きいですね…
 
Kivyは慣れるまでは,普通にPythonでAPI書き並べた方が良いと思いますが,みなさんはどのように思われますでしょうか…
 
--------------
【補足】(2017/05/30)
 Kivyのフレームバッファ(FBO)の扱いについてご相談いただきましたので,解説を追加しました.
 普通のCanvas描画ではピクセル値を取り出すのが困難なようです.それでFBOを使用することになるわけです.
テキスト本体
 
--------------
【補足】(2017/05/29)
 モジュールブックにPillowの導入解説を入れました.
モジュールブック
(画像処理モジュール)
Photoshpみたいなことが可能になります.
 
--------------
【補足】(2017/05/24)
 公開日は7月にしていますが,早速「サウンドの使い方を教えてほしい」との声が来ていまして,内容追加しました.(wave, PyAudio)
その他にも学生からの相談を受けて,若干の追加や修正もしています.
 
「モジュールブック」作りはじめました.OpenCVモジュールの入門みたいな部分だけ書きました.(画像認識モジュール)
モジュールブック
 
モジュールに関しては公開されているものの種類が多すぎるので,私のゼミで使用方法を発掘したものを中心に書いてゆくことになると思います.