親です。

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

【お仕事】メモ記事 - 作業環境を整えたい

作業環境を整えたいので、整えたいことリストをメモ。

①デスクトップをもっと機能的に

今のデスクトップはごちゃごちゃしすぎてる。どれがゴミなのかわからないし、仕事を始めたい時にどのフォルダをひらけばいいのか分からない。作ってあるフォルダも階層のレベル感がバラバラで見ているだけで嫌になる。
なので揃える。階層構造は下記の感じ。

  1. 仕事のPRJ
    1. PRJ名
      1. PRJ基本情報
      2. PRJソースコード
      3. 仕様フォルダ
      4. 一時フォルダ(週一で消す)
    2. PRJ以外の調査
  2. 仕事の管理フォルダ
  3. 趣味 - PRJ
    1. PRJ名
      1. PRJ基本情報
      2. PRJソースコード
      3. 仕様フォルダ
      4. 一時フォルダ(週一で消す)
  4. 趣味 - 小説
    1. PRJ名
      1. PRJ基本情報
      2. PRJ文章
      3. 仕様フォルダ
      4. 一時フォルダ(週一で消す)

【お仕事】お仕事する上で気を付けときたいことまとめ

おつです。最近転職して在宅仕事になった。色々仕事の仕方が荒れそうなので、お仕事する上で気を付けたいことをまとめる。

お仕事する上で気を付けときたいことまとめ

  1. 【PM】ひとりでPRJ進める時に気をつけること。 - 親です。
  2. 【お仕事】メモ記事 - 作業環境を整えたい - 親です。

以上!!

技術書典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などが入っているフォルダ名を変えている場合などにうまくいかなくなる。