an odd fellow

仕事のメモ

ユースケース駆動開発実践ガイド を読んだ

年明けからバイト先の同僚とユースケース駆動開発実践ガイドの読書会をした。

ユースケース駆動開発実践ガイド

ユースケース駆動開発実践ガイド

きっかけ

僕はバイト先で Web サービスを作っているんだけれど、仕事の進め方に疑問だらけだったのでなんとかしたくて読んだ。

というのも、社長が欲しい機能「こういう感じの機能が欲しい」と伝えられて、僕がなんとなく作ってみたけど、社長が思っていたものと違ったり、社長の中での暗黙の仕様があったりして突っ返されたりなあなあの実装のまま使ってしまったりという現状があまりにも働いていて辛いのでなんとかしたかった。

なんとかしたいとは思っていたんだけど具体的にどうすれば良いのかわからん…という状況の中 NSEG でスクラム体験ワークショップをやるというので参加してきた。

スクラム体験ワークショップ・1DAYプログラム お試し版 午後の部 - 長野ソフトウェア技術者グループ | Doorkeeper

これは本当に行ってよかった。理想的な仕事の進め方だ~~!!と思った。でもスクラムに関してプロがいないとこれはうまく回らん…というのもわかったりして、じゃあどうするって時に、このイベントで講師していた方が「私は一人で仕事することが多いのでスクラムじゃなくて ICONIX で仕事してます」ということを言ってたのを思い出した。

ICONIX プロセスについて調べると小規模のチームで開発するのに向いてるし、実装以前に暗黙の仕様とか無くして全部明言化して且つその過程で設計もできるよってものらしい。

読書会

ICONIX について Google 様にお尋ねすると「ユースケース駆動開発実践ガイド」という本が詳しいと書いてあったので買ってはみたが、ひたすら厚いしひとりでやる気は起きなかったのでバイト先の同僚を誘った。

早めに仕事の進め方をなんとかしたいという思いがあったので、多少無理して週 2,3 回夜に集まって2,3 時間音読するというのをやって、1ヶ月で9章まで読んだ。早いペースだと思う。10章以降は、これ以上はもう読まなくていいねって言ってやめた。

学び

簡単にまとめてしまうと ICONIX プロセスっていうのは以下をやることだった。

  1. 要件からドメインモデルを構築すること
  2. ドメインモデルの言葉を使ってユースケースを記述すること
  3. ユースケースは基本コースと代替えコースだけを書いたシンプルなテンプレートを使うべきで、事前条件や事後条件などだらだらした項目はいらない
  4. ユースケースからロバストネス分析を行って、ロバストネス図を描くこと
  5. ロバストネス分析によってクラスの属性が発見される
  6. ロバストネス図からシーケンス図を描くこと
  7. シーケンス図を描くことでクラスのメソッド(振る舞い)が発見される

以上をやりながらドメインモデルを逐次更新していくと最終的にはユースケースから漏れのない完璧な詳細設計(つまりクラス設計)が出来上がるよ!ということだった。

特にロバストネス分析というのが ICONIX プロセスの核のようだった。一般的な開発だとユースケースからクラス設計をしてしまうが、ユースケースとクラス設計にはギャップがあるしユースケース自体が要件に対して不十分ということもありえるので、これをロバストネス分析によって橋渡しをするらしい。

確かに本を読みながら簡単な例で実践してみると新しいドメインモデルが発見されたりユースケースが洗練された(と思う)。

疑問

わからない箇所がまだ結構あるとも思った。

これはこの本への不満点でもあるんだけど、本の中で例がいくつか挙げられているんだけど、そのロバストネス図の抽象度が毎回異なるというか、すごく細かく分析したロバストネス図もあればざっくりしたロバストネス図が書かれる場合もあって、いったいどの抽象度での分析をすればいいんだ???というのがひとつ。

また本の中では spring framework での例がのっているんだけど、 Symfony だとどう書くんだろう?ううん、もうちょっと書くと、ネイティブアプリでの MVC での例が載っていたけど、これはこのまま Web MVC に適用できないよなあと思っていて、もう少しロバストネス図やシーケンス図の例が見たい!っていうのがある。

あと結局暗黙の仕様を顧客から抽出しないといけなくて、これに関してはこの本では「何度も問いかけろ」とだけあった。これに関しては確かに ICONIX プロセスの保証する範疇外だよなあとは思うので何か別の資料に当たらないとなあと思っている。

なぜ 10 章以降を読まなかったか

9 章までで ICONIX プロセスの本質はすべてカバーできたなあと思った。 10 章以降は詳細設計から実装する箇所で spring framework でどう実装するかという話が主だったように見えたので省略した。

次に読む本

目標は ICONIX プロセスのエッセンスをバイト先で使っている Symfony での開発に導入していい感じに仕事をすすめることなんだけど、Symfony は DDD を推奨しているので DDD をきちんと勉強しないと使いこなせないぞと思っている。なので次は エリックエヴァンスドメイン駆動設計を読もうと思っている。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

うーん、東京のベンチャーとかでバイトしている学生がうらやましい。すでに能力がある人が書いた綺麗な実装を参照しながら新しい機能つくれるんでしょ。設計についてコードから勉強できるのうらやましい。

一方で開発環境の構築からインフラの設計、ソフトウェアの設計、開発と運用全部丸投げされる僕…。各項目に関してまったく知識が無いわけではないけど、理想的な状況というのを文献でしかしらないので、実際やってみると「こういう場合はどうすんだ…」みたいなのめちゃくちゃあって圧倒的に経験不足を思い知る。それにあまり時間をかけずにさっさとやれという圧力もかけられるので、勉強時間を満足に取れずになあなあでいろいろなことを進めてしまって結局なあなあなものができてサービス止まりまくってる。死にたい…。大学院生として本分の研究もあったりして、こちらばかりに時間が取れなかったりもするししんどい…という弱音…

なんのノウハウも無く、知識と経験のある人もおらず…というところから始めるのしんどいお…

ガルパン小説 1 巻読んだ

ガールズ&パンツァー (MF文庫J)

ガールズ&パンツァー (MF文庫J)

ガルパンはいいぞ」が言いたくてアニメ見て立川まで映画見に行った

アニメは武部沙織ちゃんがとっても頑張ってた!モテたいが動機で始めた戦車道で真剣なみぽりんに当てられてがんばっちゃうさおりん、きもち…わかるよ…。アニメでみぽりんがちょっとすごいことするとさおりんがみぽりんの能力を羨むような描写がちょいちょいあって(僕の妄想かも。でもそういう演出多分あったとおもう)、だからアマチュア無線二級取ったよ!!!ってみぽりんに報告するさおりんがすっごい嬉しそうでうわあああさおりんがんばったんだねええええうええええんうわああん

小説版だとさおりん視点で書かれてるっていうから映画後即購入した。小説、さおりんの頭弱い感じが全面に出ててたいへんに良い。でも努力家なんですよ、彼女。いや、努力家というか、無意識でがんばっちゃうタイプだ、頑張ってるって自覚無く頑張れちゃうというか、目標達成のためにどういう努力とか工夫をしたらいいのか無意識で考えて実践できる素敵な女の子なんだ。きっといい彼氏ができるよ…でもこういうタイプの子、ダメンズにひっかかりやすいよね…

さおりんは料理上手だったり身だしなみもきちんきちんとしていて、こういうところからも手を抜かないで頑張る姿勢が見て取れて素敵だ。ダメダメな幼なじみのお世話もしていたりして、こういうところからダメンズにひっかかる可能性も見て取れて辛い

いや、小説、正直さおりんの口語調で書かれるので読んでて非常にしんどい。あと 2 巻もあるんだけど、読みきれるかな…

Recruit の Winter Internship 行きました

書こうと思っていたけど長野戻ってきてから忙しくて1周間も経ってしまった…。

データアナリストコースに行きました。まさか選考に通ると思わなくて、案の定行ってみると東大京東工大早稲田慶応のオンパレードで地方国立なんてボクだけでちょっと恥ずかしいきもちもした。コンペティション形式で、チームのメンバの言われたことを実装していたら優勝してしまった。

勝手にデータサイエンティストって IT エンジニアに寄っていると思っていたけど、そんなことなかった。色んなバックエンドのひとがいました。アプリを良くするためにデータ分析が必要でそれはアプリエンジニアの仕事なんだって思っていたんだけど、そうではなくて、データ分析だけに特化した部隊が色んな部署から仕事を受けてやっていました。他の会社でもそんな感じかな。

データ分析とか機械学習とか、ボクもやり始めてまだ 1 年足らずだけれど未だにさっぱりな部分が多くて、一方でインターンに来てるひとたち数学に造形が深くて作業を隣で見てるだけでもとても勉強になったし辛くなった。 学部の 1 年の終わりに初めて IT 勉強会に行って発表しているひとたちの内容が何一つわからなくて喉の奥がつまるような感じをしたのを思い出した。あれから 4 年立って誰が何喋っても結構わかるというくらいになったし、データ分析にまつわる知識もやり続けてればきっとついてくるさ、と思って今後もがんばります。 インターンに行って周りにはあんまりいないデータサイエンティストって呼ばれているひとたちといっぱい話して自分が知らないことを認識できたし、彼らがどういう感覚で数理モデルを読んだり提案しているのかっていうのが結構わかった気がする。今後勉強するべきことっていうのがはっきり認識できたし行けてよかった。

いい会社だなーと思った、自分のスキルに自身があるひとたちばっかりだった。すごい。新卒で入ってつぶされないか?とか他の新卒の連中に勝てるの?とか色々考えもするけど、なんだか普通に大丈夫な気もしていている。

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

ココロコネクト キズランダム

ココロコネクト キズランダム (ファミ通文庫)

ココロコネクト キズランダム (ファミ通文庫)

前回は人格入れ替わりで今回は欲望開放の話。普段は理性でうまくやるところを欲望開放が起こると言動に起こしてしまうという、今回も仲良し 5 人組の人間関係をぶち壊しかねない危機が次々に振りかかるのをにっこにっこしながら読んだ。普通に趣味の悪い話なので面白い(褒めてる)

アニメもそうだったけど、この辺の話から稲葉んが最高にかわいいですな、ボクは伊織ちゃん推しだけど

青春ですなあ、友達を傷つけるから私の本心は言えない!!!みたいなの気遣いを仲間内できたの高校までだったなあ。大学以降で知り合って仲良くなった連中はお互いをどんだけ振り回しても壊れない人間と思ってつるんでいるのでそういう気遣いありませんは…

ここまで書いてから読書メータをながめる

やっぱこのシチュはキツイって感じるひとおおいよな、こう、言ったらまずい、みたいなの言ってしまうから、確かにきついんだよな、うん、そういう本音と建前の本音がバンバン出てしまう状況っていうのを設定して物語にしてるのめっちゃ面白いんだよな。そういう普通の話だと言及しにくい人間の表に出ない部分を、表と一緒に上手く書いてあっておもしろい。人間の表に出ない部分を書く話っていっぱいあるんだけど、ココロコネクトは表と裏がいい具合に共存して見ててはらはらさせるごたごたがめっちゃ面白い

早くアニメ化されてないところまで読み進めたい

Centos7 で NFS サーバを立てて Ubuntu からマウントして使う

サーバの設定変えた時メモっとかないと忘れるので面倒くさがらずメモすることにしました

サーバ側(Centos7)

# yum -y install nfs-utils
# vi /etc/idmapd.conf

Domain = gekogeko.org

# vi /etc/exports

/home/user/share 192.168.0.0/24(rw,all_squash)

# chown nfsnobody:nfsnobody /home/user/share
# systemctl start nfs-server
# systemctl enable nfs-server

ドメインはサーバ側はなんでもいい。/etc/exports の設定はrwとall_squash設定すればいいと思う(多分)。/home/user/share は好きなディレクトリを指定して、そのディレクトリのユーザーとグループに nfsnobody を指定しておく。

ここのオプションはこのサイトが詳しい

クライアント側(Ubuntu 14.04)

# apt-get install nfs-common
# vi /etc/idmapd.conf

Domain = gekogeko.org

# vi /etc/hosts

# initctl restart idmapd

# mount -t nfs gekogeko.org:/home/user /home/user/server
# df -hT

ドメインで指定したドメインで名前解決できるよう hosts に書く必要がある。 アンマウントするときは以下をたたく

# umount gekogeko.org:/home/user

umount しようとして disk busy うんぬんいわれたら以下を叩いて使ってるプロセスを殺す

# fuser -muv /home/user/server

再起動したらアンマウントされちゃうから、起動時に自動でマウントするには以下設定する

# vi /etc/fstab
gekogeko.org:/home/user /home/user/share nfs defaults    0    0

参考

http://www.server-world.info/query?os=Ubuntu_14.04&p=nfs&f=2

http://www.server-world.info/query?os=CentOS_7&p=nfs

https://blog.apar.jp/linux/2712/

ココロコネクト ヒトランダム

ココロコネクト ヒトランダム (ファミ通文庫)

ココロコネクト ヒトランダム (ファミ通文庫)

アニメ見たらあんまりにも面白かったもんだからつい原作を全部買って積んで気づいたら3ヶ月経ってた。しかし今年はこいつを読むと去年決めたんだ。ウラルを読み終わってからすぐ読み始めて1日で読めた。

ラノベはほんとにライトだ。全部何もかも書いてあって、それで何もかも書いてある通りなんだろう。それ以外の事実が無いというか、想像する余地も無い。書いてあることを書いてあるとおり受け取る作業だ。桜木小説と比べるのも変な話だけれど、まぁ、ラノベはこの軽さが良いのだ。桜木小説の直後にラノベを読んだことで、桜木小説の良さとラノベの良さがちゃんとわかった気がする。

しかし、ラノベがアニメ化盛んなのわかるよ、書いてあるとおりに映像にすればいいんだ。前のノイタミナですべてが F になるやってたけれど、解釈の自由度を残した作品はやっぱ難しんだ、ボクはアニメ版 F になるを見て特に真賀田四季に印象の相違を覚えたけれど、ああいう解釈もあるのだと思った。一方でラノベのキャラや話は全部書いてあるから書いてあるとおりに思うだけで終わるから楽ちんだ。

ココロコネクト読んで桜木小説の感想を述べるのは酷い話だけれど、桜木先生の情景に心理の複雑さを綺麗に重ねるの好きだ、愛してる。

ココロコネクトはオレガイルがやりたかったこと、全部書いてあるんじゃないだろうかってボクは思うんだよな…。アニメ見てるから5巻くらいまでの内容は知っているんだけれど、今後の自己犠牲野郎の行く末を見守りたい。

霧 ウラル

霧 ウラル

毎日 30 分読書する時間取るようにしたらいいペースで本が読めてる!借り物の本を読んだ後は積んであった桜木紫乃の新作を読んだ。毎度のことながら桜木小説はお腹が痛くなる。今回は戦後すぐの根室の話だった。桜木小説は根室から釧路あたりのお話がおおい(とおもう)。ウラル、どんな感想を思えばいいのか、よくわからない。今回は 3 姉妹の話だった。ラブレスは姉妹でしたね。男女も姉妹の関係もひらすらに上手くいかないという話は一緒かな、と思うけれど、そうだなあ、ラブレスの百合江は諸行無常を受け入れて"流されて生きる"ことを良しとするのに対して、ウラルの珠生はもっと人間臭さが残っていて、理不尽を悲しむ人だったのに、だんだん意図的に心を殺すことを覚えていくっていう、重い、重かった。桜木小説良い。読み終えたあとのスッキリしない重鎮感が癖になる。

ここまで書いてから読書メータの他人の感想を讀む。

やっぱ「悲しい」「切ない」とか「複雑」とかでなんかうまく言葉にできないんだよなあ。どう表現したらよいのか、本当にわかんないけど、すごい引き込まれるんだよなあ。他の小説で体験できないリアルな人間関係とか、そこで起こるギクシャクとか、たまらんのよな…。

ううん、女性の逞しさについて言及する人もいるんだけれど、珠生の生き方を逞しい、と表現するのはなんだか…。弱いひとじゃないか、とおもう。それをなんとか奮い立たせて、惚れた男のため、そしてもはやなんのためなのかもわからなくなってるなか、相羽珠生を演じる珠生のその生き方に賛成もできないけれど嫌な生き方ではないし、そういうもんかな、とかなんか納得するっていう。ううん。うまく言えん。

追記

調べてたら直木賞とるまえのラブレス書いたあとのインタビュー記事を見つけた

www.webdoku.jp

ここでこう言ってる

アラン・ドロンの映画『愛人関係』を観て、物語の最後はこうでなきゃ、と思いました。ミレーユ・ダルクと弁護士役のアラン・ドロンが冬のニースの展望台に行くんですけれど、最後に銃声がこだましてエンドロールとなるんです。小説でやるとハードボイルドになりそうですけれど、いつか書きたいですね。

これを書いたわけですな…。

あとこれ。

www.youtube.com

担当者からこういうの書いて欲しい!ってくることがあるんだ。インタビューの最後の「女の一生は惚れた男で決まる」っていうのが、なんか切ないなあと思った。