OOCに行きました
こちらのイベントに行きました!
あの、この規模のカンファレンスを初開催で、無料で実施ってどういうことなの・・・!
ちなみに、めっちゃくちゃ満足しました!楽しかったです!
学びとして
言語系のカンファレンスなど、『手段』における話というより、
『概念』『思想』に対するカンファレンスなので、『自分の学び』をどこに置けるのかなと迷ってました。
で、実際に行くと、
『自分が感覚的に理解していたものの言語化』『そんなに間違ってない』ってことがある程度意識出来たのは非常に良かったです。
感覚的に思っていたことに対して『単語を知る』。
いくつかの考えを『繋いで一つの思想を自分の中に作る』。
これの機会って、自分で作るのが難しいことだと思うので、
人生のこのタイミングでこのイベントに行けたのは非常に大きかったと思います。
新たに自分の中に出来た視点
プログラムに対する見方がちょっと変わった!
( ゚д゚)ハッ!
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
そうか、『定義』をしたから、
プログラムで『間違い』と判断する『軸』が出来上がるのか!
『定義』がなければ、ただの動作だから、間違えてないから。
そして、その思考でテストを考えると・・・?#ooc_2020 #ooc_b
『テストコード』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
って
『概念をコードに定着させる』
って認識。
プログラムは手続きしか書いてなくて、
クラス名を名付けたが、関数に意味はなくて。
『猫が鳴く』という『定義はこれだ』と書くことが『テストコード』
だから『テストコードはドキュメントにもなりえる』って思うの。#ooc_2020
セッション
こっからは、各セッションの一言コメントと、自分のTwitter抜粋です!
keynote: Object-Oriented Diversity
成瀬さんの!
オブジェクト指向という話において、単語一つにも背景があって、コンテキストがあって。
異なることを見ている場合もある。背景を汲み取り、多様性をちゃんと認めるという話、一番最初に聞くセッションとして最高の話だったと思います!
関心の分離って何?
思考については、このつぶやき
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
あーこれ今あらためて難しいなーって思えた。
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
『対象が同じでも目的によって関心が変わる』
環境に着目して、関心事に気を配る
■個人的な感想
どんぶりを『食べ物を乗せるお椀』と捉えるか『蓋』と捉えるかとか#ooc_2020 #ooc_a
明日使える思考としては、これかなって思いました!
『違うものを同じように扱う』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
→同じことを何度もやるとレベルアップして速度高まるよね#ooc_2020 #ooc_a
構造的視点で抽象化
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
プロセス視点で抽象化
どちらにしろ、
『手段』としての『共通処理』を共通な文脈として捉えないようにしたいなって。
たまたま手段が一緒パターン#ooc_2020 #ooc_a
明日使える思考があった素敵なセッション(‘ω‘ )
Chatworkのドメインをモデリングした
トップダウンとボトムアップでモデリングのアプローチをした話。
ツイートで私の思いが全部入ってるのではりはり
Chatworkさんのランチセッション!
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
現状把握→理想のモデルを描く#ooc_2020 #ooc_a
マニュアルに個人名
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
『その人しか出来ない』
Oh...#ooc_2020 #ooc_a
RDRAのトップダウン
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
→有効なのは見えた
が、これ以上の労力に対して、今回の目的に対するリターンは?どこまでやる必要がある?
一旦止めて、ボトムアップからのアプローチに変更#ooc_2020 #ooc_a
> 既存の言葉の意味を調べる
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
> 有識者にヒアリング
わかる・・・
(そして、知ってる人が退職したとか、もしかしたら今は使われてないかもとか私あった・・・)#ooc_2020 #ooc_a
> 言葉の意味がわからない
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
> 誤字か違うものかわからない
わかり味が深すぎて涙が・・・#ooc_2020 #ooc_a
既存の言葉を並列に並べていたけど、
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
ヒアリングしていくと階層が見えてきた#ooc_2020 #ooc_a
VOYAGE GROUP流開発文化
VGの有名なエンジニア技術力評価会について。
質問で、『社外のエンジニア』が来る時もあるという話から、以下の話がもらえたのはすっごく良かった!
『社外の』『エンジニア』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
という部分も重要なファクターだったんですね_φ(・_・
たしかに、自社内だけでしか通じない言葉を使わずに表現できるようになっていく、そして蛸壺化回避というのは思いもしなかった!
無茶振りかなって思ったけど質問してよかった(^o^)#ooc_2020 #ooc_a
READYFORにおける複雑なドメインとレガシーシステムとの戦い方
無理やり作成したボロボロコードを、技術的負債を言うけど、
その割合とか、『負債』という単語を注目してしっかり考えたことなかった・・・
その負債を返すことで、より速度が増すよみたいなの、たしかに言われてみれば説明なるほどってなってる
> 技術的負債の説明を試みる
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
> ステークホルダーに説明する
うわ・・・うわ・・・(´;ω;`)つらいよね#ooc_2020 #ooc_a
バランスシートのアナロジーとしての技術的負債
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
純資産と負債で資産が成り立つ#ooc_2020 #ooc_a
借り入れを一気にして、利子を延々と返すの頑張っている状態#ooc_2020 #ooc_a
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
オブジェクト指向の「語る」と「示す」
言葉での限界と、それをどう捉えるかは私が一生悩んでることで、
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
わりと近い話と思って来たやーつ#ooc_2020 #ooc_e
私が一番感動したやつ。
私が今まで大切に思ってたことを、めっちゃ上手く説明してくれてた・・・
オブジェクトが成り立つと自分が想像している世界から、意義を取り出している#ooc_2020 #ooc_e
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
思いつく限りの『意義』を記述することは可能だけど、書ききれない
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
(わかる)
日本語の意味を理解していることが前提と一緒で、
『特定の前提を理解している』前提で私達は書いている#ooc_2020 #ooc_e
『自分が想像している世界』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
→ドメインモデル
ドメインモデルとは、
『現実の世界』ではなく『私達が想像しえる世界』
『鳥が飛ぶ、豚が飛ぶ』非現実だけど想像出来る#ooc_2020 #ooc_e
■私の考え
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
そもそもに、
『動物』とかも、誰かが定義したもので、『誰かが想像した線引』
『現実が一番だ』って言う時点で、その現実は『多数派の常識』でしかないと思うんだ。#ooc_2020 #ooc_e
『椅子』は『重力があり』『座るという文化があり』という前提があって生まれるもの#ooc_2020 #ooc_e
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
『示す』とは
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
将棋に『銅』を追加したい
→移動は金銀より少なく、桂馬より多いのでは?
・駒毎に動き違う、金銀という価値がわかっている
『示す』とは、金銀の価値がわかっているところ#ooc_2020 #ooc_e
さっきみんなにも見てほしいって言ってたやつ#ooc_2020 #ooc_e https://t.co/672D5FLaoj
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
オブジェクトの無い世界
歴史とかを、 異世界転生ものストーリー仕立てでお話してくださったやつ。
■構造化定理
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
順次・反復・分岐#ooc_2020 #ooc_e
■段階的抽象
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
抽象化したオブジェクトを設計してから開発する方式#ooc_2020 #ooc_e
■モジュール化
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
構造化定理には、サブルーチンの考えがない。
■サブルーチンを自由にする
・名前つけれて、
・引数として渡せて、
・手続きの結果として返される
第一級関数。#ooc_2020 #ooc_e
概念投影によるオブジェクト指向設計の考え方とその方法
私が説明に困っていることを、めっちゃ的確に説明してくださってたものだった・・・
この考えにやや近い思考で私コード書いてたφ(・・
と思ったら、話聞いてるうちに、上で書いた別な発想生まれて、これの扱いに困ってる/(^o^)\
■設計が難しく感じる
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
・正解がわからない
・指針がわからない
・何から始めればいいかわからない
・GOALがわからない#ooc_2020 #ooc_b
正解がわからないってめっちゃ難しいんだよね。
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
せめて不正解がすぐにわかれば、正解が出るまで繰り返すとか出来るけど、
正解かすらわからないんだよねこれ・・・#ooc_2020 #ooc_b
無の世界から、現実世界を代行してくれる新たな世界を作り上げる#ooc_2020 #ooc_b
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
『無の世界から作る』って前提を説明で共有してなかったのが過去の私の説明で後悔してる。いい表現だなぁってなった。
■アプリケーションは
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
現実世界の活動を代行している
- 正確
- 高速
- 記録が残る#ooc_2020 #ooc_b
■存在とは
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
『認識』出来る
『概念』が定義されていること
イデアから取り出す話を思い出すね#ooc_2020 #ooc_b
■公理
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
無条件に正しいと定められているもの
■定義
公理をもとに新しく正しいと定めたもの#ooc_2020 #ooc_b
■公理の型
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
言語が提供するデータ型#ooc_2020 #ooc_b
■Activity
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
アプリケーションの有無に限らず存在する大前提
■ApplicationLogic
Application上で表現するために必要な論理・ロジック#ooc_2020 #ooc_b
オブジェクト指向のその前に - 凝集度と結合度
凝集度、こんな区分けあったんだ・・・ってなりました。
そして、『言葉』を知ったってことは、区切りを認識できるようになったのと共通言語が手に入ったってわけで!
明日から使えるコードに対する認識を手に入れました!
■凝集度
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
論理的凝集
→論理的に似ている処理が関数にまとまっている
(凝集度比較的低い)
使う側内部構造を意識する必要がある#ooc_2020 #ooc_e
■手順的凝集
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
実行順序に意味がある
■通信的凝集
手順に意味があって、手順感で同じ値を利用する
■逐次的凝集
一つ前が返した値を使う
■機能的凝集
機能的に関係してない関数が混在していない#ooc_2020 #ooc_e
セット・アップや、ライフサイクルなど
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
必要に応じて実施する必要が出てくる
つまり、許されない時間的凝集がある#ooc_2020 #ooc_e
『たまたま同じ時間に実行するだけで、機能としては無関係な処理を同じ関数に記述』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
わかるぅ。やめてーってなる#ooc_2020 #ooc_e
途中まで一緒だから、if文書いて、
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
一つの関数でユースケース複数に対応出来るようまとめちゃえ!
やめてぇ!
『たまたま一緒』って言葉は一生言っていきたい#ooc_2020 #ooc_e
ドメイン駆動設計を支えるアーキテクチャテスト
アーキテクチャテストツールの ArchUnit ってのがあるのか・・・!
ってなってました。ここらへんまだ私触れてないから実況が少なめ・・・!
アーキテクチャは、依存関係のガイドライン#ooc_2020 #ooc_e
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
■ガイドライン
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
人が決めて、守らせる
■何が難しいのか
アーキテクチャを維持するのが難しい
知識の属人化、スキルばらつき#ooc_2020 #ooc_e
異なるモデリングパラダイムから見るオブジェクトモデル
真っ先にわかったのが、『クラスベースでのオブジェクト指向』から来た私は、
たしかにメッセージベースの部分を理解するのめっちゃ詰まる、難しい!ってなった。
逆に、それに気がつけたのはいいと思った!
もう少しで自分の中に、自分なりの結論出せそうだったけど、まとめきれなかった・・・
■クラスベースのオブジェクト指向
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
抽象データ型のスーパーセット
■メッセージベースのオブジェクト指向
オブジェクト同士がメッセージを送るのを基本とする考え方#ooc_2020 #ooc_c
抽象データ型、モジュール化の手法のひとつ
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
クラスも、モジュール化の手法のひとつと言える#ooc_2020 #ooc_c
■モデル
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
必要な情報をまとめ、不要を捨てた
■手続きはモデルか?
→別のパラダイムに委譲した#ooc_2020 #ooc_c
『抽象化・意思決定を遅延した部分を、他のパラダイムに委譲した』
— ういろう@毎日エンジニアブログ (@nyamucoro) 2020年2月16日
ここの部分、もう少しで理解出来そうで理解出来ない・・・#ooc_2020 #ooc_c