勉強会の記録¶
私が主催・参加している/していた, 勉強会の記録・資料をまとめています.
勉強会¶
定期的に開催していた/している, 主にオンラインの勉強会です.
現在¶
- 物理数学の個人指導: 毎週月曜 20:00-21:30
- ベイズ統計・機械学習勉強会: 毎週水曜 20:00-21:00
過去¶
- アインシュタインの原論文を多言語で読もうの会: 毎週金曜 20:00-21:00
- 数学・科学の英語記事を読もうの会: 毎週金曜 21:00-22:00
- 高校生・大人向け中高数学学習会
- 成人女性向け数学カフェ: 月一, 東京のリアルカフェで開催, 2014年頃. 小数の計算など算数の基本から数学研究レベルの話まで参加者が思い思いの内容に取り組む.
- IT基礎知識・プログラミング・数学勉強会, 2020/4-2021/4 毎週日曜13:00-15:00
- 理論物理学者に市民が数学を教える会: 2020/9/28-2021/7/12: 本格的な個人指導に移行
- ENERGEIA 算数とプログラミングを勉強する会
ベイズ統計・機械学習オンライン勉強会¶
2020-12-23 統計学の基礎¶
メモ¶
- 勉強会動画: 2020-12-23統計学オンライン勉強会(YouTubeで限定公開)
- GitHubのリポジトリ: studygroup/statistics
- サイトへのリンク(同内容)
注意¶
- 録画はじめた?
忘れる前に説明¶
- 今日: 「統計学の基礎」と称して基礎の部分と用語を整理する
- 今後: あとで説明する「純粋統計学」の部分を議論する
- 特にプログラムによるいろいろな検証に興味がある
統計学の基礎¶
コメントまとめ+TODO¶
- 【「確率で記述できるのか」問題】のところはもっと議論 (説明) が必要
- 何を意図しているか具体例もつける
- 議論している動画を見直して質問+応答の形で説明を追加する
- 【理論統計学】の定義
- 【純粋統計学】との区別はいいとして【応用統計学】との区別がそれほど明らかではない
- よい分類・よい言葉は引き続き考える
はじめに¶
ここでは統計学の細々とした話の前に統計学の設定に関してまとめます. 私の観測範囲ではあまり見かけないものの, 統計学をきちんと理解し応用する上で大事だと思ったことを書いています.
基本文献¶
次の文献を基本に据えています.
- 赤池弘次, エントロピーとモデルの尤度 \cite{HirotsuguAkaike1}
- 赤池弘次, 統計的推論のパラダイムの変遷について \cite{HirotsuguAkaike2}
- 渡辺澄夫, 統計学入門 「主義」 を心配するみなさまに
- 渡辺澄夫『ベイズ統計の理論と方法』 \cite{SumioWatanabe3}.
まずは「渡辺澄夫, 統計学入門 「主義」 を心配するみなさまに」を読むといいでしょう. 短かさもあるので次に赤池の 2 論文を読んでみてください. 最後の教科書はそれほど簡単ではありません. この講座はこの本を読みこなすための私の基礎体力作りも兼ねて内容を整備しています.
上記文献に書いていないことからはじめる¶
私がこの講座を作ろうと思ったきっかけの 1 つでもあります. 私にとっての統計学の出発点で, それは統計学の前提と確率論との関係です. 実質的に確率論・統計学という言葉にはいくつかの使い分けがあり, それがおざなりなせいで余計な混乱を生んでいるように思います. これを私の視点で整理することからはじめます. まずは確率論と統計学の整理をしましょう.
確率論と統計学を無理やり分類する¶
期待値・平均・分散・エントロピーなど確率論と統計学に共通する概念があり, 少なくとも統計学では確率論の諸概念を使うため厳密にわけても大した意味はありません. しかし尤度のように確率論ではあまり出てこない一方で統計学で基本的な概念もありますし, 言葉を用意しておくと便利なように思います. この講座では次のような大まかな分類をした上で呼び方を決めます.
- 確率論: 数学の 1 分野の確率論を指す. 現代的な公理的確率論と言ってもいい.
- 純粋統計学: 尤度の数学的性質のように, 統計学の中で純粋に数学の問題として決着がつく・つけられる・つけるべきテーマを扱う分野を指す. 確率論と重なる部分もある.
- 極限の議論は数学的な山場の 1 つ
- プログラムを駆使した有限部分の議論がもう 1 つの山場
- TODO 理論統計学ときちんと区別できるような特徴づけを探し, 対応する議論・説明をつけていく
- 理論統計学: 応用に使うことを意識した統計学の理論研究を指す. 上述の赤池論文のような内容をイメージしている. 応用統計学に関わる理論といってもいいかもしれない.
- TODO 必要に応じて細分する
- 応用統計学: 実データの分析を指す. 「統計が使えるようになりたい」というときの統計.
この中で確率論と純粋統計学は純粋に数学なので「数学」という以上の説明・意味はありません. 純粋統計学は数理統計学と呼ぶ方がいいかもしれませんが, これは定義・守備範囲のはっきりしない既存の「数理統計学」とまぎらわしいので別の言葉をあてました. 応用統計学もそれほど守備範囲のイメージに問題はないでしょう. 問題は理論統計学です.
理論統計学は応用統計学に関わる議論と書いた以上, 応用統計学と重なる部分があります. 理論統計学でイメージしたのは理論物理です. 理論物理ではメインタスクとして, 例えば未知の現象を探るための理論を作ることや, 既存の実験事実を説明するための理論整備があります. 特に前者は実際の実験データを離れて理論物理学者同士が物理の理論を検討します. 「数学」ではなく統計学の議論をするという意味で, 純粋統計学とわけたかったのがここでの分類の意図です. そして「哲学」を含めてよく議論が紛糾しているのがこの理論統計学であろう, という気分を込めています.
確率論を大まかに¶
確率論は完全に数学です. 適当に確率と呼ばれる概念を設定したうえで, それが「正しい前提」で議論を進めます.
例えば「サイコロを振ったとき, 各目の出る確率は等しいとする」と仮定して批判的に吟味せずに進めます. 確率とは何か, といった問題も一切気にしません.
統計学を大まかに¶
統計学についてはいろいろな混乱があるようです. それを見ている限り, まずは次のような分類に注意するといいように思います.
- 応用的な統計学: 実データの分析
- 記述統計
- 推測統計
- 理論的な統計学
- 思考実験を含む統計学の「理論」の議論, 理論統計学
- 数学としての統計学, 純粋統計学
あくまでここでの分類で一般的な分類ではありません.
まず大雑把な話からはじめます. 前者の応用面が「本来の統計学」だろうと思います. 英語の statistics は国 state の状態を考えるところから来ていて, 特に記述統計が応用統計の原点でしょう. 推測統計, そして理論研究のモチベーションもあくまでここから来るはずです. 極端に言えば記述統計は全数調査がもとにあり, 統計学の適用対象の広がりに合わせて記述統計だけでは議論しきれない部分が出てきます. その部分を埋める適切な推論法が必要で, それが推測統計の理論と実践にあたります. 純粋に数学的な理論とそれを統計学としてどう解釈するかが重要で, この解釈に関わる理論整備が先の理論統計学の仕事の 1 つです.
統計学の暗黙の前提¶
図も入っていて明確なので渡辺さんの次のスライドを参考にしましょう.
このP.13やP.16を問題にします. 特にP.16では具体的に「統計数理とモデリング」というタイトルがついていて, 「統計学」は数理モデリングの 1 分野であるとされています. 特に次の図式に着目しましょう. \begin{align} \begin{tikzpicture}[auto] \node (a) at (0, 1.2) {未知の分布}; \node (x) at (2.5, 1.2) {データ}; \node (b) at (0, 0) {推測された分布}; \node (y) at (2.5, 0) {統計的諸量}; \draw[->] (a) to (x); \draw[->] (x) to node{モデルと事前分布} (y); \draw[<->] (a) to node[swap] {誤差の推定} (b); \draw[<-] (b) to (y); \end{tikzpicture} \end{align}
「統計学」はこの未知の分布をどう推測するかが課題とされています. そして次のような記述があります.
- P.14: データを発生している真の分布は不明である
- P.21: 正しい主義は存在しない
- P.21: 正しい方法も存在しない
- P.21: 好きな方法を使ってよいが結果は常に間違っている
- P.21: どのくらい間違っているかを数学的に知ることができる
私がここで問題にしたいのはそもそも「統計学」は数理モデリングであること, そして未知の分布の仮定です. つまり「統計学」はあくまで\coloredtextbf{真の分布があると仮定}した上で, その真の分布を推測する理論なのです. そもそも真の分布があるかどうか, \coloredtextbf{調査対象を確率分布で記述するのが正しいか・適切かどうか}を問題にしていません. 確率論が確率とは何かを問わない数学であるように, 「統計学」は問題を確率で記述できることを疑わない数学の側面があるのです.
「確率で記述できるのか」問題¶
例えば天気予報を考えてみましょう.
- 「明日の東京での降水確率は80\%です.」
自然現象を考える上では物理が基本なので物理から考えてみます. 降水確率の正確な定義はともかく, 物理としては明日の東京の天気は物理法則から完全に決まっているとみなすべき現象で, 確率的に決まる現象ではありません. 一方で現実的な問題として物理法則, 特に数学としての微分方程式の初期条件を厳密に・正確に特定しきれない問題があり, その不確定さを補うために確率論を援用しています. ここで確率論を援用していいかどうかは完全に非自明です. 天気予報の精度がいいか悪いかという以前の話です.
先程紹介した基礎文献によれば「統計学」はあくまで数理モデリングです. 「統計学」による推測結果が正しいかどうかという以前に, 「統計学」または確率論を使った記述が適切かどうかという問題があります. 自明な人には自明なのでしょう. しかしあまりにも言及がなさすぎるように思います. 「哲学」的な統計学の正しさの議論の前に, 数理モデリングとしての統計学の立ち位置を明確にすべきであり, 私は先程の図式は次のように書くべきだと考えています. \begin{align} \begin{tikzpicture}[auto] \node (z) at (-4.0, 1.2) {解析対象}; \node (a) at (0, 1.2) {未知の分布}; \node (x) at (2.5, 1.2) {データ}; \node (b) at (0, 0) {推測された分布}; \node (y) at (2.5, 0) {統計的諸量}; \draw[->] (z) to node{存在を仮定} (a); \draw[->] (a) to (x); \draw[->] (x) to node{モデルと事前分布} (y); \draw[<->] (a) to node[swap] {誤差の推定} (b); \draw[<-] (b) to (y); \end{tikzpicture} \end{align}
アンケート¶
毎回アンケートを取っています. 質問や要望がある場合もこちらにどうぞ.
アンケートは匿名なので気楽にコメントしてください. 直接返事してほしいことがあれば, メールなど適当な手段で連絡してください. 返事は確約できませんが, 適当な手段でコンテンツに反映させていきます.
進捗・対応メモ¶
2020-12-23¶
2021-01-06¶
- 000_Introduction_to_Bayesian_Statistics.ipynb
- 次は「脱線: カノニカル分布の導出」から
- 黒木ノートが元: 勉強会では数学パートを PDF に転記してそれでやっている. 以下同様.
2021-01-13¶
- 000_Introduction_to_Bayesian_Statistics.ipynb
- 「例: 正規分布モデルの尤度函数」まで
- 次は「例:ガンマ分布モデルの尤度函数」とグラフ・アニメーションの確認から
2021-01-20¶
- 000_Introduction_to_Bayesian_Statistics.ipynb
- 「0.23.2.7.5以上のまとめ」まで
2021-01-27¶
- 000_Introduction_to_Bayesian_Statistics.ipynb
- 「0.23.2.8.3.5 自由エネルギーに関する結論」まで
- 次回は「0.23.2.8.3.6 自由エネルギーの漸近挙動の証明法」から
2021-02-03¶
- 000_Introduction_to_Bayesian_Statistics.ipynb
- 今回でIntroduction to Bayesian Statistics.ipynbの内容が終わり
- 次回は最後に計算例として出てきたノートブックを追いかけたい
2021-02-10¶
- 004_KL_information_and_descriptive_statistics.ipynb
- 「0.23.3.12 最尤法で予測精度が下がる数値実験の案内」 まで
- 次回はプログラムが追えればLASSOの計算のipynbでも眺める予定
2021-02-17¶
- 004_KL_information_and_descriptive_statistics.ipynb
- 「カルバック-ライブラ情報量と記述統計」
- 「0.23.3.12 最尤法で予測精度が下がる数値実験の案内」で引用されているLASSOの計算ノートブックのコードを一通り眺めた
- グラフ・アニメーションもいくつか見た
- 次回は同じく「カルバック-ライブラ情報量と記述統計」の「0.23.3.13 平均と分散の特徴づけ」の予定
2021-02-24¶
- お休み
2021-03-03¶
- 008_likelihood_functions_of_mixture_normal_distributions.ipynb
- 009_likelihood_functions_of_trinomial_distributions.ipynb
- 予定を変えて尤度関数のお絵かきとしてgithubの008・009
2021-03-10¶
- お休み
2021-03-17¶
- 「0.23.4.13 平均と分散の特徴づけ」から
- 「0.23.4.20 中央値の特徴づけ」まで
2021-03-24¶
- お休み
2021-03-31¶
- 録画を忘れずに
- 予定: 0.23.4.21「中央値と中央値との差の絶対値の平均とラプラス分布モデルによる推定」から
- 0.23.4.28 「ガンマ分布モデルの汎化誤差」
- 次回: 0.23.4.29 「ガンマ分布モデルの最尤推定」から
- メモ
- 0.23.4.22 ラプラス分布モデルによる最尤推定 正規分布モデル?
- log p(x|α, θ) 全体にマイナスがいる
- ディガンマをお絵描きする
2021-04-07¶
- お休み
2021-04-14¶
- 録画を忘れずに
- 0.23.4.29 「ガンマ分布モデルの最尤推定」から
- 0.23.6.7「両側検定に対する注意」まで
- 次回予定: 「0.23.6.6 正規分布モデルによる母集団平均に関する両側検定の作成」の復習から
2021-04-21¶
- 予定: 「0.23.6.6 正規分布モデルによる母集団平均に関する両側検定の作成」の復習から
- 「0.23.7.5 例」まで
- 次回予定: 「0.23.7 最小二乗法の信頼区間と予測区間」の設定復習から
- 限定公開の動画タイトル『2021-04-21 ベイズ統計勉強会 黒木ノートの勉強その11 正規分布モデルとt分布による母平均の仮説検定と区間推定, 最小二乗法の信頼区間と予測区間』
2021-04-28¶
- 「0.23.7 最小二乗法の信頼区間と予測区間」終了
- ipynb置き場
- 限定公開の動画タイトル『2021-04-28 ベイズ統計勉強会 黒木ノートの勉強その12 最小二乗法の信頼区間と予測区間』
- 次回予定: 「0.23.8 TODO 分割表でのピアソンの $\chi^2$ 統計量」
- GW中に富谷昭夫・著『これならわかる機械学習入門』の準備する?
2021-05-05¶
- GW でお休み
2021-05-12¶
- 都合によりお休み
2021-05-19¶
- 「0.23.8.7 周辺度数がすべて固定されている分割表の独立性を満たす確率分布の漸近挙動」まで
- ipynb置き場
- 限定公開の動画タイトル『2021-05-19 ベイズ統計勉強会 黒木ノートの勉強その13 分割表でのピアソンの $\chi^2$ 統計量 その 1』
- 次回予定: 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から
- MISC 株×データサイエンスについて
- 実データ分析事例として面白そう
- けっこうなボリュームの資料がある
- データは適当な定型データが得られるだろうから, 一度プログラムを整備しておけば, プログラムの使い回しで記述統計・機械学習がずっと回せる
- プログラムを書くのも計算するのもいいが, 実際に自分達でデータ分析をするのもとても大事でこの題材に良さそう.
2021-05-19¶
- 「0.23.8.7 周辺度数がすべて固定されている分割表の独立性を満たす確率分布の漸近挙動」まで
- ipynb置き場
- 限定公開の動画タイトル『2021-05-19 ベイズ統計勉強会 黒木ノートの勉強その13 分割表でのピアソンの $\chi^2$ 統計量 その 1』
- 次回予定: 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から
- MISC 株×データサイエンスについて
- 実データ分析事例として面白そう
- けっこうなボリュームの資料がある
- データは適当な定型データが得られるだろうから, 一度プログラムを整備しておけば, プログラムの使い回しで記述統計・機械学習がずっと回せる
- プログラムを書くのも計算するのもいいが, 実際に自分達でデータ分析をするのもとても大事でこの題材に良さそう.
2021-05-26¶
- 「0.23.8.8 ピアソンの $\chi^2$ 統計量と $G$ 統計量の定義」から「0.23.8.12 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$に制限がない場合」まで
- ipynb も確認
- ipynb置き場
- 限定公開の動画タイトル『2021-05-26 ベイズ統計勉強会 黒木ノートの勉強その14 分割表でのピアソンの $\chi^2$ 統計量 その 2』
- 次回予定: 「0.23.8.13 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$の総和$\sum_{i,j} a_{ij} = n$が一定の場合」
2021-06-02¶
- 「0.23.8.13 分割表での対数尤度比の計算: 分割表$A = \rbk{a_{ij}}$の総和$\sum_{i,j} a_{ij} = n$が一定の場合」から0.23.8の終わりまで
- ipynb置き場
- 限定公開の動画タイトル『2021-06-02 ベイズ統計勉強会 黒木ノートの勉強その15 分割表でのピアソンの $\chi^2$ 統計量 その 3』
- 次回予定: 「最尤法とカイ二乗検定の基礎」(ウィルクスの定理)
2021-06-09¶
- 「「最尤法とカイ二乗検定の基礎」(ウィルクスの定理)」から「0.23.13.10.1最尤法の基礎」まで
- 限定公開の動画タイトル『2021-06-09 ベイズ統計勉強会 黒木ノートの勉強その16 最尤法とカイ二乗検定の基礎 その 1』
- 次回予定
- 「0.23.13.10.2最大尤度と尤度の比」から
- 株×データサイエンス
2021-06-16¶
- 「「最尤法とカイ二乗検定の基礎」(ウィルクスの定理)」終了
- 成功する投資:トレーディングのサイエンスの「計量的・実証的トレーディングの実行」まで
- 限定公開の動画タイトル『2021-06-16 ベイズ統計勉強会 黒木ノートの勉強その17 最尤法とカイ二乗検定の基礎 その 2』
- 次回予定: 成功する投資:トレーディングのサイエンスの「計量的・実証的トレーディングの実行」から
2021-06-23¶
- 成功する投資:トレーディングのサイエンス終了.
- 株式分析チュートリアル | 日本取引所グループの 2.1.3 まで
- 限定公開の動画タイトル: 録画を忘れたのでなし.
- 次回予定: 株式分析チュートリアル | 日本取引所グループの 2.1.4 から
2021-06-30¶
- 株式分析チュートリアル | 日本取引所グループの 2.6 「データの前処理」 まで
- 限定公開の動画タイトル『2021-06-30 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第2回』
- 次回予定: 株式分析チュートリアル | 日本取引所グループの 2.7 から
2021-07-07¶
- 株式分析チュートリアル | 日本取引所グループの「2.7. 特徴量の生成」から
- 限定公開の動画タイトル『2021-07-07 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第3回』
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「2.11. 予測結果に対する分析の道筋」から
2021-07-14¶
- 株式分析チュートリアル | 日本取引所グループの「2.11. 予測結果に対する分析の道筋」から
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「3.4.2. 日経電子版見出し・メタデータ: nikkei_article」の途中, 特に「日経電子版見出し・メタデータの確認」あたりまで.
- 限定公開の動画タイトル『2021-07-14 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第4回』
- TODO: 適当なタイミングで, チュートリアル中で引用されている次の資料を読む
2021-07-21¶
- 株式分析チュートリアル | 日本取引所グループの「3.4.2. 日経電子版見出し・メタデータ: nikkei_article」から.
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「3.7. シンプルなポートフォリオ組成モデルの作成」から.
- 限定公開の動画タイトル『2021-07-21 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第5回』
- TODO: 適当なタイミングで, チュートリアル中で引用されている次の資料を読む
2021-07-28¶
- 株式分析チュートリアル | 日本取引所グループの「3.7. シンプルなポートフォリオ組成モデルの作成」から.
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「3.7.9 2.週毎の運用実績の統計量を算出」から.
- 限定公開の動画タイトル『2021-07-28 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第6回』
2021-08-04¶
- 株式分析チュートリアル | 日本取引所グループの「3.7.9 2.週毎の運用実績の統計量を算出」から.
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「4.4.6. predictの変更 (銘柄選択、出力を変更)」から.
- 限定公開の動画タイトル『2021-08-04 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第7回』
2021-08-11¶
- 株式分析チュートリアル | 日本取引所グループの「4.4.6. predictの変更 (銘柄選択、出力を変更)」から.
- 2021-08-25 予定: 株式分析チュートリアル | 日本取引所グループの「4.6. 適時開示情報を使用して特別損失銘柄を除外」から.
- 2021-08-18 予定: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 限定公開の動画タイトル『2021-08-11 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第8回』
- メモ: いい加減飽きてきたので株式分析チュートリアルと Julia を交代で進める.
2021-08-18¶
- 2021-08-18 予定: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 2021-08-18: GitHub, VMLS を一通り読み終わった.
- Wikipedia: ヴァンデルモンド行列
- Wikipedia: テプリッツ行列
- 2021-09-01 予定: ipynb 日本語訳版の Appendix から.
- 2021-08-25 予定: 株式分析チュートリアル | 日本取引所グループの「4.6. 適時開示情報を使用して特別損失銘柄を除外」から.
- 限定公開の動画タイトル『2021-08-18 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第1回』
- メモ: 今回も少し出てきたが, なかなか自分でやる気が出ず, 専門でもなければきちんと勉強しない, 一般的な「アルゴリズムとデータ構造」の勉強をするのはどうかという気分も出てきた. 『渡部有隆.Ozy.秋葉拓哉.P482.プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』あたりを考えている.
2021-08-25¶
- 2021-08-25: 株式分析チュートリアル | 日本取引所グループの「4.6. 適時開示情報を使用して特別損失銘柄を除外」から.
- 株式分析チュートリアル | 日本取引所グループの「5.6.4. neologdnを用いたテキストの正規化の挙動確認」まで
- 2021-09-08 予定: 株式分析チュートリアル | 日本取引所グループの「5.6.5. neologdnを用いたテキストの正規化」から
- 限定公開の動画タイトル『2021-08-25 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第9回』
- 2021-09-01 予定: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 2021-09-01 予定: ipynb 日本語訳版の Chapter0.ipynb から
- 限定公開の動画タイトル『2021-09-01 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第2回』
- 限定公開の動画タイトル『2021-08-25 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第9回』
2021-09-01¶
- 2021-09-01: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 2021-09-01: ipynb 日本語訳版の Chapter0.ipynb から Chapter1.ipynb In[50]まで
- 2021-09-15 予定: ipynb 日本語訳版の Chapter1.ipynb In[51]から
- 限定公開の動画タイトル『2021-09-01 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第2回』
- 2021-09-08 予定: 株式分析チュートリアル | 日本取引所グループ
- 2021-09-08 予定: 株式分析チュートリアル | 日本取引所グループの「5.6.5. neologdnを用いたテキストの正規化」から
2021-09-08¶
- 2021-09-08: 株式分析チュートリアル | 日本取引所グループ
- 2021-09-08: 「5.6.5. neologdnを用いたテキストの正規化」から「5.7.3. wordcloudによる可視化」まで
- 2021-09-22 予定: 株式分析チュートリアル | 日本取引所グループの「5.7.4. scatter textによる可視化」から
- 限定公開の動画タイトル『2021-09-08 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第10回』
- 2021-09-15: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 2021-09-15 予定: ipynb 日本語訳版の Chapter1.ipynb In[51]から
2021-09-15¶
- 都合により中止
2021-09-22¶
- 2021-09-15: スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- Chap3, RMS まで
- 今回は録画忘れたので録画なし.
- 2021-10-06 予定: ipynb 日本語訳版の Chapter3.ipynb チェビシェフの不等式から
- 2021-09-29 予定
- 株式分析チュートリアル | 日本取引所グループ
- 2021-09-29 予定: 株式分析チュートリアル | 日本取引所グループの「5.7.4. scatter textによる可視化」から
2021-09-29¶
- お休み
2021-10-06¶
- 2021-10-06
- 株式分析チュートリアル | 日本取引所グループ
- 5.8.4 まで終了
- 2021-10-20 予定: 株式分析チュートリアル | 日本取引所グループの「5.8.4. 本番提出用のクラスへ組み込み_6」から
- 限定公開の動画タイトル「2021-10-06 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 第11回」
- 2021-10-13
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- GitHub, VMLS
- 予定: ipynb 日本語訳版の Chapter3.ipynb チェビシェフの不等式から
2021-10-13¶
- 今回
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- 今回: Chap05.ipynb 「5.2 基底」まで
- 次回: Chap05.ipynb 「5.3 直交ベクトル」から
- GitHub, VMLS
- 2021-10-13 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第4回
- 次回
- 株式分析チュートリアル | 日本取引所グループ
- 5.8.4 まで終了
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「5.8.4. 本番提出用のクラスへ組み込み_6」から
2021-10-20¶
諸事情によりお休み.
2021-10-27¶
- 今回
- 株式分析チュートリアル | 日本取引所グループ
- 6.2.6 まで終了
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「6.2.7. LSTMによる特徴量合成モデル作成」から
- 録画を忘れたので動画なし
- 次回
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- 今回: Chap05.ipynb 「5.2 基底」まで
- 次回: Chap05.ipynb 「5.3 直交ベクトル」から
- GitHub, VMLS
- 2021-10-13 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第4回
2021-11-03¶
- 今回
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- 今回: Chap05.ipynb 「5.3 直交ベクトル」から「6.1 行列」まで
- 次回: Cha006.ipynb 「6.2 ゼロ行列と単位行列」から
- 録画は忘れたのでなし
- 次回
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「6.2.7. LSTMによる特徴量合成モデル作成」から
2021-11-10¶
- 今回
- 次回予定: 株式分析チュートリアル | 日本取引所グループの「6.2.7. LSTMによる特徴量合成モデル作成」から
- 最後まで
- 限定公開の動画タイトル「2021-11-10 ベイズ統計勉強会 株式分析チュートリアル | 日本取引所グループ 最終回」
- 次回
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- 次回: Chap06.ipynb 「6.2 ゼロ行列と単位行列」から
2021-11-10, 2021-11-17, 2021-11-24,¶
- お休み
2021-12-01¶
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- 2021-12-01 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第7回
- 今回: Chap06.ipynb 「6.2 ゼロ行列と単位行列」から, Chap06.ipynb終了まで
- 次回: Chap07.ipynbから
2021-12-08¶
- お休み
2021-12-15¶
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル: 2021-12-15 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第8回
- 今回: 「Chap07.ipynb」から「Chap08.ipynb終了」
- 次回: Chap09.ipynbから
2021-12-22¶
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル: 2021-12-22 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第9回
- 今回: 「Chap09.ipynb」から「Chap10.ipynb 10.3」まで
- 次回: Chap10.ipynb, 10.4 QR分解から
2022-01-12¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル「2022-01-12 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第10回 最後の20分だけ」
- 今回: 「Chap10.ipynb 10.3」から「Chap11.3」まで
- 次回: 「Chap11.ipynb, 11.3 バックスラッシュ記法」から
2022-01-19¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル(予定)「2022-01-19 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第11回」
- 今回: 「Chap11.3」から「Chap12.2 解 最小二乗解」まで
- 次回: 「Chap12.2 解 最小二乗解」から
2022-01-26¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル「2022-01-26 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第12回」
- 今回: 「Chap12.2 解 最小二乗解」から「Chap13.1まで」
- 次回: 「Chap13.2」から
2022-02-02¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特にipynb日本語訳をはじめから読む
- YouTube動画のタイトル「2022-02-2 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第13回」
- 今回: 「Chap13.2」から「Chap14」まで
- 次回: 「Chap15」から
2022-02-09¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル「2022-02-09 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第14回」
- 今回: 「Chap15」から
- 次回: 「Chap16.2」から, 特にipynb後半の関数の話から始める
2022-02-16¶
- お休み
2022-02-23¶
- (録画はじめた?)
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特に ipynb 日本語訳をはじめから読む
- YouTube動画のタイトル(予定)「2022-02-23 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第15回」
- 今回: 「Chap16.2」から, 特にipynb後半の関数の話から「Chap17」まで
- 次回: 「Chap18」から
- 気になるコンテンツメモ: 『マンガと学ぶデータビジュアライゼーション』
2022-03-02¶
- スタンフォード ベクトル・行列からはじめる最適化数学
- 特にipynb日本語訳をはじめから読む
- YouTube動画のタイトル(予定)「2022-03-02 ベイズ統計勉強会 スタンフォード ベクトル・行列からはじめる最適化数学 第16回」
- 今回: 「Chap18」から「Chap19」まで
- 次回: Juliaのソースコード読解
2022-03-09¶
- 都合によりお休み
2022-03-16¶
- 都合によりお休み
2022-03-23¶
- YouTube動画のタイトル(予定)「2022-03-23 ベイズ統計勉強会 JuliaのStatistics読解 第1回」
- 今回: Juliaのソースコード読解, StatsBase
- JuliaStats.orgの上の方から
- JuliaStatsのStatsBase.jlを読みはじめた.
- 実際のプログラムとしてのstc/StatsBase.jlを眺め, これのimport順に読む.
- common.jl終了
- weights.jl: Base.setindex!まで終わり.
- 次回: StatsBase.jl, weights.jl のvarcorrectionから
2022-03-30¶
- YouTube動画のタイトル「2022-03-30 ベイズ統計勉強会 JuliaのStatistics読解 第2回」
- 今回: Juliaのソースコード読解, StatsBase
- JuliaStats.orgの上の方から
- StatsBase.jl, weights.jl のvarcorrectionから
- StatsBase.jl, weights.jl のL.332, Base.getindexまで
- 次回: StatsBase.jl, weights.jlのL.334から
2022-04-06¶
- YouTube動画のタイトル(予定)「2022-04-06 ベイズ統計勉強会 JuliaのStatistics読解 第3回」
- 録画忘れたので動画なし.
- 今回: Juliaのソースコード読解, StatsBase
- JuliaStats.orgの上の方から
- StatsBase.jl, weights.jl のvarcorrectionから
- StatsBase.jl, weights.jl のquantile, L.769まで
- 次回:
- StatsBase.jl, weights.jl のquantile, L.771, quantileから
2022-04-13¶
- YouTube動画のタイトル(予定)「2022-04-13 ベイズ統計勉強会 JuliaのStatistics読解 第4回」
- 今回: Juliaのソースコード読解, StatsBase
- StatsBase.jl, weights.jl のquantile, L.771, quantileから
- StatsBase.jl, weights.jl終了, scalarstats.jlのmodeまで
- 次回:
- StatsBase.jl, scalarstats.jlのL81, modesから
2022-04-20¶
- 都合によりお休み
2022-04-27¶
- 動画: 撮影忘れ
- 今回: Juliaのソースコード読解, StatsBase
- StatsBase.jl, scalarstats.jlのL81, modesから
- 同ファイル, L625, genvarまで
- 次回: StatsBase.jl, scalarstats.jlのL627, totalvarから
2022-05-04¶
- GWでお休み
2022-05-11¶
- YouTube動画のタイトル(予定)「2022-05-11 ベイズ統計勉強会 JuliaのStatistics読解 第5回」
- 今回: StatsBase.jl, scalarstats.jlのL627, totalvarから robust.jlの最後まで
- 次回: StatsBase.jl, deviation.jlの最初から
2022-05-18¶
- YouTube動画のタイトル(予定)「2022-05-18 ベイズ統計勉強会 JuliaのStatistics読解 第6回」
- ちょっとアナウンス
- Why I no longer recommend Julia
@inbounds
の話が出てくる
- 今回: StatsBase.jl, deviation.jlの最初からcounts.jlのL.212, proportions()関数まで
- 次回: counts.jlのL.215, _normalize_countmap()関数から
2022-05-25¶
- YouTube動画のタイトル(予定)「2022-05-25 ベイズ統計勉強会 JuliaのStatistics読解 第7回」
- 今回: counts.jlのL.215, _normalize_countmap()関数からtoeplitzsolvers.jlまで
- 次回: rankcorr.jlから
2022-06-01¶
- 都合により休止
2022-06-08¶
- YouTube動画のタイトル(予定)「2022-06-08 ベイズ統計勉強会 JuliaのStatistics読解 第8回」
- 今回: rankcorr.jl対応
- 次回: signalcorr.jlから
2022-06-15¶
- YouTube動画のタイトル(予定)「2022-06-15 ベイズ統計勉強会 JuliaのStatistics読解 第9回」
- 今回: signalcorr.jl全体終了
- 次回: partialcor.jlから
- メモ
- 勉強会で見つけた問題を直してもらえた模様: issue
2022-06-22¶
- YouTube動画のタイトル(予定)「2022-06-22 ベイズ統計勉強会 JuliaのStatistics読解 第10回」
- 今回: partialcor.jlから, hist.jlのL115, abstract type AbstractHistgramまで
- 次回: hist.jlのL.118, Histgram <: AbstractHistgramの型のコメントから
2022-06-29¶
- YouTube動画のタイトル(予定)「2022-06-29 ベイズ統計勉強会 JuliaのStatistics読解 第11回」
- 今回: hist.jl, Histgram <: AbstractHistgramの型のコメントからL427 float関数まで
- 次回: hist.jl, L430 normalize!関数から
2022-07-06¶
- YouTube動画のタイトル(予定)「2022-07-06 ベイズ統計勉強会 JuliaのStatistics読解 第12回」
- 録画忘れたので動画なし
- 今回: hist.jl, L430 normalize!関数から
- 次回: hist.jl終了, pairwise.jl L.153の_pairwise関数まで
2022-07-13¶
- YouTube動画のタイトル(予定)「2022-07-13 ベイズ統計勉強会 JuliaのStatistics読解 第13回」
- 今回: pairwise.jl, L.189のpairwise!関数からreliability.jl, misc.jl, sampling.jlのL.117、samplepair関数まで
- 次回: L.122のknuths_sample!から
2022-07-20¶
- YouTube動画のタイトル(予定)「2022-07-20 ベイズ統計勉強会 JuliaのStatistics読解 第14回」
- 今回: sampling.jl, L.122のknuths_sample!からsampling.jl, L716のnaive_wsample_norep!まで
- 次回: sampling.jl, L.721のefraimidis_a_wsample_norep!から
2022-07-27¶
- YouTube動画のタイトル(予定)「2022-07-27 ベイズ統計勉強会 JuliaのStatistics読解 第15回」
- 今回: sampling.jl, L.721のefraimidis_a_wsample_norep!からsampling.jl終了, statmodels.jlのL.148 showまで
- 次回: statmodels.jlのL.150 showからか, SymPy
2022-08-03¶
- YouTube動画のタイトル(予定)「2022-08-03 ベイズ統計勉強会 JuliaのStatistics読解 第16回」
- 今回: statmodels.jlのL.150 showから StatsBase.jl終了
- 次回: 永井佑紀, 『1週間で学べる!Julia数値計算プログラミング』5日目 具体例2:統計力学――乱数を使いこなす
- 6日目 具体例3:固体物理学――自己無撞着計算と固有値問題もやる予定
2022-08-10¶
- YouTube動画のタイトル(予定)「2022-08-10 ベイズ統計勉強会 JuliaのStatistics読解 第17回」
- 録画忘れで動画なし
- 今回: StatsModels.jl, traits.jl, contrasts.jlのL.600, HypothesisCoding()まで
- 準備の時間取れず, 次回以降: 永井佑紀, 『1週間で学べる!Julia数値計算プログラミング』5日目 具体例2:統計力学――乱数を使いこなす
- 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きから
2022-08-17¶
- (録画はじめた?)
- YouTube動画のタイトル(予定)「2022-08-17 ベイズ統計勉強会 JuliaのStatistics読解 第18回」
- 今回: StatsModels.jl, contrasts.jlのL.594から終了まで, terms.jlのL.382まで
- 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(terms.jlのL.383)から
2022-08-24¶
- YouTube動画のタイトル(予定)「2022-08-24 ベイズ統計勉強会 JuliaのStatistics読解 第19回」
- 今回: StatsModels.jlの続き(terms.jlのL.383)からschema.jlのL.129まで
- 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(schema.jlのL.131)から
2022-08-31¶
- YouTube動画のタイトル(予定)(録画を忘れた)
- 今回: StatsModels.jlの続き(schema.jlのL.131)からtemporal_terms.jlまで
- 次回: 準備が終われば永井本, そうでなければ
formula.jl
から
2022-09-07¶
- YouTube動画のタイトル(予定)「2022-09-07 ベイズ統計勉強会 JuliaのStatistics読解 第20回」
- 今回: 準備が終われば永井本, 終わらなければStatsModels.jlの続き(formula.jl)からmodelframe.jlのL.70まで
- 次回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
2022-09-14¶
- YouTube動画のタイトル(予定)「2022-09-14 ベイズ統計勉強会 JuliaのStatistics読解 第20回」
- 録画忘れ
- 今回: 準備が終われば永井本, 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
- 5.1の理論的背景, 5.2のイジングの計算本体の理論の話, 特に5.2.2まで
- 次回: 永井本5.1のプログラムとお絵描き, 5.2.2の理論の続き
2022-09-21¶
- YouTube動画のタイトル(予定)「2022-09-21 ベイズ統計勉強会 JuliaのStatistics読解 第21回」
- 今回: 準備が終われば永井本5.1のプログラムとお絵描き, 5.2.2の理論の続き
- GitHub
- 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
- 写経した5.1の結果を眺めつつコード確認, 5.2の物理の解説追加, P.168のcalc_Si関数あたりまでをフォロー
- 次回: 永井本の残り, 次回は
2022-09-28¶
- YouTube動画のタイトル(予定)「2022-09-28 ベイズ統計勉強会 JuliaのStatistics読解 第22回」
- 今回: 永井本, calc_ΔEからと、MCMC解説・復習
- GitHub
- 終わらなければStatsModels.jlの続きmodelframe.jlのL.71から
- モンテカルロの理論から一通りの計算プログラムの解説まで
- 次回: 永井本の残り, 高速化の解説から, 終わったらJuliaの統計に戻る
- SymPyをちょっとやってみたい
2022-10-05¶
- (録画はじめた?)
- YouTube動画のタイトル(予定)「2022-10-05 ベイズ統計勉強会 JuliaのStatistics読解, sympy 第23回」
- 今回: 永井本, 残り, 高速化の解説から, 永井本の残り, sympy
- GitHub
- sympy/abc.pyのあと, algebras/quartenion.pyをfrom_axis_angleまで
- 次回: sympy, from_rotation_matrixから
2022-10-12¶
- YouTube動画のタイトル(予定)「2022-10-12 ベイズ統計勉強会 sympy 第2回」
- 今回: sympy, quarternion.pyの
from_rotation_matrix
から - 次回: sympy, quarternion.pyの
arc_coplanar
まで
2022-10-19¶
- (録画はじめた?)
- YouTube動画のタイトル(予定)「2022-10-19 ベイズ統計勉強会 sympy 第3回」
- 今回: sympy,
quarternion.py
のvector_coplanar
からcore/add.py
のflatten()
まで - 次回: sympy,
core/add.py
のclass_key()
から
2022-10-26¶
- 都合によりお休み
2022-11-02¶
- 録画忘れ
- 今回: sympy,
core/add.py
のclass_key()
から_eval_is_meromorphic()
まで - 次回: sympy,
core/add.py
の_eval_is_algebraic_expr()
から
2022-11-09¶
- 録画忘れ
- 今回: sympy,
core/add.py
の_eval_is_algebraic_expr()
から - 次回: sympy,
core/add.py
のas_real_imag()
まで
2022-11-16¶
- 都合により休み
2022-11-23¶
- 祝日でお休み
2022-11-30¶
- YouTube動画のタイトル(予定)「2022-11-30 ベイズ統計勉強会 sympy 第6回」
- 今回: sympy,
core/add.py
の_eval_as_leading_term
からcore/add.py
最後まで - 次回: F#/C#の何か, 探索中
2022-12-07¶
- 都合によりお休み
2022-12-14¶
- YouTube動画のタイトル(予定)「2022-12-14 ベイズ統計勉強会」
- 今回: DiffSharp,
Utils.fs
のflatArrayAndShape6D
まで - 次回: DiffSharp,
Utils.fs
のflatArrayAndShape6D
から
2022-12-21¶
- 都合により休み
2022-12-28¶
- (録画はじめた?)
- YouTube動画のタイトル(予定)「2022-12-28 ベイズ統計勉強会 DiffSharp 第2回」
- 今回: DiffSharp,
Utils.fs
のflatArrayAndShape6D
からUtils.fs
のL.457,indentNewLines
まで - 次回: DiffSharp,
Utils.fs
のL.458,stringPad
から
2023-01-04¶
- 年始でお休み
2023-01-11¶
- 今回: DiffSharp,
Utils.fs
のL.458,stringPad
から最後,Extension.fs
のL.159, Array6Dまで - 次回: DiffSharp.Core,
Extension.fs
のL.162のスライシングに関するコメントから
2023-01-18¶
- 今回:
DiffSharp.Core
,Extension.fs
のL.162のスライシングに関するコメントからBackend.fs
まで - 次回:
Device.fs
から
2023-01-25¶
- 今回:
DiffSharp.Core
,Device.fs
からShape.fs
のL.438まで - 次回:
Shape.fs
のL.439以降,canExpand
から
2023-02-01¶
- お休み
2023-02-08¶
- 今回:
DiffSharp.Core
,Shape.fs
のL.439以降,canExpand
からRawTensor.fs
のL.536,SolveTT
まで - 次回:
DiffSharp.Core
,RawTensor.fs
のL.539,SqueezeT
まで
2023-02-08¶
2023-02-15¶
- 今回:
DiffSharp.Core
,Diffsharp.fs
のメインの部分 - 次回:
SymPy
2023-02-22¶
- SymPy documetation
- 今回:
SymPy
,matrices/common.py
のはじめから, L.817,_eval_jordan_block
まで. - 次回:
SymPy
,matrices/common.py
のL.818,_eval_ones()
から
2023-03-01¶
- SymPy documetation
- 今回:
SymPy
,matrices/common.py
のL.818,_eval_ones()
からL.1920のvalues()
まで - 次回:
SymPy
,matrices/common.py
のL.1925,class MatrixOperations(MatrixRequired)
から
2023-03-08¶
- SymPy documetation
- 今回:
SymPy
,matrices/common.py
のL.1925,class MatrixOperations(MatrixRequired)
からL.2945,class MatriCommon
まで - 次回:
SymPy
,matrices/common.py
のL.2948,class _MinimalMatrix
から
2023-03-15¶
- お休み
2023-03-22¶
- SymPy documetation
- 今回:
SymPy
,matrices/common.py
のL.2948,class _MinimalMatrix
からmatrices/decomposition.py
のL.400,_cholesky_sparse()
まで - 次回:
matrices/decomposition.py
のL.403,_LDLdecomposition()
から
2023-03-29¶
- SymPy documetation
- 今回:
matrices/decomposition.py
のL.403,_LDLdecomposition()
からmatrices/decomposition.py
のL.1127,_singular_value_decomposition()
まで - 次回:
matrices/decomposition.py
のL.1127,_singular_value_decomposition()
から
2023-04-05¶
- 今回:
matrices/decomposition.py
のL.1127,_singular_value_decomposition()
からmatrices/decomposition.py
は終了,dense.py
のL.698
まで. - 次回:
matrices/dense.py
のL.699
,casoratian()
から
2023-04-12¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/dense.py
のL.699
,casoratian()
からmatrices/determinant.py
のL.118
,_find_reasonable_pivot()
まで - 次回:
matrices/determinant.py
のL.121
,_find_reasonable_pivot_naive()
から
2023-04-19¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/determinant.py
のL.121
,_find_reasonable_pivot_naive()
から_det
まで - 次回:
matrices/determinant.py
のL.676
,_det_bareiss
から
2023-04-26¶
- お休み
2023-05-03¶
- お休み
2023-05-10¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/determinant.py
のL.676
,_det_bareiss
からmatrices/eigen.py
のL.437
,_eigenvects
まで - 次回:
matrices/eigen.py
のL.439
,_is_diagonalizable_with_eigen
から
2023-05-17¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/eigen.py
のL.439
,_is_diagonalizable_with_eigen
からmatrices/eigen.py
のL.1025
, ドキュメント文字列設定まで - 次回:
matrices/eigen.py
のL.1027
,_jordan_form()
から
2023-05-17¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/eigen.py
のL.439
,_is_diagonalizable_with_eigen
からmatrices/eigen.py
のL.1025
, ドキュメント文字列設定まで - 次回:
matrices/eigen.py
のL.1027
,_jordan_form()
から
2023-05-24¶
- SymPy documetation
- Online LaTeX editor
- 今回:
matrices/eigen.py
のl.1027
,_jordan_form()
からeigen.py
の最後まで - 次回: optuna読み.
sympy
はmatrices/graph.py
の先頭から
2023-05-31¶
- 今回: optuna
- 次回:
sympy
,matrices/graph.py
の先頭から
今後の予定: Juliaを勉強する¶
- 気になるコンテンツメモ: 『マンガと学ぶデータビジュアライゼーション』
- Juliaでアルゴリズム
- JuliaのStatisticsなどのライブラリのコードを読む
- Julia学習: Kwong, HANDSON DESIGN PATTERNS AND BEST PRACTICES WITH JULIA
- 高いがちょっとほしい・読みたい: Nazarathy, Klok, Statistics with Julia-Fundamentals for Data Science, Machine Learning and Artificial Intelligence
- Juliaで作って学ぶベイズ統計学 サポートページ
- イジングやりたい: 富谷昭夫・著『これならわかる機械学習入門』
SPINS CRE@TION勉強会¶
2023-05-30 tue¶
AI系¶
- 実際に何かで遊んでみよう
Web・アプリ¶
- ノンデザイナーズ・デザインブックの25周年記念のPDFを読もう
- P.20まで
- 次回はP.21から
- CSSの進化が早い! スタイルクエリ(@container style())の基礎知識と便利な使い方を解説
- 富士通Japanの公文書発行システムのマイクロ秒衝突問題に対する徳弘さんのYouTube
- YouTubeへの直リンク: 大抵の解説記事に存在するファイル名重複チェック時のTOCTOU競合脆弱性
- UIデザインのための10のヒューリスティクスについて改めて考えてみた
- 個人でSNSサービスをリリースしたけど、開発から集客までのリアリティを包み隠さずお話しします
- Hot CSS Tools For Everyone
- UIデザインに必須の16の論理ルール! デザインは細部のちょっとした作り込みが使いやすさを決める
- まじか!VS Codeでできることがまた増えた、エディタで画像から背景を1クリックで切り抜けるようになったぞ
- ダメなUIを作るコツ
- 2022年に起きたフロントエンドの変化
- ウェブ制作にも便利! React & Vueで始めるヘッドレスUI
- Linuxコンテナの「次」としてのWebAssembly、の解説
- imgタグで行うウェブサイトの最適化
- Lighthouseで最適化していると出てくる
- イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理
- URL
- 「なぜJavaScriptはシングルスレッドなのに、時間計算(setTimeoutなど)をしながら別の処理を行うことができるのか?」 というところからスタートしないで、いきなりPromiseやasync/awaitから入ると何もわからない。 正しい順序で1から非同期処理が学べる最高の一冊。
- 自社のサービス開発まで手がける「インハウスデザイナー」。制作会社との違いや、転職後に意識すべきこととは?
- テストコード・自動化に関して
- 「テストコードそのものの正しさはどうやって検証する?」みたいなツイートを見かけたので自分の考えを書くと
- テストは誤りを検出するものであり、正しさを検証できない
- 自動化し繰り返すコストが激減すること自体に意義がある
- テストコードは他の開発者(未来の自分含む)へ向けたドキュメント
- バグの無いプログラムが作り得ないのと同様に、完璧なテストコードもまた存在し得ない。 ただ、繰り返し開発する中で、テストコード自体の品質(網羅するケース)もまた継続的に改善することはできる
- また、ユニットテスト以外のテストも自動化し、テスト自体のバリエーションを増やすことで多角的な検証ができるようになる。 パフォーマンスやセキュリティ、複数のコンポーネントを結合させたシナリオテストなど テストはプログラムを検証する視点とも言えるので、視点が増えれば検証の精度も上がる
- 自分は、よく機能追加やリファクタリングの前に、適当に壊れるような実装を入れてみて、どのテストが壊れるか観察するということをよくやる。 これにより、テストコードを何度も読み返すことになり、不足しているケースやコーナーケースにに気がついたりする
- プロダクトコード本体と同様に、テストコード自体も継続して改善していくもの これは、テストコードだけではなく、モニタリング/監視とかにも言える
- テストは自動化すると、テストを書いた分だけレバレッジが効いてくるので、テストを増やすことで、「可能なかぎり検証できるテスト」を継続的に目指すしかない。 もちろん、スローテストとは戦わないとだけど
- 「テストコードそのものの正しさはどうやって検証する?」みたいなツイートを見かけたので自分の考えを書くと
- 【まとめ】エンジニア向けデザイン参考サイト
- デザイナーが一度は読むべきオススメのデザイン本6選【初心者必読!】
- 『なるほどデザイン 〈目で見て楽しむ新しいデザインの本。〉』
- 『デザイナーになる。 伝えるレイアウト・色・文字のいちばん大切な基本』
- 『配色アイデア手帖 めくって見つける新しいデザインの本』
- 『かわいい色の本 デザインと言葉の配色ブック』
- 『けっきょく、よはく。 余白を活かしたデザインレイアウトの本』
- 『タイポグラフィの基本ルール -プロに学ぶ、一生枯れない永久不滅テクニック』
- 「オブジェクト指向UIデザイン」を読む
- 「エンジニアのための理論でわかるデザイン入門」を読む
2023-05-23 tue¶
AI系¶
- 実際に何かで遊んでみよう
- 仕事絡みの毎日の検索は基本的にChatGPT, phind.comになった
- https://www.perplexity.ai/ も使ってみる予定
- 間違っていることはあれど, 本当にピンポイントで答えが返ってくる
- GitHub Copilotも便利
Web・アプリ¶
- ノンデザイナーズ・デザインブックの25周年記念のPDFを読もう
- P.20まで
- 次回はP.21から
2023-05-09 tue¶
AI系¶
- 実際に何かで遊んでみよう
- Mojo: Pythonの文法で安全性と高速化
- ChatGPT-4とMidjourneyの組合せがビジネスに与えるインパクトがマジでえぐい
- URL
- このスレッド有用だな。AIから思い通りの出力を引き出すプロンプトはAI抜きでも有用、という一般論がここにも成立している。
- AIイラストで(エロ)マンガを作ろう!! (1/7)
Web・アプリ¶
2023-04-11 tue¶
AI系¶
- 実際に何かで遊んでみよう
- Phind
- URL
- 【重宝確定】エンジニアからの技術的な質問に最適化された検索エンジン『Phind』が激アツ! ・検索結果の要約と同時にサンプルコードを生成 ・文脈を理解しチャットAIにもなる ・リアルタイムデータで解答 ・出典元も一緒に教えてくれる ChatGPTよりPhindの方が開発現場では使えそうだな〜
- ChatGPTを安全に利用するための攻撃への理解と対策のベストプラクティス
- URL
- ChatGPTとペアプログラミング
- SymPyでも同じような補助がもらえるのでは?
- 「エラーが出たんですが」「エラーメッセージをちゃんと読め」→どうすれば良いんですか
- エラーを読んで解決策をもらう
- エラーを読むのは難しい場合はよくある
- ChatGPTでTerraformのエラーメッセージから原因を特定できるか試してみた
トーク¶
ChatGPT関係: 自然言語プログラミングそのままできる(ことがある). セルフコーチング応用もある. 問を一覧で作って, それを引用して順に聞くとか. シミュレーションゲームっぽくヒアリングするとか, 書いてみるとか. 実際にコードに落としてアプリにするとか, ChatGPT自体にいろいろやってもらうとか. マインドマップで形式を指定できる. PlantUML形式でいい感じにマインドマップを作ってくれる. プラグインもいろいろある.
動画の切り抜きだとか. 映像方面での応用を模索したい. AEだけでブライダルの写真を読み込んで選択的に動画を作る. AE内のJSでやっていた: ChatGPTにやらせてみてどうなるだろう? Premiere ProでもJSが使えるが情報があまり公開されていない. AEはエクスプレッション関係で情報が多い. 作業ベースの仕事は削ってまさしくクリエイティブな取り組みに集中したい. AEのテンプレート, 便利プラグインあたりはいろいろやれそう.
画像生成もプロンプトエンジニアリング.
LP制作の面倒な作業や, フローで決まりきった作業は自動化したい. そこにうまくはまらないか? マーケティングは機械的にできる部分は多かろう. 精度をどこまであげるか? LPの文章を作ってもらうのはもうあるにはあるが, いまの時点でターゲットに刺さるものができるか? 実務ではまだもう一歩人力が必要ではないか. LPを作る前のマインドマップを作るときにChatGPTといろいろやっている人はいる.
コンテンツを生成してもらう発想はわかるが, なかなか狙い通りにならない. 絵でまさにそう. 指示が難しい. アニメの背景で実験している会社もあるが, 視線誘導など絵・季節感・雲の状態がおかしい. それっぽいが, 専門家からすると「それはない」というのばかり. マーケッターでTwitter botを作ってもらった人がいた. 作業ベースか選択肢をいろいろ提示してもらうくらいか.
自然言語でプログラミング. そもそもプログラミングで何ができるかわかっていないと, 自然言語でプログラミングしようにも, プログラミング自体がうまくいかない. 小さなところから作っていくとか, 設計の手順とか.
2023-03-28 tue¶
- お休み
2023-03-14 tue¶
AI系¶
- 実際に何かで遊んでみよう
- 引き続きアラビア語の勉強に使っている
- Twitter
- 研究内容を短めの文章にまとめて, 質問を挙げさせる.
- これ、学会発表練習時に想定質問として使うとめちゃくちゃ便利だな。学生の発表の想定質問を考えるの結構大変なので。
- プログラミング応用
- ちょっとした作業・スクリプトなら割とさっと正確にやってくれる模様.
- ボットを作ったり.
- 「疲れ果てているときに代わりにちょっと試してみる」事例があった.
- 作業用スクリプトの二つの側面
- 息抜きにちょっとした気分転換も兼ねて
- 本当に仕事用
- 前者の「プログラミング」はまさに「趣味としてのお絵描きか仕事としてのお絵描きか」と同じっぽい
- これにしても自分よりよいプログラムをコメントつきで書いてくれたり, 知らなかったライブラリを教えてくれることもある模様
- さらなる検索・調査のためにとりあえず書かせてみるのもよさそう
- ちょっとした作業・スクリプトなら割とさっと正確にやってくれる模様.
- Regular Expression Puzzles and AI Coding Assistants
- プチ読書会もしよう
- いま読んでいる
- 正規表現自体が本当にめんどい
- 書くのはよくても読めない
- 正規表現を書かせるだけではなく読ませる方のChatGPT利用もありうる
- 正規表現も言語の一種: 形式言語理論で正規言語を表すための手段
- 言語の解読の視点をもっと広げるといろいろ応用が効くのではないか
- 言語の解読
- 最初の「学会用発表内容からの質問生成」: 文章を解読させた結果, 解読できない・よくわからない点を質問として練り上げてもらう
- ChatGPTに文章を読ませて何かしてもらう視点を持つとよいのでは?
- プログラムの生成ばかりではなく, プログラムを読んで解説してもらう方向性ももっと何かある?
- いま本を読んでいたら「テストケースを作ってもらう」のにも使える?
- 何にせよ「対話」を通じて話を膨らませる相手になってもらう発想は決定的に重要っぽい.
- Bing: すでにいろいろ制限がかかっていて残念らしい
- ChatGPT: APIが公開.
Web・アプリ¶
- DenoがNode.js互換レイヤを本体に統合し高速化、package.jsonサポートでNode.jsからの移行がさらに容易に。Deno 1.31リリース
- なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】
2023-02-28 tue¶
Web制作¶
- 昨日の話がちょっと気になったので
- サービス内容に対する議論を追いかけ切れていないためピント外れの可能性あり
- クリエイションの各人のマインドセットというか目指す方向もあまりよくわかっていない
- サービスはスタートアップ向けなのか? などもあまりよくわかっていない.
- 各種見積もりの難しさが問題になっていたように思う
- 見積もりが問題なら, 見積もりが楽な定型作業と, 事前見積りが難しい非定型作業のような分け方も考えるとよいのでは? 多分他にもいろいろな観点がある.
- 映像はよくわからないためWeb制作に関して考える
- いったん成果物・必要な作業・サービス提供対象の枠で考える
- 内容と工数の観点
- 見積もりのしやすさ・しにくさ
- 作業の難しさ・簡単さ
- 作業量の多さ・少なさ
- 大枠の想定
- 成果物: Webサイト・LP
- 必要な作業: ヒアリング・設計・デザイン(スタイリング)・実装
- 設計: Webサイト全体の構造, 導線
- サービス提供対象: 企業・経験を積んだ個人・スタートアップの個人
- 前提
- Webサイト: 直接的な収益は生まない
- LP: 商品販売用ページとして直接利益を生む
- (スタートアップの個人はこの辺の区別もついていないのでは?)
- 成果物
- Webサイト
- スタートアップ
- 完全にパッケージでよいのでは?
- もちろんヘッダー画像や全体の配色設定など多少のカスタマイズは許可
- むしろ「収益を生むLPに時間と金を使おう」と提案する
- 見積もりしやすい
- パッケージ対応という意味で駆け出しでも対応可能
- 企業・経験を積んだ個人
- 個別対応前提
- むしろはじめからドカっとお金と時間をもらって長期的に付き合う対象ではないか
- 見積もりというより継続的なサービス(または別パッケージ)対応案件ではないか
- スタートアップ
- LP
- 基本的にお金を生む
- ハードな作り込み前提
- 一点物としてサイト全体の構造を考えたりする必要はない
- ABテスト的な意味で育てる要素はあるが, サイトを育てる観点とは違う
- たぶん見積もりしやすい
- 特に賞味期限があるタイプの商品だとスピードが必要
- スタートアップだと早く売上を作る意味でもスピードが必要
- 期間の意味で作業量は見積もりやすいのではないか
- Webサイト
- 必要な作業
- ヒアリング
- まず内容が重い
- ヒアリングシートを育てれば多少は軽くなる
- 見積もりしにくい: むしろ明確にフェーズを切ったり「いまはこれでいこう」という決断が必要な作業
- 特にWebサイトでは経験者が対応しなければならない
- まず内容が重い
- 設計
- 設計が必要な時点でだいたい何もかも重い
- デザイン(スタイリング)
- 見積もりしにくい
- 設計・作業量・差し戻し・調整が重い・多い
- WebサイトとLPで重さ・多さは(たぶん)質的に違う
- 実装
- 設計ができれば見積もりはしやすい
- ヒアリング
- サービス提供対象
- 企業・経験を積んだ個人
- ふつう要件はきっちりしている
- ヒアリングはしやすい
- (経験者なら)見積もりもしやすい
- 作業量は重い
- スタートアップの個人
- たぶんヒアリングは大変
- 「WebサイトよりLP作れ」といったタイプの「コンサル」が必要なのではないか
- この「コンサル」込みのパッケージ(Webサイトは軽くする, その代わりLPは手厚く)で割り切ってサービス提供するのも考えられる
- 企業・経験を積んだ個人
AI系¶
- 実際に何かで遊んでみよう
- 最近語学学習で使っている
- アラビア語に母音を振る
- 時々おかしい
- Emacsで自分でやった方がかえって速そう
- あくまで自分で使う前提
- 短文の文法説明
- これはよさそう
- 複数の単語・熟語と格を一気に調べられる
- 単語と格はともかく, 素人が熟語を調べるのは辛酸をきわめる
- アラビア語に母音を振る
- 数学の証明
- ためしに一つやってみた: 具体的な関数の凸性の証明
- 全く駄目
- はじめから期待していない
- 全然関係ないが, 割と前から初等幾何の定理の発見と自動証明というテーマがある
- 数学川柳
- 言葉遊びの視点
- 言葉遊び関係はもっと何かやってみたい
- Chat GPTの完全な上位互換!Bing AIの面白い使い方まとめ
- ChatGPTで騒いでる場合じゃない。 AI研究者が「FlexGen」をゲームチェンジャーと呼ぶ理由
Web・アプリ¶
- なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】
- ダメなUIを作るコツ
- 大手はどこもパスワードレス化を進めてる
- 2022年に起きたフロントエンドの変化
- Linuxコンテナの「次」としてのWebAssembly、の解説
- imgタグで行うウェブサイトの最適化
- Lighthouseで最適化していると出てくる
- 自社のサービス開発まで手がける「インハウスデザイナー」。制作会社との違いや、転職後に意識すべきこととは?
- テストコード・自動化に関して
- 「テストコードそのものの正しさはどうやって検証する?」みたいなツイートを見かけたので自分の考えを書くと
- テストは誤りを検出するものであり、正しさを検証できない
- 自動化し繰り返すコストが激減すること自体に意義がある
- テストコードは他の開発者(未来の自分含む)へ向けたドキュメント
- バグの無いプログラムが作り得ないのと同様に、完璧なテストコードもまた存在し得ない。 ただ、繰り返し開発する中で、テストコード自体の品質(網羅するケース)もまた継続的に改善することはできる
- また、ユニットテスト以外のテストも自動化し、テスト自体のバリエーションを増やすことで多角的な検証ができるようになる。 パフォーマンスやセキュリティ、複数のコンポーネントを結合させたシナリオテストなど テストはプログラムを検証する視点とも言えるので、視点が増えれば検証の精度も上がる
- 自分は、よく機能追加やリファクタリングの前に、適当に壊れるような実装を入れてみて、どのテストが壊れるか観察するということをよくやる。 これにより、テストコードを何度も読み返すことになり、不足しているケースやコーナーケースにに気がついたりする
- プロダクトコード本体と同様に、テストコード自体も継続して改善していくもの これは、テストコードだけではなく、モニタリング/監視とかにも言える
- テストは自動化すると、テストを書いた分だけレバレッジが効いてくるので、テストを増やすことで、「可能なかぎり検証できるテスト」を継続的に目指すしかない。 もちろん、スローテストとは戦わないとだけど
- 「テストコードそのものの正しさはどうやって検証する?」みたいなツイートを見かけたので自分の考えを書くと
- 【まとめ】エンジニア向けデザイン参考サイト
- デザイナーが一度は読むべきオススメのデザイン本6選【初心者必読!】
- 『なるほどデザイン 〈目で見て楽しむ新しいデザインの本。〉』
- 『デザイナーになる。 伝えるレイアウト・色・文字のいちばん大切な基本』
- 『配色アイデア手帖 めくって見つける新しいデザインの本』
- 『かわいい色の本 デザインと言葉の配色ブック』
- 『けっきょく、よはく。 余白を活かしたデザインレイアウトの本』
- 『タイポグラフィの基本ルール -プロに学ぶ、一生枯れない永久不滅テクニック』
- 「オブジェクト指向UIデザイン」を読む
- 「エンジニアのための理論でわかるデザイン入門」を読む
2023-02-14 tue¶
AI系¶
- ChatGPT
- Googleの脅威になっているとか何とか
- AI利用は検索するときついでに使うところからはじめてみるか
- ChatGPTを始めとするAIの使い方 -20選まとめ
- ツイート
- 「There's an AI for That(それをするためのAIは既にあります)」というサイトが狂ったような数のAIサービスがリスト化されていて、用途で検索するとそれに合ったAIが一覧で出てくるのでなかなか便利。
- https://theresanaiforthat.com
Web・アプリ¶
- Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か?
- 「経営層への情報セキュリティの説明大変ですよね?」 IPA、予算確保の説得材料を出してくれるツール公開
- なぜエンジニアが作る画面はダサいのか…?「理由」と「対策」を徹底解説【エンジニア向け画面デザイン講座】
2023-01-17 tue¶
- ちょっと忙しくなってきそう
- 忙しくなるとはいえ, 緊急性が低くて自分一人ではやらないテーマを細く長くゆるく勉強する機会を保ちたい
- フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識が出るらしい
- 2023/2/13発売予定: 読みたい
.NETエコシステム¶
- 今年はこれの修行をしてみる予定: WASMも書ける
- WASM: 「ワズム」
- F#が好きでこれでいろいろやりたいのだが, 情報が少なすぎるため現在C#での.NET学習中
- バックエンドがメインだが, 最近はWASM(Blazor)のおかげで一応フロントも書ける
- C#でのWASMがどこまで流行るかは微妙
- むしろあまり流行らないのではないかとさえ思う
- そもそもC#もそこまで好きではない
- そんなわけでお勧めはしないが自分の整理も兼ねて.NETの話を少しする
- そこまで一般的に広く使われているとも思わないが, 確固たるファン層はいるイメージ
- 少なくとも英語なら関連書籍もかなり積極的に出版されていて勉強しやすい
- 処理系の進化も速い
- 昔はWindowsオンリーだったがいまはMacとLinuxでも動く
- もともとWindowsオンリー: 2002年登場
- Mac/Linuxでも動くMonoという処理系が登場
- XamarinやUnityがmonoの上で動いていてクロスプラットフォーム
- Xamarin買収でmonoもWindows管轄下に入った
- クロスプラットフォームを含めてmonoと.NET本家の統合
- .NET Standard2.0: これは単に仕様, APIセットの定義
- .NET Framework 4.7: Windowsオンリー
- .NET Core 3.0
- 2014/11誕生
- .NET Coreの4はなし: .NET Framework 4との混同を避けるため
- .NET CoreのCoreは.NET5から消えた
- いまは.NET7
- .NET5 以降: 奇数版が試験的, サポート期間短い, サポート1年間
- 偶数版はLTS: 3年間, .NET6 LTS
- Microsoft(技術の)トップが代わってから大分変わってかなり邪悪さは減った模様
- 何がどこまでうまくいくかはともかく, .NETエコシステムの上でいろいろやれる
- 一般的なプログラミング言語: C#, F#, Visual Basic
- スマホアプリ開発: 昔はXamarin, 今は.NET MAUI
- スマホアプリはKotlin, Swiftの他, Flutter(Dart言語)がマルチプラットフォームで有名で次にReact Nativeという印象
- デスクトップアプリ: .NET MAUI (少なくともWindowsのデスクトップは作れる)
- Unity: ゲーム
- Blazor: WASMによるフロントエンド開発
- WASMはともかくBlazorは微妙な気がする
- PowerShell: 実は.NETエコシステムでMac, Linuxでも使える(使ったことなし)
- WASM: C/C++, Rust, Golang, C# (.NET)
- WASM
- 仮想命令セットアーキテクチャまたはプログラミング言語
- 直接書くよりは他の言語で書いてコンパイルする
- 基本的なパフォーマンスを求めるところで使う.
- はじめから
JavaScript
の置き換えは意図していない. - 基本的には他の言語で書いてWASMにコンパイルする
- まだまだ容量が大きく, ネットワーク負荷の点で
JavaScript
に劣る - 容量問題(ネットワーク速度問題)が解決できる状況なら使える
- まだまだ容量が大きく, ネットワーク負荷の点で
- 例: Figma: デスクトップでじっくり考えるような状況でしか使わない
- Figmaは製品もさることながら技術的にもかなりエッジの尖った企業らしい
- 技術に広く浅く触れてみる〜WASM編〜
- C/C++で記述されたアプリケーションをWeb上に移植する
- ロジック的な部分はWASMで全て実装し,UIといった部分はJavaScriptで実装する
- https://ja.wikipedia.org/wiki/WebAssembly
- 内部的には、wasmコンパイラシステムは中間コードを扱うためにS式を使用している。
- 統合開発環境WebAssembly Studio - WebベースのWebAssembly向け開発環境。
- C言語及びRustに対応している。
- WASM
AI系¶
- 和ゴスロリ https://twitter.com/tkaz2009/status/1601355025254866944
- AIに「和ゴスロリ」の衣装設定を考えさせてみた結果が、予想の斜め上を行く凄さで驚愕。
- 細部までの描き込みが凄い上に、可愛い。
- バリエーション大量に出させて、服装決めるにはAIってとてつもなく便利そう。
- https://twitter.com/Yamkaz/status/1601327530757136386
- すごいのきた
- DeepMindから演劇や映画の脚本を言語モデルで共同執筆できる作家さん用の新ツール「Dramatron」が公開! https://deepmind.github.io/dramatron/index.html
- 題名、キャラ、場所の説明、セリフを含む新しい脚本をインタラクティブに共同作成することができる
- ChatGPT
- 「対話」に使うと面白い?
- 人間がしない発想で回答してくる
- ブレインストーミングとしてのAI対話みたいなのもあり?
セキュリティ¶
Androidセキュリティ¶
- 「マンガでわかる!Androidアプリのセキュリティ」
- アプリのセキュリティに関するおすすめの方法
- 『Androidアプリのセキュア設計・セキュアコーディングガイド』【2022年8月29日版】を公開しました
- Androidアプリケーションの脆弱性発生ポイントとその傾向
Androidテスト¶
Web・アプリ¶
- 【まとめ】エンジニア向けデザイン参考サイト
- デザイナーが一度は読むべきオススメのデザイン本6選【初心者必読!】
- 『なるほどデザイン 〈目で見て楽しむ新しいデザインの本。〉』
- 『デザイナーになる。 伝えるレイアウト・色・文字のいちばん大切な基本』
- 『配色アイデア手帖 めくって見つける新しいデザインの本』
- 『かわいい色の本 デザインと言葉の配色ブック』
- 『けっきょく、よはく。 余白を活かしたデザインレイアウトの本』
- 『タイポグラフィの基本ルール -プロに学ぶ、一生枯れない永久不滅テクニック』
2022-12までのメモ¶
Webデザイン¶
- 定点観察用: webcreatorbox
- Webデザインの教科書: 実際にやってみよう
- 良いデザインはどっち? クイズを解くだけで、デザインの知識がどんどん身につく画期的なデザイン書 -クイズ de デザイン
- 商用利用無料、UIデザイン用のSVGアイコンが1000種類以上! 改変・再配布も可の太っ腹ライセンス- MingCute Icon
- コピペで簡単、おしゃれ無料Webレイアウト25選(CSS Grid・Flexbox活用)
- Definsive CSS
- 【CSS】「これどうやる?」アップルやテスラのWebレイアウト再現テクニック集
- コピペで簡単、おしゃれ無料Webレイアウト25選(CSS Grid・Flexbox活用)
- コンバーター: css to styled components converter
- CSSでこんなことができるの知ってた? 要素・コンテナのサイズに関係なく、ボーダーや背景をはみ出して配置するテクニック
- 【2022年最新】オススメのプログラミング学習サービス集
- 【上級編】企業サイトのコーディング練習
- 2022: ゲーム感覚でプログラミング学べるサービス集
WebDev¶
- Twitterでのハッシュタグ
- つぶやきProcessing
- つぶやきGLSL
- クリエイティブコーディングの教科書
- ゲーム感覚でプログラミング学べるサービス集
- 機械学習学習資料: 2022-08-05
- 【個人開発】DeepL×Google画像認識の和訳LINEアカウント「瞬間Deep和訳」をリリース!
- Local Storage
- Rails×Next.js×Auth0で認証機能をサックと開発する
2022-12-06 tue¶
- ReactのRefとRefForwardingを一気に学び直した
- 実践 Node.js Native ESM — Wantedlyでのアプリケーション移行事例
- 配色で困ったときに使えるWebツール
- Why your website should be under 14kB in size
- New Recipes for 3rd Party Cookies
- 2022年上半期、注目されたUIデザインのテクニックのまとめ
- 2019 CSSで簡単実装!震える&歪み効果のあるグリッチエフェクトCSS 13選!タイトルや表紙に使える!【アニメーションCSS/テキストエフェクト】
- HTML&CSS コーディング・プラクティスブック
- 12 principles of UI/UX animation you should know
- 45分間で「ユーザー中心のものづくり」ができるまで詰め込む
- UIの名称まとめ
- これがユーザーの信頼を失うデザインだ! 最近のUIで見かけるダークパターンのしっかりとした知識が身につくデザイン書 -ザ・ダークパターン
- インフォグラフィック
- インフォグラフィックを勉強できる国内サイト。図解を学べることはもちろん、配色やグラフの見せ方など資料づくりにも学びの多いサイトです。
- ■ INFOGRAPHIC.JP
- ■ ZUNNY
- ■ANA ♯Infographics
- ■info-graphic.me
- :modal擬似クラスが全ての主要ブラウザでサポート
- 新しいCSSの書き方 最新テクニック20選まとめ実用サンプルコード付き
- ちょうどいいWebデザインギャラリー
- 格好いいホームページ
- https://twitter.com/OKU_MAYA/status/1570517840918347776, Google お絵描きツール
- ElmでVisual Study
- 誰も教えてくれなかったHTML tips集
- imgタグにおける loading='lazy' 属性
要素 - HTMLだけの検索
要素を使ってすべてのリンクを別ウインドウで開く - favicon強制再読み込み
- download属性でファイルを開かずダウンロードさせる
- HTML Tips
- オープンデータを管理するパッケージマネージャー
- Figmaの技術力
- 日本では Figma って単にイケてるデザインツールの会社と思われてるかも知れないけど、実はウェブのコアの表示部分を C++ と WASM で作ってて技術的にとんがってて、普通のやり方だとブラウザ上では無理なレベルでパフォーマンスと省メモリを実現してるから競合の追従を許さなかったんだよね。
- Learn Accesibility
- わかりやすさとスタイル性
- 【わかりやす0流行先取り 注目の最新Webデザインおすすめ30選まとめ](https://photoshopvip.net/140273)
- CSSの進化がすごい! スタイルクエリの基礎知識と使い方を解説、親要素の「スタイル」に応じて子要素のスタイルを適用
- DXの一例
- デベロッパツールの新機能が便利! そのCSSがなぜ機能しないのか、どう修正すればよいのかが分かる
- 今すぐ使える最新CSSテクニックや書き方20選 サンプルコード付レシピ
- 都合の良いUIデザイン〜わがままで怠惰で理不尽なユーザーのニーズに応える10のポイント〜
- XSSを理解して安全なWebアプリケーションを作る
- 【WEBデザインの参考に】ミニマリストに大人気!洗練されたシンプルで美しいHTML5ウェブサイトテンプレート10選【フラットデザイン/サンプル】
2022-11-22 tue¶
- 近況: 12月からAndroidアプリを書く仕事が入ったため猛勉強中
- 次回からはAndroidまたはKotlinの公式ドキュメントを読む会になるかもしれない
- Androidのセキュリティも気になる
- https://www.jssec.org/dl/android_securecoding_20220829/index.html
- 2021年8月以降に Google Play ストアから配信する新規リリースのアプリケーションは targetSdkVersion の API Level を30(Android 11)以上にしなければならない
- 2021年11月以降に既存アプリをバージョンアップする場合も targetSdkVersion を30以上にしなければならない
- Writing NES Emulator in Rustをやった
- 【deno】deno1.28「npm完全に理解した」
- いろいろなモジュールの読み込み:
- 順番が大事
- 人力では不可能
- 「コンパイラ」にやってもらおう
- トランスパイラ
- バンドラーの登場
- Gulp
- バンドラーもよりよいツールが必要
- 複雑になってくると時間もかかるので高速化
- webpack: Node.jsのライブラリ
- トランスパイラ
- ブラウザごとの互換性
- ES5, ES6, ES2018, ES2020, ES2021
- JavaScriptのバージョンが上がる
- babel: Node.jsのライブラリ
- Node.js自体が時代を切り開いてきた側面がある
- 古くてよくないものも一杯残っている.
- いまとなっては明らかによくない
- Node.jsの努力のおかげで「こうするといい」とわかったのがいっぱい. それによる標準化もある
- Node.jsは全部取り込めているわけではない
- 昔の資産もあって, これとの整合性をどう保つか.
- webpack・babelはJavaScript製: 遅い
- 歴史的な事情, 技術的な負債もたくさんある.
- あと知恵: 設計もよくない
- Deno: Node.jsの開発者がリード
- Rust製: 高速化をきちんと意識
- webpackなどは設定が面倒
- Node.jsはバンドルやトランスパイラの面倒をみない
- いまとなっては処理系で対応した方がいい
- Denoはこれらを同梱, パフォーマンスも処理系で確保
- リンター(linter)
- C言語: 行儀が悪いコード, バグを生みやすいコードを検出して書き換えろというワーニングを出してくれるツール
- JavaScriptもよくない部分がいっぱいあって, それを使わないようにしよう
- 実際にチェッカーを作ろう -> jslint
- もっと使いやすいツールがほしい: 実際いろいろある
- eslint: golang製, node.jsのデファクトスタンダード
- eslintも楽になったとはいえ, いろいろ設定が必要でめんどい
- いろいろな人の趣味がある
- 紛糾する: 「宗教戦争」
- これを処理系で面倒をみよう
- denoでは同梱: 処理系で決め打ちで諦めろ
- golang: gofmt(フォーマッター)
- インデントは4スペースか2スペース, スペースかタブか
- 何でもいいが, 何か決めないとコードがグチャグチャで読みにくい
- 誰がどう決めるか?
- これを言語処理系が決めてしまおう, 無用な紛争をなくそう
- Denoはこれを決める方向に持っていった
- Denoはフォーマッターもある
- 文字列をシングルクォートにするか, ダブルクオートにするか
- こういうのもどちらでもいいが, どちらかにしないと気持ち悪い
- node.js, prettier
- prettierも多少設定が必要
- いろいろなモジュールの読み込み:
- 静的Webサイトでも設置できるフォームをノーコードで作成、管理できるOSS・「formify」
- 結局別途稼働している別サービスにいろいろな処理を委任している
- CSSで簡単に実装できるクールなアニメーションドロワーメニュー10選【上下左右・階層・スライドメニュー・ハンバーガーメニュー】
- おまけ
- スマホアプリ開発の言語: AndroidはKotlin, iOSはSwift
- Android/iOS両方同時に開発できる言語・フレームワークもある
- Flutter: Dart言語による, 同時にWeb開発もできる
- React Native: JavaScript/TypeScriptで開発できる
- .NET MAUI: Xamarinの新バージョン, C#
- Flutterなどは9割程度はコードを共通化できるらしいが, OSネイティブの低いレイヤー部分はOSごとに書かないといけない部分がある模様
- はじめからどちらかのスマホ対応しか考えない, または相当深いレベルの実装が必要なことがわかっている場合は, それぞれKotlin/Swiftで別に実装することもよくあるらしい
2022-11-08 tue¶
- NovelAIのプロンプトを管理・調整するChrome拡張を作りました
- リンク先忘れ: pixivあたりでAI絵販売
- 例えばこれ: エロ同人CG販売サイトでAIアートが販売 10/12追記
- 呪文学習でやはり一手間いるから, その労力・時間をお金で解決する.
- 凝ったモノならどうしても手書きだがお手軽に・大量に, となると一定のアドバンテージがある.
- いわゆる先行者利益の部分もある模様.
- 数ヶ月さえ持たないかもしれないが, それでも瞬間最大風速としてはビジネスになった.
- Stable Diffusionを使って「いらすとや風画像生成モデル」を作った話
- 「ところで、いらすとやさんのようなイラストレーターがこういった機械学習技術を活用して作画を効率化することはもはや可能な域に達してしまったかもしれませんね。」
- この間のspins cre@ationでのやりとり
- https://spinscreation.slack.com/archives/CTC7PD3PH/p1666089251488249
- 僕だったらイラレでこういうパーツ組み合わせて作ります^^
- このパーツを自分で生成する, もしくは依頼主が生成してきたパーツをうまく組み合わせるとか?
- 多少絵を描けて修正できる人の片手間仕事になるか?
- Vercel、Webpack後継を目指す、Rustベースの「Turbopack」をリリース
- 高速化はどこでも大事
- マーケティングでもスピーディかつ大量の試行錯誤が大事と良く言われる
- 学校の勉強でもそう
- Twitterで塾講師の人が言っていた
- 計算が速いとたくさん問題が解けてたくさん試行錯誤できる
- 計算ミスにしてもどんな問題でどういうミスをしたか考える時間の余裕が生まれる
- 計算も正確になり, それに合わせて速くもなっていく
- 数値計算: スパコンで何日もかかるような計算での10倍高速化のインパクトは凄まじい
- CSRF対策
2022-10-25 tue¶
- 最近「フロントエンド」っぽい話をあまりしていない
- ふだん話さない話をしていて楽しいので自分は気にしていないがどうなのかと思わないでもない.
- 何かオープンソースのライブラリのプログラムでも読むか?
- よさげなサイトのCSS眺めるとか?
- UIからの解決
- また凄いのがこれ操作するのが今でいう液晶タブレット&ペンなのね。当時の常識だと「これは画面を触るライトペン的な?画像もリアルタイムで拡大とか回転させて透過させるの?」と。当時のパソコン少年の視点だとこれは非常識な夢物語でしたよ。でもアプローチがUIからの方が未来の正解が見えるんだね
- https://twitter.com/hisaketM/status/1584421773780877312
- いずれは大抵の技術的制約は解決するので、技術的詳細を無視して最適なUIを考えれば自然それがガジェットの未来予測になるというのは確かにそうなんだよね
- NovelAI Diffusionの研究書「元素法典」有志が日本語化 画像生成呪文の極意
- コメント
- 法典系の異様なほど長いプロンプトは、AIを道具として見た際、AIの能力がまだまだ低いことを示唆している。
- なるべくシンプルな描写プロンプトを入れるだけで、できる限り余計なタグを入れずともいい絵を生み出したいのよ。
- ただ、少しそのヒントは見えてきたと思う。
- 重要なのは、より本質的で細部を描写する指示を書くことと、必要な場合は状況に整合する付帯情報を明記してやること。
- セフィロスは水中に沈めてクロールと水を蹴ることの指示だけで、泳げと言わずとも泳ぎだしたし(質の調整はもう少し必要だったけど)、散らかった部屋の少女は、messyな条件や座り方を指示するだけで、一気にそれっぽくなった。ラーメンの口は、人間が描いた絵を元に表情指定するだけで解決した。ウルトラファインチューニングには法典系長文プロンプトが必要でも、エッセンシャルな絵はシンプルなプロンプトで描ける。
- クリーンプロンプティングを目指そう。
- 分量が減らせるので、必要であれば使えるタグの数を増やせる。
- 何より呪文が見る気が失せるほど長いことを避けられる。
- プログラミングと同じ。
- 本質的にシンプルに出来るなら、呪文は複雑に描くべきではない。
- そして、簡単なプロンプトが使えることは、AIの道具性を高めることでもある。
- コメント
- 画像生成AI
- 触って感じたAIの強みは「全然関係のない別々の概念を合成できる」ということで、これによって「潜在的に存在した誰も見たことない表現」を生み出せる点だと思う。
- これは卓越した芸術家が新しい表現を開拓するときに使う手法そのもので、コンピューターで超スピードに試せてしまうのはスゴイ。
- これは楽しい
- 所感
- (数値)計算系でも何かを探索するときに高速かつ正確に試行錯誤するための道具としてのプログラミングの意義を感じたことがある.
- 高速の試行錯誤のためのプログラミングとその応用と言えば理工系のプログラミング応用としては中心的な課題でさえある
- 平野耕太ツイート
- AI君は、今日はお前を完全な補正機・補助機として教育する。俺が描いたものをAIがおかしな所を補正して出力し、AIのなんか違うなという所を俺が書き直し、補正し、書き加え、補正する。人間の嗜好をAIが監視し、AIの思考を人間が監視する。
- 新聞デザイナーの講演
- How to save news papers
- dalle2, outpaiting
- 資料作成のFigma移行
- 7月から資料作成をFigma移行してから喜びしかない。
- Nue incは資料制作の全てをFigmaでやるようになった。メリットは添付。
- 人によってバラける資料のクオリティ減ったし、過去レイアウトの引用もスムーズ。何よりバージョンごとに書き出していた無限pdfからの脱出が可能になった。まじおすすめ。
- CSSでスクロールが連鎖するのを回避する古い方法とoverscroll-behaviorを使った新しいテクニック
2022-10-11 tue¶
- jQueryの:has()と擬似クラスの:has()
- Chromeに実装された疑似クラス「:has()」がjQueryの「:has()」に悪影響、一定の条件下でウェブサイトが壊れる可能性 (Publickey)
- Core Web Vitals
- 日本語からのプログラム生成
- 日本語からAIが自動的にプログラムを書いてくれるサービス「AI Programmer」を公開した
- https://aiprogrammer.hashlab.jp
- 対応言語: #Python #SQL #javascript #html #cpp
- 3D生成AI
- 名前は「DreamFusion」。作者は匿名。
- https://dreamfusionpaper.github.io
- NovelAI
- マジで革命的だわ…
- 全てNovel AIという最新の画像生成AIで生成したイラストなんだけど、キャラや背景、モンスターやイケメンに至るまで、あらゆる指示に対応できる上に全てクオリティが高い…今日から世界中の人間全員が「神絵師」になったという事なんだろうな
- NovelAI
- https://www.noble.ai/
- サンプル
- AI作画の恐ろしさ
- 個人的にAI作画の一番恐ろしいところはAIの存在ではなく「非常に安価に大量の絵が指示通りに作れる」ということ。
- 絵描きとしては理想の絵に近づこうと励むが、最大の障害は「感性」「才能」ではなく「時間」。
- 良い絵を早く描けること自体がすごい事であり商売上非常に重要。
- そこを突いてくるのがキツイ
- テキストからの動画生成
- 【未実行】
- テキストから動画を生成するAI「Phenaki」が公開。
- こちらは一連のテキスト、ストーリーを入力すると最大数分の長さの動画生成が可能。
- すご...AIによる映画, アニメ, CM制作も現実になりそう..
- https://phenaki.video
- ネット上での画像収集
- 【未実行】
python
のicrawler
- 4行で画像が100枚さっと収集できる模様
PIL
で画像加工できる
- いいなと思う UI はユーザの行動を承認している
- ゴミUIの例: 退会しづらいサブスク
- 「あの会社は本当に腐っている」という評判が立ってしまう
- UI
- このサイト知ってる人も多いだろうけど、BAD UIの最たるものが詰め込まれてて面白い。実際に体験するといかに使いやすいUIが大事かを実感できる。私は最後まで辿り着けなかった…笑
- https://userinyerface.com
2022-09-27 tue¶
- 技術書典でいくつか本を買った
- FireStarter.Testable_Firebase-ebook-testable-firebase.pdf
- シーホーちゃんとゆかいな仲間たち.Firebase_Authenticationなら多分これが一番早いと思います_ebook.pdf
- りあクト!Firebaseで始めるサーバーレスReact開発riakuto-firebase-210214.pdf
- りあクト!TypeScriptで始めるつらくないReact開発-第4版【①言語・環境編】riakuto4pt1-220908.pdf
- りあクト!TypeScriptで始めるつらくないReact開発-第4版【②React基礎編】riakuto4pt2-220908.pdf
- りあクト!TypeScriptで始めるつらくないReact開発-第4版【③React応用編】riakuto4pt3-220908.pdf
- FirebaseやReactに興味ある人, どのくらいいる? 何かやる?
- denoやらBunやら
- アニメーションのプログラミングネタを拾おう
- GSAP入門?
- processingを眺めよう
- NextとReactでp5jsを使ってみる
- ウェブ制作で React(Next) や Vue(Nuxt)、jQuery が最近どれぐらい使われているのか調べてみた
- 現代のフロントエンド事情
- 新技術が業界を潰す事案
- これに似た話ではDTP(Desktop Publishing)とCTP(Computer To Plate)という技術の登場・普及によって数年で産業丸ごと消滅した写植という業種があって…本物のディスラプションってマジでヤバいんですよ。
- 写植全盛期の文字盤(DTPでいうフォント)で最大勢力を誇った写研は、DTPのトップランナーであるAdobeへのフォント提供を突っぱね、当時二番手のモリサワはその話に乗った。その結果、今やモリサワは圧倒的なフォントベンダーへ、写研は滅亡へ。イラストレーターにもそういう選択が求められるのかもね。
- https://twitter.com/VoQn/status/1564783941651144704
- 前も書いたけど、AIに仕事とられるんじゃなくて寧ろAI駆使しながらレタッチが出来る腕前が元々ある描き手が更に超画力を身に着けてく展開にしばらくは続くと予想してるんですよね。そういう意味では『格差が広がる』
- ↑の予想通りというか、それ描いた3週間後にこんなデモが出ているし
2022-08-30 tue¶
- mimic閉鎖
- 「リアルタイムグラフィックスの数学」
- https://gihyo.jp/book/2022/978-4-297-13034-3
- グラフィックスやアニメーションの数学的なやつ何かやる?
- 「数学から創るジェネラティブアート―Processingで学ぶかたちのデザイン」は持っている
- 他には「『問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本』」とか?
- 面白そうなプチネタがあればちょこちょこ拾おう
- stable diffusionをGoogle Colab上で実行
- レスポンシブの実装が今までと変わる! CSSの新機能コンテナクエリと:has()疑似クラス、最初に理解しておきたい基礎知識を解説
- CSSだけで作れる!背景パターンや模様のサンプルコードまとめ
- Web上でアニメーションを表示するなら「Lottie」がおすすめ!特徴や使い方など
- AEのアニメーションを使っている
- lottiefiles
- CSS filterの使い方:画像にフィルタを追加して表現の幅を広げよう
- MUUUUU.ORG: サイト集
- 最近見かけた、CSSの一工夫加えたスゴ技テクニックのまとめ
- ExcelAPI
2022-08-16 tue¶
絵画史から見るとAI絵画はカメラ¶
AI絵画が絵画という世界になぜショックを与えているのかというと、とにかくこれまで絵画では必須であった画材やテクニックも(アナログでもデジタルでもそこは同じ)が一切不要である点です。 AIにこんなことをされてしまっては、これまでつちかってきたテクニックが無駄になる、それを身につけるためにやってきた努力とはなんだったのか、絵描きの職業が奪われてしまうという嘆きの声がたくさん出てくるのもむべなるかなといったところです。 ただ、絵画の歴史的に考えると、これとほぼ同じことは過去にもありました。それはカメラ(と写真)の登場でした。
画像を生成するところの細かいところを端折って、最終的な完成品ができ上がるまでの手順を整理してみると、カメラとAI絵画というのは、ほぼ同じであることが分かります。 - カメラ - パラメーターが存在する - 機械が処理をする - 試行錯誤する - どれを表に出すか人が選ぶ - AI絵画 - パラメーターが存在する - AIが処理をする - 試行錯誤する - どれを表に出すか人が選ぶ
ノーコードは普通に使われると思うけどね。midjourneyは誰の記事だったかいらすとやとか素材集みたいなものって解説はすごく納得した。
APP FUEL¶
- URL
- アプリ開発のヒントになりそうなサイト
- https://theappfuel.com
- 他社のオンボーディング事例、検索機能、有料プランへアップグレード、友達招待など、機能別で色々なUIがまとまってる
Webサイトを作る際に超参考になったデザインのサイトまとめ¶
- Qiita
- 見よう
- CSSでメディアクエリはもう必要ないかも -メディアクエリなしで実装するテクニックのまとめ
- CSSの実装はデバイスベースからコンテンツベースに移行しているのが現状
- grid, flexbox, vh, vw, calc, clamp, min, max, aspect-ratioなどのCSSがある現在、メディアクエリに頼る必要はありません
- 実は知られていない、人の心理を考慮した料金表のデザイン
- CTA: Call To Action
- いくつ知ってる?HTML/CSSの便利な小技・テクニックまとめ
- いまはJavaScriptを書かなくてもCSSでいろいろできる
- CSSでメディアクエリはもう必要ないかも -メディアクエリなしで実装するテクニックのまとめ
- Parts
- 動くWebデザイン アイディア帳
- jQueryなので微妙
- 既に世にあるアニメーションを知る上では良さそう
- Reactの代替ライブラリも基本は揃っているはず
- アニメーションで魅せる!CSSボタンデザインのサンプルコードまとめ
2022-08-02 tue¶
自己紹介 - 関根良紹 - Webエンジニア, バックエンド - フロントエンドはじめることになった
はじめに¶
- PWA・LIFFアプリ・LINEミニアプリの比較
- MidJourney https://twitter.com/8co28/status/1553611630252277760
- 「クリエイティブ系は『正義』がなく怒られが発生しないからGoogleなども遊びやすいのでは」
- Web Design in 4 minutes https://gigazine.net/news/20161004-web-design-in-4-minutes/
- 本サイト https://jgthms.com/web-design-in-4-minutes/
- 2022年のモダンCSS改
- 時間が余ったらmy-diary.orgのメモから適当に引っ張ろう
PWA・LIFF・LINEミニアプリの比較¶
概要¶
- PWA(Progressive Web Application)
- アイコン用の画像と設定ファイルを2-3個追加するだけで作れる
- 気分としては簡易アプリ作成
- オフライン利用のためにHTML・CSS・JSをローカル保存(?)
- 通知もできる
- LIFFアプリ(LINE Frontend Framework)
- LINEの認証が使える
- LINEからユーザーのデータが取れる
- 単なるHTML・CSS・JS
- LINEのAPIと連携すればLINE Payによる決済もある
- LINEミニアプリ
- LINE内のアプリとして登録できる: 楽天とモールの例え
- 決済などの強い機能と連携しやすくなる
- PWAとLIFFアプリ・LINEミニアプリは共存できる
- どちらもWebアプリが基礎
- 設定ファイルを追加したりAPI連携したりするだけ
PWA¶
https://www.seohacks.net/blog/2809/¶
# 概要¶
- 三行(四行)で
- モバイル向けサイトをスマホアプリのように使えるようにする
- ネイティブアプリのようにスマートフォンのホーム画面に導線を置ける
- ユーザーエンゲージメント向上やUX改善の効果に期待
- アプリストア経由で新規ユーザーに接触できない
- 手間がかかるわけでもないので組み込んで損はない
- モバイル向けサイトをスマホアプリのように使えるようにする
- オフライン利用・プッシュ通知対応のブラウザAPI(Service Worker)を使っているWebサイト
- 実際「インストール」できる
- 例: https://vocmem.vercel.app (そのうち移行するがいまはまだ触れる)
- キャッシュ利用
- URLバーがなくフルスクリーン
- 実際「インストール」できる
# メリット¶
- 開発側
- アプリの審査がない: ただのWebアプリ
- OSごとの対応不要
- 標準Web技術で十分
- 本体はふつうのWebサイト: 検索からの流入あり
- ユーザー側
- 容量が少ない
- 表示が速い
- オフライン対応
# デメリット¶
- ネイティブアプリの豊富な機能は使えない・使いにくい
- 最近はカメラアクセスなどもできるようになったそうだが
- ネイティブ特有の機能を使わないなら関係ない
- アプリストア経由で新規ユーザーに接触出来ない
- iOS対応が弱い(iOS自体のPWA対応が遅い)
- プッシュ通知できない(2022秋に対応予定?)
- インストールに一手間必要
- 確かiOSだとSafariからメニューを開いて「ホーム画面に追加」させないといけない
# まとめ¶
- 対応に対するコストはほぼ0
- やっておいて損はない
- インストールさせようと思うと一手間いるが, スマホのホーム画面に置ける強さがある
- SEO上の効果はどう(?)調べておこう
- 通知が使えないとしてもメルマガやLINEなど別の手段で連絡すればよい
LIFFアプリ¶
- LIFF: LINE Front-end Framework
- LIFFで作られたWebアプリをLIFFアプリと呼ぶ
- LINEミニアプリはLIFFアプリの機能強化版
- 誰でも開発できる: LINEミニアプリはリリース時にLINE社の審査が必要
- LIFFアプリはLINEログインやチャットでのテキスト送信が主な機能
- LINEPayAPIと連携すれば決済もできる
- LINEミニアプリは予約・通知・決済などいろいろな機能がLINEの仕組みとして簡単に使える
- LINEと簡単に連携できて, WebブラウザはもちろんのことLINE上でも動くアプリが作れる仕組み
- 簡易版LINEミニアプリ
- 決済などのクリティカルな機能は使えない
- LINEの認証は使える
- (確か)メールアドレスも取れる
- ただしサーバー側実装が必要
LINEミニアプリ¶
- 用語
- スーパーアプリ: LINEやPayPay
- ミニアプリ: LINEやPayPay内部にあるサードパーティ製のアプリ
- 楽天をウェブ上のモールとみなす気分
- 参考
ミニアプリの始まりは、WeChatのミニプログラムと言われます。 中国で圧倒的な人気で10億以上のアカウントを持つといわれるWeChatを運営するテンセントは、いち早くこのアプリ市場の流れを先読みし、2018年のはじめに、WeChatのアプリ内のアプリをミニプログラムとして提供し始めました。 これにより、WeChatのユーザーは、WeChat内での買い物や予約、友だち間の送金やゲームなど、他のアプリをダウンロードすることなく企業のサービスを利用できるようになりました。
ミニアプリのメリット¶
- 最初に図を見よう: 参考
- 実店舗との連携が一つのキモらしい: 予約や通知
- 気軽に使える
- 個別にアプリをインストールする必要なし
- LINEやPayPayのようにユーザーが日常的に使っているアプリ上で起動する
- ユーザーは用途別にアプリを起動しなくてよい
- ユーザ情報・クレジットカード情報を個別に入力する必要もない
- 気軽に開発できる
- Web標準のスキルセットであるHTML/CSS/JavaScriptで開発できる
- AppStore・GooglePlayなどのアプリケーションストアを通さなくてもよい
- 現状ではLINE社の審査はある
- うまく作れば(メインのGUIは据え置き, データはWebのDBアクセス)UIの変更がない限り再審査不要
- ユーザの利用頻度の高いアプリから提供できる
- ユーザ認証を0から実装せずにスーパーアプリでの認証情報を使える
- Webアプリ: Web系開発者にとってはネイティブアプリの開発知識なしで開発できる
- ネイティブアプリと違ってKotlin・Swiftなどを覚えなくてよい
- インストールさせる手間もない
- LINEとの連携がよい: LINEを主な連絡手段にしているならLINEから出ずにいろいろできる
ミニアプリのデメリット¶
- LINEの審査が必要
- ネイティブアプリ・インストールしたPWAと違ってホーム画面に出せない
数学・科学の英語記事を読もうの会¶
はじめに¶
アインシュタインの原論文を多言語で読もうの会を運営して気付いた点を補足すべく, 2021-06から二ヶ月の試験企画として立ち上げた. もともとは「Wikipedia の数学・物理系の英語記事を読んでみようの会」というタイトルにしていたが, もう少し広くした方がよさそうなので勉強会の暫定タイトルとしてつけてある.
もしあなたがこの企画にご興味があるなら, お問い合わせなどから連絡してほしい. Twitter (の DM) などでの他の手段でも構わない.
わかったことを簡潔に: 読むのが大変かつ長くて飽きる¶
半年以上勉強会を続けてきて気付いたことがいくつかある.
アインシュタインの原論文を読む勉強会はこれはこれで非常に勉強になり, 続ける意義も十二分あるのはよくわかった. 何より私が楽しく, 自身の勉強のモチベーションにさえなる.
しかしその一方で問題・課題もある. 一つは原論文は 31 ページとかなりボリュームがある. ちなみにいろいろな目的から多言語でやっていることもあり, 1 文 (1 ページではない) を読むのに少なくとも 3 時間はかかる. 1 文だけでも十分な情報量があり, それはそれでいいのだが, やはり短くても文章全体を読み切ったという達成感も大事にしたい. 端的に言えば飽きてきてしまう人もいるだろう. 語学と物理・数学を一緒にやるのも非常に大変だという話もあるにはある.
Wikipedia の英語記事を読んでみようの会¶
アインシュタインの原論文の勉強会はこれで続けるが, その一方で別の語学勉強会を次のような企画を試してみたい. タイトルの通り, 「Wikipedia の英語記事を読んでみようの会」だ. もちろん数学や物理などの記事を英語で読む. Wikipedia を選んだのはやはり多言語展開を念頭に置いている. 少なくとも日本語では英語のページを訳した記事もあり, 他の言語でも同じようなことがあるかもしれない. そして明らかに同じ言葉や概念に対して他の言語での説明がある, またはある可能性が高いため比較もしやすいからだ.
よくリスニングしろ・ペーパーバックを読んでみろといった指南がある. 興味がある続くモノとして映画もいいなどと書いてある. しかし理工系の人間は困るはずだ. そんなものに興味はないと. もちろん人の趣味は多様だからそうした題材でも楽しめる人は確実にいる. しかし一石二鳥で数学・物理・プログラミングと一緒に語学が勉強できればいいのに, そう思う人もまた一定数確実にいるはずだ. 何より私がそうだし, 私と同じ趣味を持つ人が一定数いることもはっきりとわかっている.
現代の英語学習環境を活かす¶
最近は英語での数学や物理の講義も YouTube に上がっている. 例えばフィールズ賞受賞者の Borcherds が自分のチャンネルに動画をあげていさえする. 以前よりは格段に手に取れる英語を含めたコンテンツが増えていてこんなに嬉しいことはない.
しかし語学の基礎知識に不安があり, 実際に何となくは読めるがきちんとは読めないという人も多いのではないかと思う. 本だと読み切りたくなってしまうだろうが, 量が多いといろいろな事情から読み切れずたいてい途中で終わってしまう. 程々の分量の文章が読みたい・読み切りたい, そう思うことはないだろうか.
提案¶
そこで実際に数学・物理をテーマにした Wikipedia の英語記事を読んでみてはどうか, そういう提案をしたい. Wikipedia はその性質からある単語や概念に関して程々のボリュームで解説がついている. 数学や物理のネタを筆頭に, 興味ある記事を読んでそれで語学も一緒に勉強できたらこんなお得なことはない. これを実現させようというのがこの企画である.
私は「大人の高校」または「理系のためのリベラルアーツ・総合語学」を目指したサービスを企画・立案・展開している. そのうち有料化して本格化しようと思っている. いまはこれを狙ってモニターを募集しつつ試験的に少人数で様子を探っている. 何か 1 テーマ, 具体的に Wikipedia の記事を読んでどんな感じになるか調べたい. そんなにたくさんいても仕方ないので 2-3 人集まれば実際にテストをする. 毎週 1 時間で 2 ヶ月くらい試験的にやってみたいので, 興味がある方はお問い合わせなどから連絡してほしい. 何を読むかは集まったメンバーと相談して決めたい.
今回の企画はあくまで語学に比重があるので, 数学や物理に関する話は深くは議論しない予定だ. 数学・物理もきちんとしたいという方は別途相談してほしい.
追記その1: メンバー募集のやり取り¶
いったん参加者を募集したところ次のようなコメントを頂いた.
理工系の英語の教材としては, 科学雑誌の読み物記事なども個人的には面白いと思います. 英文解釈の良いトレーニングになります. ご参考まで.
いろいろなところに書いているように, 理工系のためのリベラルアーツ・総合語学の裏テーマとして, 語学を軸にした文系人のための理工学入門も考えている. 実際, 私が所属している語学コミュニティの人で, 英語の読解・文法学習用にアインシュタインの原論文を多言語で読もうの会の動画・コンテンツを紹介したら次のようなコメントを頂いた.
あれ程理科や数学が苦手だった自分に, まさかあのアインシュタインの原論文を読める機会があるとは思わなかった. ほんの一部ではあっても本当に嬉しかったし, この喜びは誰かに共有したい.
語学講座の中では限界もあるとはいえ, 必要な範囲で数学・物理をはじめとした理系知識の話をするのは大事なことだ.
さらに次のような話も出た.
今まではそのまま「資産」にできるページを考えていましたが, 雑誌の候補紹介記事を見たら, 何というか文系の人向けには小学校・中学校レベルの理科的な話の方がよさそうだという霊感を感じました. 普通に英語自体を勉強したくて, そのネタとして数学・物理を使うか, 語学から数学・理科に迫るかで何を使うか変えるとよさそう, という気分です.
科学といってもいろいろで, 言語の発達に関するものだったり, 意外と身近なテーマがあり, また, 英語自体も定評があるので, 文理問わず, 英語を勉強したい人, 教養を得たい人に需要があるかと思います. 日経サイエンスには「英語で読む日経サイエンス」という日英対訳のページがあります.
理工系のリベラルアーツをうたう以上, 数学・物理・プログラミングだけでは羊頭狗肉である. 私自身, 興味関心の幅を広げていかなければ口だけ人間になってしまうという危惧もある. そこで上の記事で引用されているいろいろな記事まで射程距離に入れることにし, 試験的な会のタイトルも変えてみた.
追記その2: 勉強会の進め方¶
今回の試験企画に関する話と, 今後展開する勉強会の内容とがある.
基本: 2 ヶ月で進めるところまでしかやらない¶
これを基本にしたい. 1 つの記事が全て読み切れなくても気にせずそこで終える. 2 ヶ月 1 テーマと区切ってモチベーションを保つのが目的だからだ. もっと言えば, 途中までしか読めなかったからと言っても, そこまでは頑張って読んだわけで, それ自体が大きな成果だからだ. 2 ヶ月間 1 テーマをきっちりやりきった事実を大事にしてほしい. 逆に言えばそれでおさまる程度のコンテンツを選ぶのも大事だと思っている.
基本的には各参加者にはいわゆる生涯学習として自分自身で勉強を続けてほしいと思っている. この企画はあくまでその補助の一つで, 一人では大変なことを皆で乗り切ろうという部分に焦点がある. 残った部分は興味があれば自分で引き続きやってみてほしい.
もちろんテーマによって継続でやった方がいいこともあるだろう. それはそれとして適切に対処したい. ただし今回の試験企画のメインテーマはそこではない.
今回の試験企画: 単語の深掘り¶
「アインシュタインの原論文を多言語で読もうの会」で文法をゴリっとやっているため, どちらかと言えばそこで切り落とした単語の深掘りをやってみたい. 英語はいろいろな言語の要素をチャンポンにしためちゃくちゃな言語で, 少し掘るといろいろな言語の要素が顔を出す. 特に単語・語源調査の面からそこに迫りたい.
ただし文法的にきちんと追いかけるのも大事だと考えてはいる. これは実際に参加名乗りを挙げてくれた方からの次のコメントによる.
できれば文法解説も入れて「語彙と文法の両輪があってはじめてきちんと文が読めますよ」ということが伝えられるような講座だと嬉しいです.
雑誌の文章には, アインシュタインとはまた別の読解の難しさ (楽しさ) がありそうなので. 一見やさしそうなのに実は難解な構文が多々出てきて, 必要に応じてスラッシュや矢印などのマークを入れながら解析しています.
今回実際に読む文章がどこまで文法的にハードかにもよるが, 構文・文法解析が必要なところには適切に対処したい.
さらに追記: あくまで実験・検証的な企画¶
これは私自身が勉強を楽しむこと, 教育を通じて自分自身の理解も深めること, そして勉強会を気楽に開催するための工夫といった目的がある. さらにもう一つ, そもそもこの試験企画を立ち上げようと思った目的は, 相対性理論の原論文を読む会の文法処理が重過ぎてワンテーマが読み切れないことにある.
少し準備してみたところ一番最後のそもそも部分, つまりワンテーマ読み切り勉強会にするのが恐ろしく大変そうになることがわかった. これは単語の深掘りをやろうとしたときの問題だ. 多少は触れたいがこれとワンテーマ読み切るのをどう両立するかが課題になっていることがわかった. いま考えているのは一回さらっと全体を読んでから, 必要に応じて深掘りするのはどうかという部分. 特にせっかくだから各記事の科学的な内容自体も勉強したいという思いもある. 本格始動させてみてわかることもあるので, 2 ヶ月間いろいろな試行錯誤をしていく.
ENERGEIA¶
オンライン部活サイトENERGEIAで「数学和尚の数学かけこみ寺」をやっています.
趣旨¶
部活詳細ページ¶
まず読んでほしい文章があります¶
何はともあれ, まずは次の文章を読んでみてください. リンク先は6ページのPDFになっています.
この文章は山形大学の数学科が主催した数学エッセイコンテストで入賞していた作品です. 簡単にあらすじだけ書いておくと, ご家庭の事情もあって中卒で稼業を継いだ方が, お子さんの就学を機にお子さんと算数・数学の勉強をはじめた話です. 「数学とこんな付き合い方もできるのか」とはっとさせられる, 穏やかな筆致のとても素敵な文章です.
数学をしよう¶
さて, ここは特に算数から中学・高校程度の数学を勉強する部活です. お好みで好きな内容を好きなペースで勉強してください. 日常の中に数学を溶け込ませることを目標に, ガチガチにやるよりもダラダラとのんびりみんなで算数・数学しようと思っています.
必要に応じて部長によるオンライン授業をすることなども考えていますが, 基本的には「教え合い」を中心に考えています. 何故かというと, 人に教えるのが一番効果的な勉強法だからです. 頻度などは未定ですが, 定期的にオンラインのゆるい勉強会の開催も考えています. なかなか一人では勉強が進まないでしょう. そこを埋めるべく, みんなでのんびり数学に触れる時間を作るのが目的です.
簡単な自己紹介¶
私は学部は早稲田で物理を, 修士は東大の数理科学研究科で数学をしていました. 社会に出てからはIT系のエンジニア・プログラマーとしてはたらいています. そうした経験をもとに, プライベートでゴリゴリに専門的な数学・物理に関する情報発信やコンテンツ制作・販売をしています. 最近は理論物理学者に市民が数学を教えたり, アインシュタインの特殊相対性理論の原論文を読むことを通じて英語・ドイツ語を含む多言語の勉強をする勉強会や, プログラミングの勉強会を主催しています.
これらは概要からわかる通り, かなり専門的な内容ばかりです. 一方, 私の活動の原点は「昔ほしかったモノが今でもない. それならもう自分で作る」です. 私の周囲にもいわゆる理系人材はほぼおらず, 理工系の内容に関して誰にどう相談したらいいかわかりませんでした. 今思えば理系科目の教員は理系だったわけで, そうした人に相談すればよかったのですが, そうした発想さえ持てませんでした. そのくらい発想も情報もなかったのです. そして大学・大学院でいわゆる超進学校出身の学生の話を聞いて愕然としました. 彼ら・彼女らは親・知人・友人のネットワークから大量の情報をもらえています. 本当に, ごくごく単純に, これを「ずるい」と思ったのです. 私もそんな環境がほしかったと. そうした経緯があり, いま理工系を志す中高生向け教育に関して私の地元の区議に提案を出していさえいます. いまは新型コロナ対応で区役所の教育部門にも余裕がないようで, 話が止まっています.
しかし個人で動けることはいろいろあります. そんな活動の一環としてここでは特に, 最終的に本当に中高生向けに転用できるコンテンツやノウハウを整備したいと考えています. それが算数・中高数学を中心にしたこの部を立てた理由です.
もう少し詳しく部活の内容¶
もしかしたらあなたは大学レベルの数学や物理を勉強したいと思っているかもしれません. そうした方が参加してくださっても構いません. それはそれなりに対応します. ただ, あくまでもメインは中高数学までを想定しています. 文系プログラマーで最近の機械学習関係で数学を復習しないといけない, みたいな方も歓迎します.
私は重荷, コンテンツ制作の進捗がよろしくない中高数学とプログラミングに関わる話, 数学・物理のための英語といった部分で, 広い意味で数学に関わる内容で部活していこうと思っています. 毎日「これがわからん」と適当にのんびりやっていると思います. 何か要望があれば, それに関する小ネタや数学の応用の話などもしようと思っています.
他の人の勉強の様子を見ているだけでも楽しいでしょう. 「こんな分野や応用もあるのか」という新鮮な驚きもあるかもしれません. 私自身, 物理という形での数学の応用についてはいろいろな話ができます. 数学・物理に関する相談にも気軽に乗りますし, そういうプチ勉強会・座談会・雑談会があってもいいと思っています.
トップ固定投稿¶
はじめにやってほしいこと: どんな人がどんな意図・目的をもって参加しているのか知りたいので、ぜひ自己紹介シートに記入をお願いします。
意図的に他の人の内容も見られるようにしているので、興味が近い人がいれば、ぜひ誘い合って勉強してみてください。 他にも何か思いついたら随時追記します。
ぜひ、日々二秒でいいので「数学」をしてください。そしてその結果・成果をぜひ投稿してください。 いっぱい投稿が入るとごちゃごちゃしそうなので、まずは前日または当日の私の投稿のコメントに書くようにしてください。
ここでいう「数学」は、ENERGEIAとこの部活にアクセスして「数学」の文字を見るだけでも十分です。数学をやるなんていうのはふつう凄まじく精神的な負荷がかかると思うので、このくらいの軽いところから始めるので十分です。
最後に, 私が作ってきたコンテンツで適当な形でまとまったコンテンツを紹介しておきます.
- コンテンツ一覧
- TODO: 中高数学系のミニ講座一覧から具体的なミニ講座へのリンクを張る
では数学を始めましょう!
イベント(勉強会)の記録¶
2021-05-02¶
GWなので休み.
2021-04-25¶
予定¶
新入社員や学生がPython本を買い込む季節だけれど、この東大のPython入門は無料公開。scikit-learnについても説明されている Pythonプログラミング入門 東京大学 数理・情報教育研究センター
MOOCSはMITとStanfordの独壇場に見えて、東大も社会に対していいサポートと動きをしていると思う 東大が無料公開している超良質なPython/Data Science/Cloud教材まとめ (*随時更新)
実際¶
語学コンテンツの整理をした.
2021-04-18¶
最初だけ参加者一名. ただし途中で抜け. Project Eulerの解答に関して簡単に話をしてみたらいろいろ不備が見つかったので追記した.
2021-04-11¶
参加者がいなかったので適当にコンテンツ作成タイム.
2021-03-21¶
参加者一名. 適当に機械学習系の数理に関する話をした.
2021-03-14¶
部活の趣旨や私の活動に関して改めて説明.
- 関根(部長)の最近の活動の概要を話してみた
- どんなことをしたら面白そうか聞いてみた
- 各人ごとの興味に合わせた応用の話とか
- 実際に作っているコンテンツがあるのでそれの紹介
- もっと中高数学をやろう:既存コンテンツもきちんと紹介しよう
- スマホにも入っているGPS地図と一般相対論
- プログラミングと絡めた話, AI・人工知能(機械学習)の話
- 離散数学ネタ:計算幾何に関わる話とか
理論物理学者に市民が数学を教えようの会¶
コメント¶
これは理論物理学者でもある松尾衛さんとの公開勉強会の記録です. 松尾さんからのコメントのいくつかはこのページにまとめられているので, こちらも参考にしてください.
7/12 以降は有料での指導をすることになり, そちらはクローズドで進めることになりました. 公開前提で進めていた過去の動画・資料は公開したままにしておくので, ぜひ有効活用してください.
基本的な URL リスト¶
- 動画はYouTubeで無料公開中: YouTubeの動画リスト
- 資料の試験公開: 超関数論の気分
公開勉強会タイトル一覧¶
これは YouTube の動画のタイトルでもあります.
- 2020-09-28 摂動論の謎 物理の摂動論と数学の摂動論 微妙な緊張関係と物理
- 2020-10-05 物性の摂動論 自己共役性と摂動 その数理と物理
- 2020-10-12 水素原子と場の量子論 量子力学の空間設定と代数学への誘い
- 2020-10-19 赤外発散処理のための関数解析入門 位相に関わる諸相
- 2020-10-26 線型代数・微分積分の復習 両者をミックスさせるとどうなる?
- 2020-11-02 関数解析と物理 場の量子論の様々な数理と物理
- 2020-11-09 ヒルベルト空間への道 モデルケースとしての実数論
- 2021-01-18 モデルケースとしての実数論 解析学のための集合・位相入門の入門
- 2021-03-15 超関数論入門 モデルケースとしての実数論
- 2021-05-03 超関数論の気分 定義のあとの注意, 落穂拾い
- 2021-05-17 不等式がなぜ大事か? 面積からの集合論入門のイントロ 理論物理学者に市民が数学を教えようの会
- 2021-07-12 測度論に向けた準備 面積からの集合論入門のイントロ 理論物理学者に市民が数学を教えようの会
中高数学+物理+プログラミングのオンライン勉強会¶
概要¶
勉強会用に準備した資料をせっかくなので公開. Zoom でやっていて動画も撮っているが, それは私以外の参加者の声も入っているので非公開.
もともとは次のコンテンツのブラッシュアップのためなどいくつかの目的で, 必要なことを教えるので協力してくれないか, という感じではじめた勉強会.
周辺知識を揃えないとつらくなってきたので, IT 関係の基礎知識も紹介するようになった. あと課題もあると嬉しいという話があり, 実際に中高生に勉強してもらうときも参考になるだろうと思い, 課題も毎回作って適当に解説もしている.
ipynb to md¶
必要なら nbconver で markdown 化. ブログにあげるときは面倒なので画像はアップしていない.
1 2 |
|
企画趣旨¶
はじめに¶
いま, 1 年くらいの長期にわたって知人と少人数でゆるく統計学・機械学習系の勉強会をしている. そこからのスピンオフで Python と基本的な数学に関する勉強会をやろうと思っていて, その内容に関する事前説明資料として記事にする. 説明資料が長文になるのでその共有のためもあり, 他の人もそれぞれで同じようなことをやってほしいのもあり, この計画が参考になるだろうと思ったのもある. 私が持っているコンテンツを提供できるので, 必要なら連絡してほしい.
バリバリと進んだことがやりたい中高生向けの数学・物理・プログラミング教育を進めようと思っていて, いまちょうど新型コロナで話が潰れているが, 実際に地元の知り合いの政治家・自治体にも提案はしている. Jupyter notebook でコンテンツを作っていて, まだ完全にチェックできていないオンラインのプログラミング環境の検証も兼ねている. 経験上も慣れていない人がプログラミング環境をローカルに作るのは本当に大変なので, Google Colabolatory などプログラミング環境をオンラインで完結させたい. よくも悪くも時代がそうなっていくだろうというのもある.
言語として Python は好きではないが, 事実上の入門デファクトという感もあるので, とりあえずそこにした. 数学・物理系で入門レベルの情報がとても多く, それなりに質もあり, バリエーション豊かなところは最THE高とは思う
ちなみにさらなるコンテンツ作成のために次の GitHub リポジトリにコードをためていて, それで生成した動画は YouTube に上げている. 興味があればぜひ眺めてほしい.
- 数値計算関係の GitHub https://github.com/phasetr/mathcodes
- YouTube のプレイリスト https://www.youtube.com/playlist?list=PLSBzltjFopraTJUYDMXnj1GdYCdR0QyzU
さらに次のページに数学系の無料の通信講座をいくつか置いてある. 登録用のページだけでも数学・物理の勉強をする参考になると思うので, これも興味があれば眺めてほしい.
大方針¶
私の趣味・守備範囲もあるので, 数学・物理方面からプログラミングに入る. 基本的な方向性としては次の無料通信講座と, その続編として作ったコンテンツを基礎にして展開する.
次の大方針で進める.
- まずは細かいことはさておき, プログラミングでできることをゴリゴリ紹介する
- まずはお絵描き中心
- 離散化すれば四則演算でしかないので微分・積分をダイレクトに数値計算する形で進める
- まずは波動方程式・拡散方程式を見せる
- 波と拡散というイメージと視覚がマッチした対象だから
- まずは概要を掴むのが目的なので本質的な数学部分が難しくなるのは気にしない
- 何をするにも慣れが必要なので, とにかく浴びて慣れてもらうのが目的
- お絵描き+数値計算で Python プログラミングの気分を掴む
- 少しずつプログラムの詳細を見ていく
- 暴力的な量の四則演算を進めるだけなので「数学」の話は最低限に留めながら進める
- ある程度慣れてきた段階でプログラムと並行して数学の話をする
概要・議論の順番¶
いま考えているのは次のような感じ.
- ある意味での終着点, 波動方程式・拡散方程式の数値計算結果の動画を見る・作ってみる
- 偏微分方程式はわけわからなくても最終的に計算させる離散化の式はそれはそう, という感じのはずなのでそれを紹介する
- 他にも微分方程式でどんな現象が表せてどんなことができるか紹介する
- 常微分方程式の紹介
- ホジキン-ハクスレー方程式 (大雑把に言ってノーベル医学・生理学賞の対象 (らしい)
- フィッツヒュー・南雲方程式
- 放射性物質の崩壊の方程式
- ロジスティック方程式
- 単振動の方程式
- 微分方程式の数値計算の観点から見た中高数学の復習とプログラムへの落とし込み
- 常微分方程式の紹介
- 中高数学の復習をしつつ Python プログラムへの落とし込み
いったん別のところで組み上げたコンテンツがあるので, それをブラッシュアップしつつ進める予定. その意味では目次もある: 中高数学の復習の部分が詳しいだけではある. 質疑応答しつつ, 適当にプログラミングについても補足説明を入れていく.
ちなみに波動方程式や拡散方程式の数値計算結果は次のような感じ.
とりあえずはこんなところか. 録画しておいて, YouTube にも公開する予定. 他の人が勉強会をする参考になるはずだから, 質問・コメントが来たらこちらにも回答を追加していこう.
2020-04-19課題¶
はじめに¶
- コンテンツの案内ページ
- GitHub へのリンク
00-introduction_02_jupyter.ipynb
を一通り読んで Jupyter notebook(大雑把には Google Colab も同じ)の概要を把握してください。特に次の点に注意して読んでください。- コードセルとテキストセルがあること
- 文章を書く(まさに「このセル」)はテキストセル
- プログラムを書くのはコードセル
- コードセルには「実行」という概念・操作がある
- Colab の操作についての参考ページメモ
- コードセルとテキストセルがあること
- テキストセルを作ってください。
- テキストセルに何か文章を書いてみてください。文章は「あ」だけでも構いません。
- TeX 形式で次のような式を打ってみてください。「このセル」をダブルクリックで開くとどうすれば式が打てるかわかるので、そのコピペで構いません。他にも資料を漁ってどんな風に書くとどう表示されるか眺めてみるといいでしょう。
$$\int_0^1 f(x) \, dx$$
- コードセルを作ってください。
01-basic_01_fundamental.ipynb
を参考にprint("Hello, World!")
を実行してみてください。「実行結果出力欄」に「Hello, World!」と出れば成功です。
- もう 1 つコードセルを作ってください。
01-basic_03_matplotlib.ipynb
を参考に、グラフを 1 つ書いてみてください。コピペでグラフが出てくることを確認するだけで十分です。- お好みでの追加タスク:いろいろ推測しながらプログラムを少しいじってみて、直線以外のグラフを描いたり、グラフを描く範囲を変えてみてください。
プログラムを勉強するときの注意¶
- プログラミング「言語」と言われるように、いわゆる語学を勉強するときのコツがある程度流用できます。
- 「英作文は英借文」というように、既に動いている(通じる)「例文」をコピペしてみましょう。そこからパーツを少し変えてみてどうなるか試します。
- プログラミング言語は機械が意味を判定するので、文法に厳格に沿っていないと「きちんと文法通りに話せ」と怒られます。
- ある程度まで来たらこの文法もきちんと勉強する必要があります。
- よほどの趣味を持っていない限り、文法の勉強は初学の段階であまり面白いものでもないので、まずは
01-basic_01_fundamental.ipynb
に書いてあることを雑に眺めて気分を掴んでください。 - 公式のチュートリアルも参考になります。
- Web 上の資源の問題として、リンクがたくさん張られている関係でいろいろな所に飛ばされる(飛びたくなる)ことがあります。本だと自分でページを飛ばさない限り一直線の道を歩むしかないので、Web 上の資源で勉強すると気が散るなら本を買ってざっと眺めるのも一手です。
- 一般の語学でも実際に読み書きしないと身につかないように、プログラムも実際に読み書きしないと身につきません。Jupyter notebook 配布のいいところはすぐにコード実行できるところにあります。パチパチ実行してみてください。
解答例¶
参考:TeX¶
$f(x)$
のように 1 つのドルマークで囲むと地の文に普通に埋め込まれる式として $\int f(x) dx$ が書けます。$$\int f(x) dx, \left{a\in A \mid a>0, b>0 \text{かつ} c>0\right}$$
と 2 つのドルマークで囲むと別行立ての式 $$\int f(x) dx$$ が書けます。\begin{align} \int f(x) dx \end{align}
などと書くと、数式環境下での式が書けます。 \begin{align} \int f(x) dx \end{align}- 複数行ある複雑な式を書くときは数式環境下で式を書きます:参考リンク。
- 数式環境と
$$\int f(x)dx$$
型との違い・使い分けについては次のように考えましょう. $$\int f(x) dx$$
はあくまで地の文に埋め込みたいが縦・横に長い式なので別行立ての方が見やすい場合に使う\begin{align} \int f(x) dx \end{align}
は複数行にわたるハードな式展開・計算を書くときに使う.
$\epsilon$ $\varepsilon$
$$A = (a_{ij}) = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \ a_{21} & a_{22} & \cdots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix}.$$
参考:Markdown¶
- テキストセルは TeX の他, markdown という形式で書けます.
- 参考リンク
- 参考リンク
- 参考リンク
- 段落分けや文字の強調などはこの形式に沿っています.
- 主に技術系の文書を書くために使われる書式なので, 過度な装飾はできません (そもそもそういう機能がない).
コード例¶
- sympy のサンプルを紹介します。
- Google Colab 上ではオリジナルの Jupyter より面倒で、追加処理が必要です。
- オリジナルの Jupyter では動くのに Google Colab 上では動かない (らしい) プログラムもあります
- 例:4 次方程式の解の公式の表示.
- 実際に一通り眺めて sympy をできる限り Google Colab 上でも動くようにするのはこの勉強会の目的の 1 つです.
```python !pip install --upgrade sympy
import sympy as sp from sympy.plotting import plot from IPython.display import display
def custom_latex_printer(expr, options): from IPython.display import Math, HTML from google.colab.output._publish import javascript url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML" javascript(content="""window.MathJax = { tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true } };""") javascript(url=url) return sp.latex(expr, options)
sp.init_printing(use_latex="mathjax", latex_printer=custom_latex_printer)
x = sp.Symbol('x') expr = x*2-12x+8 display(expr) ```
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
$\displaystyle x^{2} - 12 x + 8$
python x = sp.Symbol('x') y = sp.Symbol('y') expr1 = 2*x + 3*y - 6 expr2 = 3*x + 2*y - 12 display(expr1) display(expr2) #display(sp.solve((expr1, expr2))) # Math Processing error になる
1 |
|
$\displaystyle 2 x + 3 y - 6$
1 |
|
$\displaystyle 3 x + 2 y - 12$
python display(sp.solve((expr1, expr2)))
1 |
|
$\displaystyle \left{ x : \frac{24}{5}, \ y : - \frac{6}{5}\right}$
- 上の方程式は厳密解として $x=4.8,y=-1.2$ を持つ。
- これの近似解として例えば $x=4.78888888,y=-1.1999999$
python p = plot(-(2/3)*x - 2, - (3/2)*x - 6, legend=True, show=False) p[0].line_color = 'b' p[1].line_color = 'r' p.show()
1 2 3 4 5 6 |
|
```python eq1 = x2 + y2 - 1 eq2 = x - y
plot1 = sp.plot_implicit(eq1, line_color="blue", show=False) plot2 = sp.plot_implicit(eq2, line_color="green", show=False) plot1.extend(plot2) plot1.show() ```
1 2 3 4 5 6 7 8 9 10 11 12 |
|
```python import sympy as sp from sympy.plotting import plot from IPython.display import display
def custom_latex_printer(expr, options): from IPython.display import Math, HTML from google.colab.output._publish import javascript url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS_CHTML" javascript(content="""window.MathJax = { tex2jax: { inlineMath: [ ['$','$'] ], processEscapes: true } };""") javascript(url=url) return sp.latex(expr, options)
a,b,c,d,x = sp.symbols('a,b,c,d,x') expr = ax3 + bx*2 + cx + d
display(sp.solve(expr, x, dict=True)) ```
$\displaystyle \left[ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}, \ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}, \ \left{ x : - \frac{- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}}{3 \left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}} - \frac{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{\sqrt{- 4 \left(- \frac{3 c}{a} + \frac{b^{2}}{a^{2}}\right)^{3} + \left(\frac{27 d}{a} - \frac{9 b c}{a^{2}} + \frac{2 b^{3}}{a^{3}}\right)^{2}}}{2} + \frac{27 d}{2 a} - \frac{9 b c}{2 a^{2}} + \frac{b^{3}}{a^{3}}}}{3} - \frac{b}{3 a}\right}\right]$
2020-04-19オンライン数学勉強会用イントロ¶
はじめに¶
まとめ¶
- 勉強会の案内ページ
- コンテンツの案内ページ
- GitHub へのリンク
- 目次の順序で進める
- 時間が余ったら適当に今回出てきた数学またはプログラミングの話を詳しく
事前準備:sympy インストールとチェック¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 |
|
$$x^{2} - 12 x + 8$$
はじめの注意¶
- 吃音があるので聞きにくいと思います。
- 言いにくい場合は文字で書きます。
- いろいろ試験的な取り組みです。
- この資料はあとで配ります。
大方針¶
- Python でプログラミング
- 将来に向けたいろいろなテストを兼ねる
- 中高生または中高数学復習用に作ったコンテンツのテスト・流用
- 試験的に Google Colabolratory を利用
- いま使っている「これ」
- ローカルの環境構築がいらない
- TeX の形式を使うと式もきれいに書ける:$$\int_\Omega f(x) \, dx$$
- 何回くらい・どのくらいの期間になるかは不明
- なるべくゆっくり・ゆるく進める
- 日々いろいろなタスクがある大人向けの勉強会なのでゴリゴリにやると疲れ果てて続かない
- その代わり長期戦でのんびりやる
- 予習はやりたければやる
- 無理がない範囲で、長続きさせることを第一に
- 復習は勉強会の中でやる
- その分ペースも遅くなる
- その遅さが気になるなら予習をしよう
- 復習を自力でやれるくらいならはじめから独学できていると思う
勉強のコツ¶
- 「すぐに理解する・できる」という幻想を捨てる
- 同じことを何度も繰り返して、少しずつ慣れる
- 究極的には「独学」が必要
- そのサポートをするのがこの勉強会の目的
- 細部が詳しい本はたくさんあり、いろいろなレベルの本がたくさんある
- この勉強会の当面の主目的は概要を掴むこと
- 細かいことが気になったら都度調べるなり質問するなりしてもらう
- そしてすぐにわからなくても気にしない
進め方の方針¶
- 細かいことはさておき, プログラミングでできることをゴリゴリ紹介する
- まずはお絵描き中心:微分方程式を解く
- 後の内容も「中高数学のネタを視覚化する」方向で進める。
- 微分方程式に関して
- 高校数学の最終目的地の微分・積分に直結する
- 微分・積分は統計学をはじめとしたその他いろいろな応用でも主力
- 離散化すれば四則演算でしかないので微分・積分をダイレクトに数値計算する形で進める
- 今回、イメージづくりで波動方程式・拡散方程式を見せる
- 波と拡散というイメージと視覚がマッチした対象だから
- まずは概要を掴むのが目的なので本質的な数学部分が難しくなるのは気にしない
- 何をするにも慣れが必要なので, とにかく浴びて慣れてもらうのが目的
- お絵描き+数値計算で Python プログラミングの気分を掴む
- 少しずつプログラムの詳細を見ていく
- 暴力的な量の四則演算を進めるだけなので「数学」の話は最低限に留めながら進める
- ある程度慣れてきた段階でプログラムと並行して数学の話をする
基礎コンテンツの紹介¶
- 中高数学をプログラミングを軸にまとめた。
- この講座ではプログラミング、特に Python については深くは解説しない
- 必要ならその時々の新しい本で勉強すること。
- 古い本を選んでしまうと、最新の環境でその本に書かれたプログラムが動かない可能性がある。
講座の構成¶
- 数学に関わる Python の基礎
- 重要なライブラリ numpy のまとめ
- 重要なライブラリ matplotlib のまとめ
- 重要なライブラリ sympy のまとめ
- 上記ライブラリを使った数学プログラミングのまとめ
- 線型代数:ベクトルと行列
- 微分積分
- 確率
- 統計
- 常微分方程式
- 偏微分方程式
大まかな説明¶
- 最初の第 1 章:Python を使ってどんなことができるかを説明
- 特に Python 自体の基本的な機能とライブラリの使い方を説明
- 必要なコードは各箇所に書かれているので、ここは飛ばしてすぐに本編に進んでも問題ない
- 線型代数以降の各章から、数学・プログラミングが混然一体になった本編がはじまる。
- 常微分方程式の章を先に読んでみるのもおすすめします。
- 次の無料講座を Jupyter の形式にまとめ直したコンテンツ
- 応用からの中高数学再入門 自然を再現しよう 中高数学駆け込み寺
- この講座の前段ともいえる講座で、応用の視点から中高数学の大事な部分を大掴みに説明
- 上記リンク先の登録ページ自体も勉強の参考になるはず。
- 「大事なことは何度でも」の精神
注意・当面の進めるイメージ¶
- 下の 2 つを先にざっと眺める
- 既に無料講座として公開している常微分方程式の章を少しずつ詳しく進める
- 微分積分をやる
環境構築¶
Google Colab¶
- いわゆる gmail のアカウントがあれば使える。
- 「google colaboratory」でググってトップに出てくるページを開けば開くはず
- 公式のチュートリアルもあるので、それを見よう
Python のインストール¶
- インストールのことを「環境構築」とも呼ぶことにする
- 将来の対応を考えて、勉強会では Google Colaboratory で進めてみる
- ローカル(自分の PC)にインストールしたいなら、適当にやる
- 経験上、「素人」の状態で環境構築は本当に大変
- プログラミング・環境構築に慣れていない状態で数学と絡めた環境構築がしたいなら、Anaconda でインストールするのが楽
- Google Colab 前提なのでこれ以上詳しくは触れない
- 本格的にプログラミングするならローカルに環境を作るのは必須
本題:数学とアニメーション¶
定積分のアニメーション¶
- 定積分はグラフが囲む領域の面積
- いわゆる区分求積法:次のように定義する
\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}
- 右辺に注目する
- $\frac{1}{n}$ は単なる割り算
- $\sum_{k=0}^{n-1}$ は $n$ 項足しているだけ
- $\lim$ は $n$ をどんどん大きくしている
- 数値計算でやること
- 十分大きな $n$ で右辺を計算する
- だいたい面積が近似できることを確認する
アニメーション用の基本関数¶
- 次の関数でいろいろやっている:今回詳しくは触れない
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
底辺と高さ 1 の直角三角形の面積¶
- 底辺×高さ / 2 = 1/2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 |
|
参照用¶
\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}
二次関数¶
- $x^2$ を $[0,2]$ で積分
- 面積は $\int_0^2 x^2 dx = 8/3 = 2.6666...$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 |
|
定積分の大雑把なまとめ¶
- どんどん細かくしていくと、細かさに応じて近似がよくなる。
- 近似を上げていった最果てで厳密な値が得られるとみなす。
- 視覚的に確認すると定義の意図が見えやすくなる
- 定義の意図がわかっていないとプログラムを書くのも難しい
1 次元の波動方程式¶
- ひもの左端を揺らしたときのひもの振動(波)の様子を見る
- 波が右端まで行くと反射するところも見られる
偏微分方程式としての波動方程式¶
\begin{align} u_{tt} = c^2 u_{xx}, \quad \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}. \end{align}
- ここで $c$ は定数で物理的には波の速度。
- 物理だとこれをどうやって導出するかも問われる。
- ここではそうした議論はせず、とにかく数値的に解いてみて波を表している様子を眺める
\begin{align} \frac{\partial u}{\partial t} &= \lim_{\Delta t \to 0}\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \ &\simeq \frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \end{align}
\begin{align} \frac{\partial^2 u}{\partial t^2} = \frac{\partial}{\partial t} \frac{\partial u}{\partial t}= \frac{u_t(t+\Delta t,x) - u_t(t,x)}{\Delta t} &\simeq \frac{\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} - \frac{u(t , x) - u(t- \Delta t,x)}{\Delta t}}{\Delta t} \end{align}
最終的に計算する式¶
\begin{align} u(t + \Delta t, x ) = 2 u(t,x) - u(t - \Delta t, x) + \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x) - 2 u(t,x) + u(t, x - \Delta x) \right). \end{align}
- 次の時刻 $t + \Delta t$ の値を計算するのに現在時刻 $t$ とひとつ前の時刻 $t - \Delta t$ の値を使っている。
- 最終的には四則演算だけ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
1 |
|
1 次元の拡散方程式¶
- 真ん中に置いておいた物質が周囲に拡散していく様子を見る
偏微分方程式としての拡散方程式¶
\begin{align} \frac{\partial u}{\partial t}= \nu \frac{\partial^2 u}{\partial x^2}. \end{align}
最終的に計算する式¶
\begin{align} u(t+ \Delta t, x) = u(t, x) + \nu \frac{\Delta t}{(\Delta x)^2} (u(t, x + \Delta x) - 2u(t,x) + u(t, x - \Delta x)). \end{align}
- これも四則演算だけ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
2 次元の波動方程式¶
- イメージとしては膜の振動
- 真ん中を振動させてその波の伝播を見る
偏微分方程式としての波動方程式¶
\begin{align} u_{tt} = c^2 (u_{xx} + u_{yy}). \end{align}
- ここで $c$ は定数で物理的には波の速度
- 1 次元のときとの違いは $u_{yy}$ の追加
- 物理的には次元に依存する議論もあってそれほど簡単ではない
最終的に計算する式¶
\begin{align} &u(t + \Delta t, x, y) \ &= 2 u(t,x,y) - u(t - \Delta t, x, y) \ \quad &+ \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x,y) - 2 u(t,x,y) + u(t, x - \Delta x,y) \right) \ \quad &+ \left(\frac{c \Delta t}{\Delta y}\right)^2 \left(u(t, x,y + \Delta y) - 2 u(t,x,y) + u(t, x,y - \Delta y) \right) \ \end{align}
- 右辺の時刻は $t$ と $t - \Delta t$、つまり過去の時刻しか出てこない
- 過去の時間での情報さえわかれば未来の挙動がわかる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
微分方程式の大雑把なまとめ¶
- (いろいろな都合によって)物理では無限に細かいところで方程式を立てている
- そのままでは計算機に計算させられない
- 微分係数・導関数を定義によって有限化:差と商にわける。
- 有限に落とした部分は無限に細かくしていけば元の微分係数・導関数を近似できていると期待する
次回以降¶
- 常微分方程式のところをのんびり進める
- まずは微分方程式で何ができるのかをのんびり
- 微分方程式で記述できる現象を説明したあと、近似計算の数理を追う
- プログラムに落とし込む工夫を見る
- 数値計算プログラムを大雑把に眺める
- 講座・コンテンツ本体を眺める
質疑応答¶
- 今の時点での目標が何かとか
- こんな感じで進めてほしいとか
- こんなネタを扱ってほしいとか
要望メモ¶
- 小さな課題が欲しい。
- 成功体験を積もう。
- 予習の範囲を出す。
- 式とグラフの対応。いろいろお絵描きしてみる。どうやってプログラムに落とすか確認する。
アンケート¶
毎回アンケートを取っています. 質問や要望がある場合もこちらにどうぞ.
アンケートは匿名なので気楽にコメントしてください. 直接返事してほしいことがあれば, メールなど適当な手段で連絡してください.
2020-04-26 課題¶
はじめに¶
- コンテンツの案内ページ
- GitHub へのリンク
- 少なくとも英語・フランス語・ドイツ語・ウクライナ語・スペイン語では別行立ての式に句読点がついていました. 式に句読点がついている外国語, 特に英語の文献を探してみてください. 英語については arxiv が探しやすいでしょう. ドイツ語についてはアインシュタインの論文, フランス語では Serre の論文あたりが探しやすいだろうと思います.
- 引き続き TeX でいろいろな式を書いてみましょう. arxiv を彷徨って格好よさそうな式を https://mathpix.com/ で TeX 化してみると楽しいかもしれません.
- 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
- (numpy を使って) いろいろな関数のグラフを描いてみましょう.
- (sympy を使って) いろいろな連立方程式を解いてみましょう.
- いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.
- (難しいのでやらなくても構いません) 近似について考えてみましょう. もとの関数 $f$ がほとんど 0 であるにも関わらず, 導関数が 0 とはかけ離れた関数を考えてみてください.
- 近似の基準として差の絶対値の最大値, つまり $\max_x |f(x) - g(x)|$ を取ることにします. この量が小さくても, 導関数に対する $\max_x |f'(x) - g'(x)|$ が小さいとは限らない関数を具体例を作ることで示したことにあたります. エネルギーは適当な導関数によって定義されるので, 近似に関する微妙なさじ加減が少し体験できます. (エネルギーは積分が絡むので実はもう少し面倒です.)
- 数値計算と微分方程式の近似解法についてはシンプレクティック積分法などの話題もあります.
$F(x)=0$ という関数があったとする。 これは導関数の $F'(x)$ も $F'(x)=0$ である。
自分用メモ¶
- 遅延型方程式に対するコメント追加
- 06 の introduction と overview の統合
- 人口論の説明のブラッシュアップ
- import に関する実演:めんどいのでローカルの Jupyter で。
解答例:忘れる前にメモしておく¶
句読点問題¶
- 英語: https://arxiv.org/pdf/2004.10785.pdf
- ドイツ語: Einstein, Zur Elektrodynamik bewegter Körper
- フランス語: Serre, Géométrie algébrique et géométrie analytique
TeX でいろいろな式を書こう¶
\begin{align} \int_0^\infty x^{2n} e^{-ax^2} \, dx &= \frac{(2n+1)!!}{2^{n+1}} \sqrt{\pi} a^{- n - 1/2}. \end{align}
\begin{align} \langle f, e^{-tH} g \rangle = \int_{\mathbb{R}^d} \mathbb{E}_W^x \left[ \overline{f(B_0)} g(B_t) e^{- \int_0^t V(B_s) ds} \right] dx. \end{align}
$\mathrm{R}$
いろいろなプログラムを書こう¶
numpy でのグラフ¶
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 |
|
1 2 |
|
sympy での連立方程式¶
実際に解があるか目で見て確かめる。
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
1 |
|
$$\left [ \frac{1}{2} + \frac{\sqrt{5}}{2}, \quad - \frac{\sqrt{5}}{2} + \frac{1}{2}\right ]$$
微分方程式¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
関数の近似¶
例¶
十分大きな $n$ に対する次の関数があります。 \begin{align} f(x) &= \frac{1}{n} \sin (e^n x), \ f'(x) &= \frac{e^n}{n} \cos (e^n x). \end{align} グラフを描いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
|
コメント¶
これは次のように思ってください。
- 関数 $f_n$ は元の関数 $f_0 = 0$ を(最大値ノルムで)よく近似できている。
- 関数 $f'_n$ は元の関数の導関数 $f'_0 = 0$ をよく近似できていない.
関数の近似はいろいろ難しいところがあって, それだけで論文になるレベルです. 同じ事情はベクトルの近似にもあります. いま流行りの統計学の応用としての自然言語処理でも, 言語の近さを量的にどう判定するかという問題があり, これはまさに言葉をどうベクトルで表現するか, 表したベクトルの近さを何でどう判定するかが問われています. 例えば, よくある「変換候補」遊びは, ある単語を打ち込んだとき, その人の入力の癖という観点から次にどのような語が来るか (どのような語が近いか) を統計的に判定する自然言語処理の事情が絡んでいます. このあたり, 既に「身近」なテーマで, そして身近なことは本当に難しいのでちょっと考えた程度でわかるような話ではありません. 何せ十分な精度で使いやすくかつ役に立ってもらわないといけないので.
2020-05-03 課題¶
- コンテンツの案内ページ
- GitHub へのリンク
- matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
- 線の色を変えてみる。
- 点にマーカーをつける。
- 公式のサンプルやチュートリアルを試してみる。
- 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
- 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
- (numpy を使って) いろいろな関数のグラフを描いてみましょう.
- (sympy を使って) いろいろな連立方程式を解いてみましょう. グラフを描くのもおすすめです.
- いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.
自分用メモ¶
- 遅延型方程式に対するコメント追加
- import に関する実演
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
解答例¶
プログラムのコピペの功罪¶
- プログラムをコピペしているだけだと自力で組み上げる力がつかない
- 私の作るコンテンツは基本的に「世のいろいろなコンテンツのギャップを埋める」ことを目的にする
- 大きな展望を見えるようにする
- 中規模の目標を作る
- 初学の段階で小さいプログラムしか書けないのもつまらない
- 世にある「まとも」なプログラム(numpy などのライブラリ)は規模が大きいので読む・勉強するのが大変
- どのくらいの規模のプログラムでどのくらいのモノが作れるのかを見たい
- コピペであってもプログラムが動けばそれだけで面白い(こともある)
- ある程度先まで見通せないと面白さも見えず、やる気が続かない
- 程々の規模のプログラムをコピペして動かしてみて様子を掴もう
matplotlib¶
- 公式サンプル
- これも公式:サンプルコードもある。
- 次のコードはコッホ曲線のサンプルから。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
TeX でいろいろな式を書こう¶
Poisson 積分¶
\begin{align} u\left(z_{0}\right) &= \frac{1}{2 \pi} \int_{0}^{2 \pi} u\left(e^{i \psi}\right) \frac{1-\left|z_{0}\right|^{2}}{| z_{0}-e^{\left.j \phi\right|^{2}}} d \psi, \ u(x, y) &= \frac{1}{2 \pi} \int_{0}^{2 \pi} u(a \cos \phi, a \sin \phi) \frac{a^{2}-R^{2}}{a^{2}+R^{2}-2 a R \cos (\theta-\phi)} d \phi, \ u(x, y, z)&=\frac{1}{4 \pi a} \int_{S} u \frac{a^{2}-R^{2}}{\left(a^{2}+R^{2}-2 a R \cos \theta\right)^{3 / 2}} d S. \end{align}
いろいろなプログラムを書こう¶
numpy でのグラフ¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
sympy¶
- Colab 上でもローカルの Jupyter でも動くようにしたい。
- $n=-1$ の場合分けも勝手にやってくれてすごい。
1 2 3 4 |
|
1 2 3 4 5 |
|
1 2 3 4 5 |
|
$$\int_{0}^{x} x^{n}\, dx$$
1 2 |
|
1 2 3 4 5 |
|
$$\begin{cases} \log{\left (x \right )} + \infty & \text{for}\: n = -1 \- \frac{0^{n + 1}}{n + 1} + \frac{x^{n + 1}}{n + 1} & \text{otherwise} \end{cases}$$
1 2 |
|
1 2 3 4 5 |
|
$$\begin{cases} \log{\left (x \right )} + \infty & \text{for}\: n = -1 \\frac{x^{n + 1}}{n + 1} & \text{otherwise} \end{cases}$$
1 2 3 4 |
|
微分方程式¶
- フィッツヒュー・南雲方程式
- ホジキン-ハクスレー理論で出てきたモデルの簡略化
- ヤリイカの巨大神経細胞軸索を用いた研究をもとに定式化した神経興奮に関する基礎理論 (Journal of Physiology 117(1952)500-ほか)
- この業績で 1963 年にノーベル賞(生理学医学賞)を受賞
\begin{align} y_{t}&=c\left(y-\frac{y^{3}}{3}-x+I(t)\right),\x_{t}&=y-bx+a. \end{align}
- $I$ は時間の関数で構わないが、以下のシミュレーションでは定数にしている。
- $I$ が 0.34 以上かどうかで解のふるまいが定性的に変わる。
- 力学系の話。
- Colab 上で動画を表示させるところまでできなかったので作った動画は YouTube で:Rust 版動画
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
|
質問メモ¶
- numpy:モジュール名と関数名を「.」でつなぐ
np.array()
関数 - クラスとオブジェクトの話。
- じ
シューティングゲーム - 敵の弾(概念):クラス:弾がどこにあるか x,y - 具体的に画面に現れる弾: x=1, y=1
1 2 3 |
|
1 |
|
1 2 |
|
1 |
|
1 2 |
|
2020-05-10 課題¶
- コンテンツの案内ページ
- GitHub へのリンク
- 曲線を線分で近似できる気分を自分なりに説明してみてください。
- 手書きで絵を描くだけでも構いません。
- 一定のルールにしたがって描かれた曲線を適当な近似的ルールで描くのがプログラミングで描く曲線です。
- 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
- 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
- 引き続きプログラムをいろいろいじってみましょう. 例えば次のような方針があります. コンテンツからのコピペで構いません. 適切にコピペして動かすだけでも割と大変なので.
- (numpy を使って) いろいろな関数のグラフを描いてみましょう.
- (sympy を使って) いろいろな連立方程式を解いてみましょう. グラフを描くのもおすすめです.
- いろいろな微分方程式を解いてみましょう. 実際にコンテンツでも紹介しているように, 分点を自分でも変えていじってみるとのが第一歩です.
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
オブジェクトについて¶
今日は具体的なプログラムというより、今日のメインの話とも少し関係する形でオブジェクトについて少し眺める機会にする。
- オブジェクト指向のオブジェクトの話ではない。
- 必ずしもいつもかっちりした定義のもとに議論されているわけでもない。
- 各プログラミング言語ごとの用語の事情もある。
# 第一級のオブジェクト¶
第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。
問題になる例:言語によっては関数が第一級のオブジェクトになる。(最近の言語は割とこの傾向があるように思う。) 関数が第一級のオブジェクトの言語では「関数の関数」みたいな概念が考えられる。 高階関数と呼ばれる。
「関数の関数」として python の map
を紹介しておく。
python #リスト `lst1` の要素を二倍する lst1 = [1, 2, 3, 4] lst2 = [] for a in lst1: lst2.append(a*2) print(lst2)
1 |
|
```python #次のように map で書ける def prod2(a): return a*2
lst1 = [1, 2, 3, 4] lst2 = list(map(prod2, lst1)) #map はイテレーターを返すので list() でリスト化する print(lst2) ```
1 |
|
python #参考:ラムダ式 lst1 = [1,2,3,4] lst2 = list(map(lambda x: x*2, lst1)) print(lst2)
1 |
|
python #参考:リスト内法表記 lst1 = [1,2,3,4] lst2 = [a*2 for a in lst1] print(lst2)
1 |
|
```python lst1 = [1,2,3,4] lst2 = []
lst3 = [1,2,3,4] for a in lst3: lst2.append(a*2) print(lst2) ```
1 |
|
```python lst1 = [1,2,3,4] lst2 = []
lst3 = [1,2,3,4]
for a in lst3: lst2.append(a*2) print("") print("")
print(lst2) ```
1 2 3 4 |
|
なぜ(Python で)map
の返り値がイテレーターか¶
- 巨大なリストを処理する場合、リストが返るとメモリを大量に消費するから。
- この手の話をきちんと考えるにはコンピューターアーキテクチャなり、データ構造なり、プログラミング言語に関する諸々の知識がいる(のでその辺のプログラミング言語入門みたいな本ではふつう出てこない)。
- この手の「入門」は大学の情報科学系の入門書にはきちんと書いてある。
オブジェクトとインスタンス¶
# オブジェクト¶
だいたい次のような性質を持っています。 - 何らかの型がある。 - 変数に代入できる。 - 関数(メソッド)の引数にできる。 - 関数(メソッド)の戻り値にできる。 - それ自体が式であり、任意の式の一部になる。
# インスタンス¶
これはオブジェクト指向だけの概念です。クラス(プロトタイプベースの場合はプロトタイプとなるオブジェクトになりますが、以下クラスとまとめて考えます)はオブジェクトの雛形です。その雛形から実際のデータをもつオブジェクトにすることを実体化(インスタンス化)と言い、そのオブジェクトはそのクラスのインスタンスと言われます。
python import matplotlib.pyplot as plt fig = plt.figure() #a = A.new()
関数とメソッド¶
言語によっていろいろありはする。
- サブルーチン
- 関数、手続き
- 何らかの処理をまとめたモノ
- 数学の関数とは必ずしも関係ない
- メソッド:メソッド (method) あるいは メンバー関数 (-かんすう, member function) とはオブジェクト指向プログラミング言語において、あるクラスないしインスタンスに所属するサブルーチンを指す。
第一級関数(だいいっきゅうかんすう、英: first-class function、ファーストクラスファンクション)とは、関数を第一級オブジェクトとして扱うことのできるプログラミング言語の性質、またはそのような関数のことである。
```python #値を返す「関数」 def f(): return 1
#値を返さない「関数」 def g(): print(1) g() ```
1 |
|
```python class TestClass: x = "変数1"
1 2 3 4 5 6 7 8 9 10 11 |
|
a = TestClass("y") print(a.gety())
b = TestClass("b") print(b.gety())
a.test_method1() b.test_method1() ```
1 2 3 4 |
|
解答例¶
matplotlib¶
TeX でいろいろな式を書こう¶
python def f(): return {"a": "a"} print(f().keys())
1 |
|
いろいろなプログラムを書こう¶
numpy でのグラフ¶
sympy¶
python #colab の場合 from IPython.display import Math, HTML def load_mathjax_in_cell_output(): display(HTML("<script src='https://www.gstatic.com/external_hosted/mathjax/latest/MathJax.js?config=default'></script>")) get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)
微分方程式¶
2020-05-17 課題¶
はじめに¶
- コンテンツの案内ページ
- GitHub へのリンク
- 前回使った ipynb のプログラムを実際に実行してみて、実数の数値計算上で起こる問題を実感してみてください。
- 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
- 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
- https://atcoder.jp/contests/apg4b
- C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
- Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
- https://atcoder.jp/contests/apg4b
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib のチュートリアルを読もうの会
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
プログラミングの一般論¶
イテレーターとジェネレーター¶
- 参考
- この間イテレーターとジェネレーターを勘違いして話してしまったのでやり直し
基本¶
- イテレータ: 要素を反復して取り出すことのできるインタフェース
- 例:リスト、配列、タプル、辞書など
- 「要素をたくさん持っているデータ構造」
- ジェネレータ: イテレータの一種であり、1要素を取り出そうとする度に処理を行い、要素を生成する。Pythonではyield文を使った実装を指すことが多い
- ジェネレーターが必要になる理由
- とりあえずリストを想定する
- 要素すべてをあらかじめ計算しておく/取得してくるのが大変
- 例:何十GBもある巨大なイテレータはメモリにのせられない
- HDD・SSD に載せるのも大変(速度なり何なりいろいろ)
- ふつう 1 つ 1 つの要素自体は小さい
- 要素を 1 つ 1 つ生成すればメモリをそんなに食わない
- 1 つ 1 つ作ろう
1 つ 1 つ作る?¶
range
がイメージしやすそうな気がする- 一度にドカッとリストを作る必要はなく、1 つ 1 つの整数を都度作ってくればいい
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
- イテレータ(リスト)の要素数が $10^{1000000}$ くらいになるとそもそもリストが作れない
- 一気に作らずに 1 つずつ要素を生成すれば問題なく処理は回る
- $10^{1000000}$ 個の要素を処理しないといけない点で時間自体はどうしてもかかる
- これは本質的な問題で、ジェネレーターを使う・使わないに関係ない
- メモリに載るか載らないかではなく処理の所要時間の問題
Python のジェネレーターの簡単な例¶
yield
を使ってみる
1 2 3 4 5 6 7 |
|
1 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 |
|
- 4 回呼ぶと怒られる
for
で呼び出すと怒られるところでループを止めてくれる
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 |
|
クラス¶
- 念頭に置くのは Python のクラス・オブジェクト(オブジェクト指向の意味のオブジェクト)
- データとそれを処理する「関数」のペア
- まずは「辞書」または「リスト」の拡張だと思おう
例¶
- ある学生
s
のテストの点に関していろいろ統計的な処理をしたい - 学生
s
のテストの点を次のようにリストで持つ- 国語・数学・英・理科・社会の順に点数を並べるとする
- 平均点を計算したい
1 2 3 4 5 |
|
1 |
|
- リストだと何も情報がなくて、何番目が何の科目だったか覚えていられない
- コメントもあるが、何かの都合で仕様が変わったりしたらどうする?
- 具体的に名前で持たせればいい:辞書を使おう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 |
|
- 関数
calc_mean
は(本質的には)成績の持たせ方と連動した関数である - 値と処理をバラバラにしないでワンセットにしたい:クラス化
- いまは単なる平均だからご利益が何も感じられない
- もっと複雑なことを考えると「ワンセット」にご利益が出てくる
- それこそ「辞書のクラス・メソッド」などを考えてみよう
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 |
|
- ほかの生徒の成績も考えたいとき、簡単に各生徒用のオブジェクトが作れる
- オブジェクトは
s1
やs2
- オブジェクトは
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 |
|
アルゴリズムとデータ構造¶
アルゴリズムとデータ構造でプログラミングを勉強する¶
- https://atcoder.jp/?lang=ja
- プログラミングのコンテストサイト
- 競技プログラミング
- C++ の勉強も兼ねた勉強用ページ https://atcoder.jp/contests/APG4b
- 初心者向け練習問題 https://atcoder.jp/contests/abs
- 探せば他にも練習問題特集はある
いいところ¶
- 簡単な問題なら 10 行もあれば書ききれる
- 自分で何か作ったりしなくても問題演習という形でプログラミングに触れられる
- 基本的には実際のプログラミングに即役立つタイプの問題
- ランキング上位者は本当にプログラミングで食っていけるレベルの腕でもある
- 良くも悪くも、コンピューターの基礎みたいな部分に触れざるを得ない面がある
- リストと配列は何が違うのか?
- どういうときにどちらを使えばいいのか?
- メモリ上のデータの配置が違う
- 「低レイヤー」の話とも向き合う必要が出る可能性
自分に合った勉強法・勉強内容を探そう¶
- 最終的な目的・目標と勉強に対する最善のアプローチが一致するとは限らない
- 私の場合は物理・数学系だと勉強しやすかったが、皆が皆そうというわけでもない
- 課題を競プロから出してみて様子を見るか?
2020-05-31 課題¶
はじめに¶
- コンテンツの案内ページ
- GitHub へのリンク
- 01-01 ipynb のプログラムを実際に実行してみて、実数の数値計算上で起こる問題を実感してみてください。
- 「自分でお絵かきできるようになろう」講座なので、お絵描き用ライブラリに慣れ親しむのが大事です。そこで matplotlib の公式ドキュメントを見ていろいろ遊んでみてください。例えば次のようなことを試してみてください。
- 引き続き TeX でいろいろな式を書いてみましょう。式が書けると数学系のコミュニケーションがだいぶ楽になります。
- 実際に競プロの問題をいくつか解いてみましょう。例えばここのページを一通り眺めてみてください。Pythonで10問解いてみた記事もあるので参考にしてください。
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
- https://atcoder.jp/contests/apg4b
- C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
- Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
- https://atcoder.jp/contests/apg4b
- 文と式の説明
- IT 基礎知識みたいなやつ
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib のチュートリアルを読もうの会
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
競プロを 2 題解いてみる¶
- https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d の最初の2題
ABC 086 A - Product¶
- 標準入力から取るのが本筋(
input
) - 面倒なのでここでは入力部分をハードコードする
```python input_str = "1 3"
print("input_str") print(input_str)
print("======") print(input_str.split())
print("======") print(map(int, input_str.split()))
print("======") print(list(map(int, input_str.split())))
a, b = map(int, input_str.split()) print(a) print(b)
######################## a, b = map(int, input_str.split()) if a*b % 2 == 0: print("Even") else: print("Odd") ```
1 2 3 4 5 6 7 8 9 10 11 |
|
python s = "1" print(s) print(type(s)) print(int(s)) print(type(int(s)))
1 2 3 4 |
|
map オブジェクトはイテレーター¶
python input_str = "1 3" a = map(int, input_str.split()) print(a.__next__()) print(a.__next__()) print(a.__next__())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
参考:標準入力¶
- 果てしなくめんどい
- 低レイヤーの話に突撃する:コンソール・ターミナル、リダイレクトなどなど
- 「特殊 ( スペシャル ) ファイル」
- 「ソケット」
- http://e-words.jp/w/%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88.html
- 特定の通信相手(IPネットワーク上の場合はIPアドレスとポートの組み合わせ)と紐付いた通信端点をプログラム上に生成し、これを通じてコネクションの確立やデータの送受信、切断などの処理を行う。具体的な通信方式や通信相手の指定方式が複数用意されており、同じコンピュータ上の他のプロセスとも、TCP/IPなどを利用して他のコンピュータ上のプログラムとも通信できる。
- 標準入力について参考ページ
- 低レイヤーとは何か
- 参考
- 「低レイヤーとは 「生の」コンピュータに近いことを意味します。」
- OS やら CPU やらメモリやら何やら
- 「ハードウェアに近い話」みたいにも言えるかもしれない
- 簡単とか世間的な意味での「低レベル」とは関係ない
- 参考:「高レイヤー」は Web アプリなど
- 参考:OSI 7階層参照モデル
- この辺は基本情報技術者試験などで「基礎知識」として問われたりする
第二問 ABC 081 A - Placing Marbles¶
- 文字列は文字からなるリスト(配列)とみなす
count()
の説明は例えばここ- 解説が何を言っているかよくわからないこともよくある
- サンプルをいくつか動かす方が早いこともよくある
- 数学でもよくある:一般論・抽象論ばかりではなく例をいじろう
python input_str = "101" print(input_str.count("1"))
1 |
|
python input_str = "abcabcab" print(input_str.count("a"))
1 |
|
python input_str = "abcabcab" print(input_str.count("abc"))
1 |
|
プログラミングの一般論¶
インポートまわりの話¶
- 「お行儀」の問題もいろいろある。
- コーディングルールとして言及されることはよくある。
- たくさん読み書きしてはじめてわかることもある。
- ある程度の量はこなさないと見えない世界がある
初心者にありがちな話:モジュールの内容を全部インポートする¶
- 「いちいち必要なのだけ選ぶのはめんどい」
- 「楽でいいじゃない」
python from sympy import * from numpy import * x,y,z = symbols("x,y,z")
問題点¶
- 知らないモジュールのインポートがたくさんあると、どのクラス・関数がどのモジュールから来ているのかわからない
- 似た名前の関数やクラスなどもたくさんある
- 他人も読むコードではやめてほしい
- 将来、詳細を忘れた自分が読むのも厳しい
- 「わけがわからないので、使うクラスや関数だけインポートしてほしい」
- 例:使うものだけインポート
- https://github.com/django/django/blob/master/django/middleware/cache.py#L48-L50
- 例:使うものだけインポート
- 「使うクラス・メソッドだけインポートするか、
as
で呼ぶかする」といった規約をつけていることもよくある- sympy, numpy あたりはお行儀がよくて、必要なモノだけインポートするよう徹底されている模様
python import numpy as np import matplotlib.pyplot as plt
いろいろなインポートの指定¶
- 状況に合わせて都合がいいからそうする
- 状況に合わせた方法もいろいろ準備されている
- 必要だったから体系化されて盛り込まれている
python from fractions import Fraction q = Fraction(3,4) print(q)
1 |
|
python import fractions r = fractions.Fraction(3,4) print(r)
1 |
|
- 内容は同じだが後者は長い
- 書くのが面倒
- 読むときも余計なものまで読まされる
- シンプルにしたい
- ケースバイケースでいろいろやる
- クラスだけ直接インポート:
from fractions import Fraction
as
で短くする:import fractions as f
- クラスだけ直接インポート:
python import fractions as f a = f.Fraction(3,4) print(a)
1 |
|
python from numpy import * linspace(0, 10, 11)
1 |
|
python import numpy numpy.linspace(0, 10, 11)
1 |
|
全体像をつかもう¶
- ある程度大きな姿を捕まえないと局所的に何をやっているかもわからないことはよくある
- 料理でも下ごしらえとか
- 「やらなくてもいいが、やらないと美味しくない」
- フグの調理で毒を避けて処理する
- 「死にたいならやればいい」
- 料理でも下ごしらえとか
- 知識や見えている範囲が狭い中で考えて判断しようとしても無駄なことはよくある
- 意味がわかるかはさておき、ある程度たくさん知っておかないといけないことはよくある
- 単純な知識問題もよくある
- はまることや立ち止まることに意味がない
- 何かを調べたいとき、対応する言葉を知らないと調べようがなければ聞きようもない
- 単純な知識問題もよくある
- 本を読んでいるなら、とにかく四の五の言わずに 2-3 週読んでみるとかした方がいいこともよくある
- プログラミングはちょっと突っ込むだけでいきなりコンピューター関係の基礎知識を大量に要求されるので、さっさと諦めてそれらを勉強する
- 基礎からやったところですぐにわかるようになるわけもないが、それらを諦めるところまで込めて諦める
膨大な量の経験が大事¶
- 経験を積むと「こうした方がいい」「これはやめてほしい」というのがいろいろたまってくる
- コーディングルールとしてノウハウがまとまっていたりする
- 数学でもε-δで「なぜこんなεを取るのか」みたいな話はよくあるし、「何でこんな概念を導入するのか」みたいな話はよくある。
- 「便利だから」とか言われてもその便利なところを実感できるのはだいぶ慣れ親しんでから。
- この苦労を経ないとその辺の意味やご利益もわからないことはよくある
- プログラミングでも同じ
- ある程度は量をこなそう
楽しく量をこなすには?¶
- 楽しいと思えることを探すしかない
- 何が楽しいかは自分しかわからない
- はじめつまらなくてもやっているうちに楽しくなることもあれば、何かのきっかけで目覚めることもある
- いい方向が見つかるまでは試行錯誤するしかない
- この中で自然と頭を使いつつ(質を高めつつ)量もこなす必要が出てくる
2020-06-14 課題¶
- コンテンツの案内ページ
- GitHub へのリンク
- matplotlib を忘れないように、簡単なグラフをいくつか描いてみてください。
- TeX でいろいろな式を書いてみましょう。
- 実際に競プロの問題をいくつか解いてみましょう。まずは Beginners' selection をやっていきます。
- 今回は ABC081B と ABC086C (最後の難しめの問題)をやってみましょう。
- Pythonで10問解いてみた記事もあるので参考にしてください。
- 他にもここのページを一通り眺めてみてください。
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
- https://atcoder.jp/contests/apg4b
- C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
- Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
- https://atcoder.jp/contests/apg4b
- 文と式の説明
- IT 基礎知識みたいなやつ
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib のチュートリアルを読もうの会
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
Matplotlib¶
- とりあえず本当に簡単な図を描く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 |
|
勉強ネタ紹介¶
- 前回も言ったように、自分に合った、楽しめるネタを探す必要がある
- 勉強しなければいけないことと、やっていて楽しめること・長続きすることが一致しないこともよくある
- 教材がある事案
- 統計学 100 本ノック系:本もある
- 自然言語処理 100 本ノック系:例えばこのページ
- 離散数学:The Haskell Road To Logic, Maths And Programming
- Project Euler
- 最近の私の趣味と実益を兼ねた対象がデータ構造とアルゴリズムなので、ここでもその辺を試してみている
- 例えば上の中でも興味のあるネタがあればそれは取り上げるので、要望があれば挙げてほしい。
- 自然言語処理の UNIX コマンドとか
競プロを 2 題解いてみる¶
- https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d の 3 題目と最後の問題
- AOJ も勉強用にお勧め
- 素因数分解など数学ネタもある
- これをもとにした本もある
- 言語が C/C++ なのが難点といえば難点
- C/C++ の方が低レイヤーを意識しやすくなる利点はある
- 最近は Python によるデータ構造とアルゴリズムの本も出ているし、ネット上に資料もある
ABC081B、Shift only¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 |
|
Python の all
¶
Pythonでリストやタプルなどのイテラブルオブジェクトの要素がすべてTrue(真)か、いずれか一つでもTrueか、あるいは、すべてFalse(偽)かを判定するには組み込み関数all(), any()を使う。
1 2 |
|
1 2 |
|
ABC086C、Traveling¶
- 止まれない条件
- 止まってよければ問題は簡単:時間に関する制約だけでいい
- 非現実的な問題設定にしたおかげで難しくなっている
- cf. たいていの場合は現実が難しすぎるから簡単にした問題を解く
- 「距離」
- 京都・札幌・マンハッタンのような碁盤目状に道が整備された街での 2 点間の距離をどう測るといいか?
- 普通の2点間の距離(ユークリッド距離)$\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$ では不適切。
- $|x_1 - x_2| + |x_1 - x_2|$ で測る方が適切。
- 機械学習でも $L^1$ 正則化などで出てくる。
- 情報系(?)だとマンハッタン距離と呼ぶ。
- 数学では $L^1$ ノルムと呼ぶ。
- 一般には $L^p$ ノルムという概念がある
- 京都・札幌・マンハッタンのような碁盤目状に道が整備された街での 2 点間の距離をどう測るといいか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 |
|
1 2 3 4 5 6 7 8 |
|
現実的なスケジューリングの問題¶
- Google Map の経路探索
- Yahoo 路線情報などの経路探索
- 野球・サッカーなどの年間試合日程
- PASMO などでの運賃清算
PASMO などの運賃計算¶
- 論文が出るほどの問題
- 解説記事
- https://www.orsj.or.jp/~archive/pdf/j_mag/Vol.54_J_001.pdf
- https://www.seikei.ac.jp/university/rikou/pdf/JFST440213.pdf
- https://ci.nii.ac.jp/naid/110008913789
- 何が難しいか:乗車情報を使って東京の複雑な路線図から「最安運賃」を即座に計算させる
- 使える時間は 0.2 秒
- 運賃が高く計算されたら怒られる
- 安ければ文句がでない
- いくらでも変な経路がありうる
- 余計な枝をはじいて重要な部分だけ計算する
- どうやって:これがアルゴリズム研究
- ほぼ純粋なプログラムだけの問題
- テストの視点
- どんな始点・終点であっても問題なく動くか、プログラムを検証する問題もある
- 検証すべきパターンは $10^{40}$ 程度あるとか:解説記事
プロスポーツのスケジュール決定¶
- OR の研究課題
- 多数のステークホルダーの利害調整問題
- ドームなどはコンサートもある
- 著名アイドル・歌手の結成何周年イベントなどは「この時期、できれば第何週」というレベルで細かい指定が入る
- ドル箱はもちろん優先
- 春夏の甲子園の時期は高校野球に占拠される
- 各チームが過酷な移動スケジュールにならないような配慮
- 「九州から北海道に順に移動していき、逆順に移動していく」みたいな形だと移動の負担は少ない
- 必ずしもそううまくは組めない
- 長時間移動だけでも体力消費があり選手パフォーマンスに影響する
- 旅費もかさむ
- ドームなどはコンサートもある
- どうするか?
- これも組み合わせは膨大で、電車ほど激しくはないが短時間で計算させたい
- 最終的には人間の目も入れる必要があるだろう
- コンピューターにいくつか候補を計算させたい
- 適当にイベントと時期に重みづけ(ペナルティ)をつけて「一定程度以上ペナルティが積まれたスケジュールはもう考えない」といった工夫がいる
- いい感じのスケジュールにならなければパラメータ調整して再計算させたい
- このサイクルはなるべく早く回したい
- 高速計算の需要
- この辺は最近はやりの機械学習でもまさに同じような事情がある
プログラミングの一般論¶
- Web システムを例にした速度問題
- データ構造とアルゴリズム
- 連結リストと配列:どんな特性があるか?
- スタックとキュー:いつどこで使うか?どう実装するか?
web システムの事例¶
- 参考
- システムが重いというときどこにどんな原因があるか?
- ソシャゲでもよくある「障害発生」はどこでどう起こるか?
- どこかのサーバーが物理的に壊れることもある
- データ構造とアルゴリズム(いわゆる「プログラミング」)がかかわるのはどこか?
- web サーバーでの処理(プログラム)
- データベースの(インデックス)設計
- ソフトによる問題なら基本的にはどこにでもありうる
データ構造とアルゴリズム¶
- 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどうデータを持ってどんな処理をすれば効率がいいか?
- 効率にもいろいろある
- 単純な処理速度・メモリ消費量・計算量
(連結)リストと配列¶
- 何が違うのか?
- メモリ上の配置やデータの「つなぎ方」
- 状況によって使い分ける
リストの特徴¶
- 要素数は変わることが前提
- データを(先頭に)追加するのは簡単
- データの削除も比較的簡単
- 先頭から 1 つずつ順に処理するならそれなり
- 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴¶
- 要素数は固定
- データの追加・削除が重め
- データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
- 「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考)¶
- 「要素数可変の配列」
- リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
- 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
- ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
- 「メモリがカツカツ」という意味が理解できるか?
2020-06-20 課題¶
- コンテンツの案内ページ
- GitHub へのリンク
- matplotlib を忘れないように、簡単なグラフをいくつか描いてみてください。
- TeX でいろいろな式を書いてみましょう。
- 実際に競プロの問題をいくつか解いてみましょう。まずは Beginners' selection をやっていきます。
- 今回は ABC087B と ABC083B です。
- Pythonで10問解いてみた記事もあるので参考にしてください。
- 他にもここのページを一通り眺めてみてください。
メモ:先に進む前に録画してあるか確認しよう¶
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
- https://atcoder.jp/contests/apg4b
- C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
- Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
- https://atcoder.jp/contests/apg4b
- 文と式の説明
- IT 基礎知識みたいなやつ
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib のチュートリアルを読もうの会
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
Matplotlib¶
- とりあえず本当に簡単な図を描く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
自然言語処理100本ノック¶
- この間紹介したらやってみたくなったので、(勉強会の課題ネタ競プロを放棄して眺めてみた)
- URL: 言語処理100本ノック 2020 (Rev 1)
- 文字列に限定した競プロの趣もある
第1章: 準備運動 00. 文字列の逆順¶
文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
1 2 |
|
1 2 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
第1章: 準備運動 01. 「パタトクカシーー」¶
- 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
1 |
|
1 |
|
1 |
|
1 |
|
02. 「パトカー」+「タクシー」=「パタトクカシーー」¶
「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 |
|
03 円周率¶
"Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.
1 2 |
|
1 |
|
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 |
|
1 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
04. 元素記号¶
"Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ以外の単語は先頭の2文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ.
(言っていることがよくわからなくて何度も読み返した。)
1 2 3 4 5 6 7 8 9 |
|
1 |
|
1 2 3 4 5 |
|
内包表記をループで書き直した¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
プログラミングの一般論¶
- Web システムを例にした速度問題
- データ構造とアルゴリズム
- 連結リストと配列:どんな特性があるか?
- スタックとキュー:いつどこで使うか?どう実装するか?
web システムの事例¶
- 参考
- システムが重いというときどこにどんな原因があるか?
- ソシャゲでもよくある「障害発生」はどこでどう起こるか?
- どこかのサーバーが物理的に壊れることもある
- データ構造とアルゴリズム(いわゆる「プログラミング」)がかかわるのはどこか?
- web サーバーでの処理(プログラム)
- データベースの(インデックス)設計
- ソフトによる問題なら基本的にはどこにでもありうる
データ構造とアルゴリズム¶
- 鶏と卵で、同時に考えるべきテーマ:何かをするためにはどうデータを持ってどんな処理をすれば効率がいいか?
- 効率にもいろいろある
- 単純な処理速度・メモリ消費量・計算量
(連結)リストと配列¶
- 何が違うのか?
- メモリ上の配置やデータの「つなぎ方」
- 状況によって使い分ける
リストの特徴¶
- 要素数は変わることが前提
- データを(先頭に)追加するのは簡単
- データの削除も比較的簡単
- 先頭から 1 つずつ順に処理するならそれなり
- 検索やデータの書き換えが遅い:連結構造をたどる必要がある
配列の特徴¶
- 要素数は固定
- データの追加・削除が重め
- データの参照・書き換えが速い:アドレスが連続なので先頭さえわかれば「そこから何番先」と直指定できる
- 「リストで遅ければ配列で書き直す」みたいなことはよくある
ベクター(参考)¶
- 「要素数可変の配列」
- リストのように要素追加・削除が比較的低コストで、要素の参照・書き換えも配列のように速い
- 何が問題か:要素の追加が楽なように余計なメモリ領域を確保する
- ハードウェア組み込みプログラムのように、メモリがカツカツの状況では使えない
- 「メモリがカツカツ」という意味が理解できるか?
2020-06-28 課題¶
- コンテンツの案内ページ
- GitHub へのリンク
- matplotlib を忘れないように、簡単なグラフをいくつか描いてみてください。
- TeX でいろいろな式を書いてみましょう。
- URL: 言語処理100本ノック 2020 (Rev 1)で Unix コマンドと正規表現のところを眺めてみましょう。適当にいくつかやります。
- (次回以降で対応)実際に競プロの問題をいくつか解いてみましょう。まずは Beginners' selection をやっていきます。
- 今回は ABC087B と ABC083B です。
- Pythonで10問解いてみた記事もあるので参考にしてください。
- 他にもここのページを一通り眺めてみてください。
メモ:先に進む前に録画してあるか確認しよう¶
- メモ:東大の AWS クラウド講義資料
- https://tomomano.gitlab.io/intro-aws/#_hands_on_5_bashoutter
- これを眺めてみるのもいいかもしれない
自分用メモ¶
- 常微分方程式で漸化式から微分方程式に流れる部分の書き直し
- 勉強のおすすめ:AtCoder はどうか?C++の解説もあるし、仕事・評価にも割と直結するし、具体的な問題つきで勉強できる。
- https://atcoder.jp/contests/apg4b
- C++のコードをPythonで書き直してみるだけでもかなりの勉強になるはず
- Python によるアルゴリズム https://qiita.com/cabernet_rock/items/cdd12b07d213b67d0530
- https://atcoder.jp/contests/apg4b
- 文と式の説明
- IT 基礎知識みたいなやつ
- 数値計算に関わるクラス・オブジェクトの説明
- まずは辞書・構造体の拡大版として導入するか?
- 変な誤解を生まないような書き方を考える
- 遅延型方程式に対するコメント追加
- import に関する実演
- matplotlib のチュートリアルを読もうの会
- matplotlib 回では実際に matplotlib のチュートリアルを読もう
- 公式情報に触れる重要性
- 古い情報が古いと書いてあったりする:たとえば
pylab
- Gallery
- 見ていて面白い
- 「どこをいじるとどう変わるか」が視覚的にわかる
- 公式情報なのできちんとアップデートしてくれている(はず)
- 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる
- Jupyter (IPython)でのはまりどころ解説を作ろう
- いったん変数を作ると他のセルでも読み込める(読み込めてしまう)
- 「セルを上から順に読み込まないと動かない」問題の原因
- カーネル再起動まで変数は残り続ける
Matplotlib¶
- とりあえず本当に簡単な図を描く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
TeX の記録¶
量子力学の1粒子ハミルトニアン。 \begin{align} \hat{H} = \frac{1}{2m} \hat{p}^2 + V(x). \end{align}
自然言語処理100本ノック¶
- この間紹介したらやってみたくなったので、(勉強会の課題ネタ競プロを放棄して眺めてみた)
- URL: 言語処理100本ノック 2020 (Rev 1)
- 文字列に限定した競プロの趣もある
第2章 Unix コマンド¶
- 要検討:ローカルでやった方がデモンストレーションとしてはいいかもしれない
- 参考ページ
- ここでは
pandas
を使っている - これはこれで覚えると便利
- Excel が処理できる
- ここでは
- Google Colab 上では
!ls
のように!
をつけると Unix (Linux) コマンドが実行できる。 - Mac ならターミナルから直接実行できる
- Windows でも適当な手段でインストールできる
- ただし OS の違いから純粋な Windows では意味を持たないコマンドもある
- chown や chmod などの権限管理とか
- すさまじく大量にあり、各コマンドはオプションも死ぬほどたくさんある。
- 毎日ゴリゴリに使い込まければ覚えられるものではない。
- 大事なコマンドをいくつか見て慣れ親しむことだけが目的。
補足¶
- cd, ls などの(もっと)基本的なコマンドはカバーされていない。
- 参考リスト:とりあえずこのくらい知っておくといい(名前だけ何となく覚えていればいい)
- Python にも対応する関数がある
- mv は shutil.move: https://note.nkmk.me/python-shutil-move/
- shutil はたぶん shell utilities の略
- Ruby だと「わかりやすさ」を考えて Linux コマンドと同じ名前の関数・メソッドで定義されている
- cf. chown
準備¶
1 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
10. 行数のカウント¶
行数をカウントせよ.確認にはwcコマンドを用いよ.
1 |
|
1 |
|
1 2 3 4 |
|
1 |
|
# 補足:wc コマンドの調査¶
- 参考
- 実際にターミナルで実演してみよう
11. タブをスペースに置換¶
タブ1文字につきスペース1文字に置換せよ.確認にはsedコマンド,trコマンド,もしくはexpandコマンドを用いよ.
1 |
|
1 2 3 4 5 |
|
s/何とか/実はこう書きたかった/
1 |
|
1 2 3 4 5 |
|
12. 1列目をcol1.txtに,2列目をcol2.txtに保存¶
各行の1列目だけを抜き出したものをcol1.txtに,2列目だけを抜き出したものをcol2.txtとしてファイルに保存せよ.確認にはcutコマンドを用いよ.
# Linux コマンド¶
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 |
|
# Python¶
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
第 3 章 正規表現¶
正規表現の簡単な話¶
- 分厚い本が何冊も出るくらいのごつい話
- 例:「イギリス」という言葉が出てくる文章を調べたい
- 単なる検索でいい
- 例:「イギリス+単語」という言葉が出てくる文章を、その単語セットとともに調べたい。
- 例えばイギリスではなく「イギリス連邦」「イギリスの勝利」のような形で調べたい
- ここで正規表現が出てくる
- もう少し web でよくある例
- メールアドレスのバリデーション
- 「メインの文字列@gmail.com」みたいなのをチェックする
- メンテナンスが魔界
- 正規表現は死ぬほど複雑で簡単な部類でさえすでに読みにくい
- 複雑なものは本当に何もわからない
- 時間が経つと書いた当人でさえ判別できないことはよくある
ファイル取得¶
1 |
|
1 2 3 4 5 6 7 8 9 10 |
|
展開(解凍)¶
1 |
|
行数確認¶
1 |
|
1 |
|
先頭行の確認¶
1 |
|
1 |
|
20. JSON データの読み込み¶
Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 |
|