親です。

読んだ本とかについて書いてます

技術書典5でDjangoの本を買ってきた

おつです。

技術書典5に行ってきた

10/8(月祝)、池袋のサンシャインシティにて技術書典5が開催された。

技術書典

技術書典ってのは要するに技術同人誌の即売会で、コミケとかコミティアとか文学フリマみたいなイベントだ。ただ扱うのは(IT系の)技術書である。

俺が今までに参加したことのある同人即売会コミケと文フリで、まあコミケはクソほど混むんだが、文フリはわりとスイスイ入れるイベントなので、技術書典も空いてるのかな? と思って池袋に向かった。

なんかもうそしたらだよ、めっちゃ待ってんの開場。めちゃくちゃ長いの待機列。

開場の11時ごろについて実際に入場できたのが11時45分くらい。話に聞くに入場者1万人いたらしくて、赤壁の戦い劉備が率いたの2,000人くらいだからなんなら蜀ほろぼせる。開場の大きさもあってかメインの通路はコミケくらい混雑してた。

戦利品

12時には帰ろうと思ってたので滞在時間は15分そこそこ。それでも買いたいものは絞ってたので買えました。

すべてDjango関連の本なんだが、中でもいちばん嬉しかったのが『現場で使えるDjangoの教科書 実践編』という本だ。これの前作にあたる『現場で使えるDjangoの教科書 基礎編』はたぶん国内で手に入れられるDjangoの本の中でも(特に初心者向けの本では)一番の良書といえるような本で、信頼できるソースの少ないDjangoでの開発においてマジで有難い本だ。本当に普段からお世話になってるからイベント会場でも挨拶させていただいて、握手もしてもらった。

ちなみに、前作はKindleで購入できる。

現場で使える Django の教科書《基礎編》

現場で使える Django の教科書《基礎編》

『現場で使える〜』を買った後は近くで売ってたDjangoの本も物色して、そしたらもう12時になってしまったので退散。時間さえあればフラフラ見て回ったり、あと最近気になってるReactの本とかを眺めてみても良かったんだが、今回はやめ。

帰りに『現場で使える〜』を軽く読んだんだが、テストに関する章がとてもよかった。特にテストの結果をどう資料として残すか? みたいなところが助かった。自分自身、今初めて自分の作ったサービスのテストを書こうとしてるんだが、何かテストリザルトを資料として残しておきたかった。ほんとドンピシャで欲しいところが書かれていて助かった。

まあ、そんなこんなで技術書典5、たいへん楽しかったです!!

最後に技術書典の会場で唯一撮った写真。ファミマの店内放送で有名な帝京平成大学が見えたので写真に撮ってしまった。

【PM】ひとりでPRJ進める時に気をつけること。

おつです。今度からひとりSEみたいなことをするので、プロジェクトを進める時に気をつけておかないといけないことをメモしてくよ。気がつき次第メモって、次の案件に活かす感じで行きたい。

気をつけること一覧

大きなくくりで、スケジュール管理、タスク管理、資源管理、あとは担当者レベルのタスクかと思ってる。 まああとは気付き次第で加える。

スケジュール管理

これあんま分からん。WBS的なの欲しいが。。

タスク管理

これはBacklogとか使う。タスクの出入り、進捗を管理する。
1. 発生したタスクの記録、解決できる状況作る 1. 進行中タスクの状況確認 1. 期限までに終わってるか管理

資源管理

Git一択。

担当者レベルのタスク

分からんのだが。。 1. 要件定義 1. デザインの要件(レスポンシブとかそこらへんのこと) 1. 仕様書作成 1. PGPT 1. システムテスト 1. 納品

【数学】パーセプトロン完全に理解した

おつです。機械学習における分類手法ひとつ「パーセプトロン法」の勉強をしたので、まとめるよ。

(「やさしく学ぶ 機械学習を理解するための数学のきほん」より)

①分類する とは

機械学習における分類とは、訓練データをもとに対象データがグループAとBのどちらに分類できるかを判定すること。

たとえば、ある長方形が縦長か横長かを分類するケースを考える。 訓練データにはx1, x2, yが与えられている。x1は横の長さ、x2は縦の長さ、yは分類結果で1のとき長方形が横長、-1のとき長方形が縦長であることを表す。 んで、このデータをx1, x2の座標にプロットすると、これらのデータはある直線によって分類できるということが分かる。 これを線形分離可能と呼ぶ。

f:id:MaximoNelson49:20180922102233p:plain
{赤の点が縦長(y=-1)のデータ、青の点が横長(y=1)のデータ。斜めの線で分類できている。)

つまり私たちは分類をするために、この赤点と青点を分類する線を見つけてあげる必要がある。

②「線」の定義

この線について、とりあえず以下のように定義する。

w・x = 0 (式2-1)
(太字はベクトルを表す)

wは重みを意味するベクトルでw1, w2という要素を持つ。 xは、すでに出てきているx1, x2を要素に持つベクトルだ。 いきなりベクトルとか出てきてハァ? って感じだが、2-1の式を開いてあげるとそこそこ理解できる式になる。

w1x1 + w2x2 = 0 (式2-2)

これは馴染みのある一次関数、 y = ax + b とほとんど同じだ。式2-2を同じような感じに変形してやるなら、

x2 = (-w1/w2)x1 + 0 (式2-3)

となる。

以上で、今回見つけたい線が式2-1であるととりあえず納得できたと思う。 で、式2-1について以下みっつのことが言える。

  1. 式2-1はwを法線ベクトルに持つ。
  2. wx = |w|・|x|・cosθ= 0
  3. (2の発展)wx < 0のとき、90°<θ<270°、wx < 0のとき、θ<90°, θ>270°

1は法線ベクトルって単語が新しいけど、言いたいことは単純だ。wxwのなす角は直角ですよ、ということ。 式2-3を見て欲しいんだが、式2-1の傾きは-w1/w2だった。んで、wは〔w1, w2〕だ。 たとえばwが〔1, 2〕のときを考える。  f:id:MaximoNelson49:20180922102247p:plain
(式2-1の傾きは-1/2、wの傾きは2。直角だ。)

そして2も実は同じことを言っている。 |w|・|x|・cosθ= 0 となるときってのはcosθがゼロになるときだ。そしてcosθがゼロになるwxの成す角θは90°もしくは270°である。つまり直角。

最後の3は2の発展。 wxが正の値をとるときってのはcosθが正のとき、つまりθ<90°, θ>270°。 反対に、wxが負の値をとるときはcosθが負の値をとるときで、90°<θ<270°。

このみっつの性質、考えてみれば当たり前すぎて、だからなんやねんという気持ちになるんだが、後々生きる。

③識別関数

xを与えると分類結果を返してくれる関数を下記のように定義する。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1)

なんかこれ、いきなりそんなこと言われても全然納得できないと思うんだけど、どういうことかっていうと、下記のイラストの通り。
(細かくなりそうだったので手書き。xベクトルの要素x1, x2と一つ目のxベクトルを表すx1,x2が大変紛らわしくなってしまった。ごめん、文脈で読み取ってほしい、スンマセン)  f:id:MaximoNelson49:20180922102401j:plain
まずw1, w2の座標にwx = 0の直線と法線ベクトルwがある。  f:id:MaximoNelson49:20180922102523j:plain
x1がとwのなす角θがθ<90°, θ>270°のとき、w・x1 > 0である。 w・x1 > 0のとき、x1は分類する線wx = 0より左側にくる。  f:id:MaximoNelson49:20180922102532j:plain
x2がとwのなす角θが90°<θ<270°のとき、w・x2 < 0である。 w・x2 < 0のとき、x1は分類する線wx = 0より右側にくる。  f:id:MaximoNelson49:20180922102623j:plain
そんなわけで、wxが正か負かによって、wx = 0のどちら側にxがくるのか分類できる。

で、この時、右側とか左側とか言ってると数学として扱えなくなるので、冒頭のようにあらわすことにする。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1) そゆこと。

④更新式

では実際にxを入れて計算してみる。 (ここはテキストの中身と同じデータを使用してます) 例えば、x=〔125, 30〕、y = 1, のデータがあり、仮にw=〔-1, -1〕とする。 計算すると、xw < 0 となり、fw(x) = -1である。 が、実際のyの値は1であり、分類が失敗している。

分類が失敗したということは、wの値が間違っており、もうちょっとマトモな値に修正可能ということだ。 もうちょっとマトモな値に修正してくれる式のことを更新式と呼び、ここでは下記の通り定義される。

w := { w + y(i)x(i) (fw(x(i)) ≠ y(i))
w (fw(x(i)) = y(i)) (式4-1)

オニクソ読みにくい式になってしまったが、要するに、あるxを与えた時の予測値fw(x)と実測値yが異なるとき、wにyxを加えた値を新しいwとするという意味。x(i)はi番目のxであることを示す。

これをi個全てに繰り返すことで、少しずつより良いwに近くというわけだ。

⑤わかんないところ

予測値と実測値が異なるとき、更新式w + y(i)x(i)がより良いwの値となるってのはなんでなんだろう? なんとなく、分類する線wx = 0の反対側にwが行ってくれる気がするし、まあいい気がするんだけど。。
これ、パーセプトロンの収束定理という名前で証明されているらしい。(調べても難しい記号ばかりでどう読めばいいのかわからなかった。。)

最後に参考書籍の紹介。楽しく読めました。 https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%95%B0%E5%AD%A6%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-%E3%82%A2%E3%83%A4%E3%83%8E-%E3%83%9F%E3%82%AA%E3%81%A8%E4%B8%80%E7%B7%92%E3%81%AB%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E6%95%B0%E5%AD%A6%E3%80%81%E5%AE%9F%E8%A3%85%E3%81%BE%E3%81%A7/dp/4839963525

以上!!!

【Django】Djangoでしくじったミス一覧

しくじったところです。

①初回のmigrateで落ちる

ModuleNotFoundError: No module named 'AppName'

settings.py の ROOT_URLCONF = 'config.urls'の記述が正しいか確認する。settings.pyなどが入っているフォルダ名を変えている場合などにうまくいかなくなる。

【映画感想】カメラを止めるな! ネタバレありのメモ

感想のメモです。あんまり人にはわからんかも。

‪かめとめ良かった。序盤、中盤、終盤と構成的に特殊なやつで、序盤が不躾な問いであり解(終わった瞬間のどうやってこうなるか? の外的な強い問い、全てが合わさった時にこうなるという解)中盤は内的な問いと軽い外的な伏線の回収兼伏線の設置、終盤は外的な解と内的な解。中盤の目配せするような伏線の張り方がほっこりした作風と合ってる、ガチガチの伏線張りまくりとも違う感じ。‬ ‪あと、楽しみ方の共有されていない困った感じの序盤と、これが無茶振りだったっていう中盤の問題提起、メタ的な役者たちの演技の違い、ギャグであることと伏線の緩やかさはかなり関係ある。やっぱりね、という笑いなんだなあ。‬ ‪楽しみ方の共有されていない序盤が持つギャグの雰囲気。‬ ‪あー、大きな伏線を作らせなかったのかな。大きな伏線は大きなドラマを呼ぶから、小さく解消して笑いに変えてるのか、それはあるかも。驚きではなく笑い、嫌味のない笑い、嫌味のなさは日本人バラエティではなくてバランスよくて良かったね。‬

‪意味の話では、こういうのは常に父親の描かれ方がどうも難しいと思うんだけど、職業監督として日銭を稼ぎつつ、小規模に仲間と成功を分かち合うみたいなのが、ドラマに酔ってなくて、けど子どもの写真は飾っちゃうみたいなのが、とても等身大な感じで良かった。‬

以上。

【数学】高校数学 - 積分のまとめ

おつです。かく。

積分

微分するとf(x)になる関数F(x)を、f(x)の原始関数と呼ぶ。
んで、微分のこと知ってれば分かると思うけど、微分ってのは「ある関数」のある店における傾きを表した関数なので、「ある関数」の切片は微分した結果に影響を与えない。つまり、切片が異なる関数でも微分した結果は同じで、裏返せば関数f(x)の原始関数はたくさんある。
そのことを表現して、f(x)の任意の原始関数は
F(x) + C (Cは定数)
とされる。

んで、この任意の原始関数は不定積分とも呼ばれ、またそれを求めることを積分するという。
例)(x3)' =3x2 であるから、∮3x2dx=x3 + c

∮f(x)dx
と表し、これをf(x)の不定積分と呼ぶ。