Coconeriホール余談ですが、駅近くに唐苑という、大きい黒酢豚をナイフとフォークで切って食べるランチが900円ちょっとで食べられます。お肉が柔らかくて美味しいのでおすすめ。手動でテストを行わなくて良いわけではなく、最終段階として手動のテストが入る。Unitのテストスイート数となってちゃんと理解していない人がたまにいる。2018Javaのソースコードかつ英語だけど、テストの粒度とか流れとかが理解できるので読んでみると良い。E2Eテスト同じものと言われることがある。アプリケーションをE2Eでテストすることは、多くの場合UIを介してテストを実行することを意味する。UIのテストはE2Eで行う必要はなく、バックをスタブ化させてフロントエンドをユニットテスト化させる。E2Eテストではメンテナンスコストが高いのでなるべく最小限に抑える。ユーザーがアプリケーションで行う価値の高い部分や、中核の部分をテストする。パフォーマンスのテストとかは見落としがちだが、E2Eテストでできる(デプロイしたら7秒かかるようになってしまったとか)。Driver今まで一番メジャーだった。PuppeteerNode.jsからChromeを操作。npmでブラウザがインストールされるので環境構築が必要ない。PuphpeteerPHPからpuppeteerを動かすライブラリ。firefoxこれまでの課題を解決するPuppeteerWebテストは遅いという都市伝説。テストがFlakyという都市伝説。waitforで壊れやすい。WebDriverは判定処理がないので、Seleniumが定期的にチェックに行き結果的にタイムアウトすることがしばしば。解決(Puppetterではブラウザ側で実装されている)。どこでテストが失敗したかわからない。Puppeteerの反響を受けて作り始めた。Puppeteerの開発チームのメンバーが何人か入ってやっている。PuppeteerはGoogleの管理。組織に広めるには例えば、QAチームが毎回やっているリグレッションテストを置き換えてみる。その上でどのくらいQAの作業が軽減されるかを事実ベースで話すのが良い。(関心ゾーンメインのコードの異常ケースコメント、ドキュメントテストコードの可読性、コメントCI選定、環境変化への追従PR説明欄を丁寧に書く相手をまず肯定して、「でもうまく動かないからこうしてみたよ」みたいな感じ。使うと、断定より表現が柔らかくなるので便利。公開収録PHPの現場ホームページhttps://php-genba.shin1x1.com/最近よくご登壇される成瀬さんという方を交えた対談。新しい書籍を出すので、その話も絡めてのインタビュー。クリーンアーキテクチャチームになった時に「こういう時はこうすれば良い」の答えが出やすいよう明示されているアーキテクチャ。10年後を見越して書くべき場所がちゃんと明示されているアーキテクチャを選定する​あらゆる層を実装しなければいけないので、普通に書いていると時間がかかる。そこはコードジェネレーターなどを使って、エンジニアリングの力で解決する。手数を減らす意味合いもあるけど、開発者にちゃんとしたアーキテクチャの雛形を指し示す意味合いもある。組織に広めていくのは信頼を得て空気を作っていくしかない。「あの人外で登壇もしてるし」などなど。結局人と人の関係の問題。ソフトウェアは人の要因が強い。​Webとか記事でクリーンアーキテクチャに入門し、そのあと本を読むと、自分の中で「ここってこうだからだろうな」という裏付けがされた状態で本を読むことになる。すると、本から得た知識が自分で考えた知識のように自信が持てる。​クリーンアーキテクチャはパターンが決まっているので、コードの自動生成と相性が良い。DDD書籍を出そうと思ったきっかけ。主題はモデリングだが、パターンでつまづいている人が多い。パターンとしてはさほど珍しいものではない。Webだと本当に知って欲しい人たちに届かない。興味がある人は検索してくれたりしてキャッチアップしてくれるが。​Webで省いている根底にある考え方などを噛み砕いて説明しているのが今回の書籍。人によって解釈が違うところが出てしまいやすい。パターンとモデリングの話は別。パターンに興味のない人がコードを書くより、パターンを知っている人がコードを書く方が害はない。​DDDのパターンを使った実装と、ドメインを中心に考える話は全く別物。前者をDDDと言ってしまうのはちょっと恐ろしい。​よく相談受けるつまづきどころは、実装するの大変ということ。回答としては、「コードジェネレータ作ろう」ということ。面倒な部分はツールを作ろう。​ユビキタス言語は、お互いが意思疎通するための共通基盤としての言語。海外に行った時のボディランゲージはユビキタス言語。どっちかの言葉でも単語でもなく、お互いがコミュニケーションを取るためのもの。​ビジネスがドメインになるので、ビジネス側の言葉を使うことが多い。エキスパート側の言葉を開発側が使いにくかったりしたら、「使いにくいから少し変えよう」と持ち上げなければいけない。捉え方をお互い見つめ直す。言葉の定義が揺れていないかなど。​コードを見れば業務がわかるのが理想。​コードを書くときは英語になるが、日本語との紐付けに関しては、変換Excelファイルを作ったりする必要がある。全体のアーキテクチャを決めるデータ保持、テーブル設計を考える開発環境の種類(本番,stg)ソフトウェア側のアーキテクチャの順で決める​。途中joinの場合は1、3、5を知らない状態。「どこから切り込むか?」の回答は、「どのようなサービスか」を知るところから。「どのようなサービスか」がなぜ必要か開発をする上での気づきを多くするため。機能を1つ作る時、その機能だけでサービスが成り立つだけではないため(他との連携)。「この機能だと、こことバッティングしませんか?」など。「どのようにデータを保持するか」がなぜ必要かサービスの機能や実装上の制約の情報が色濃く出ているのはコードではなくデータベースのテーブル設計。Webアプリケーションは極論してしまえばデータの出し入れ。技術スタックの知識があったとしても、開発開始までには手間と時間がかかる。開発開始までのオーバーヘッドを小さくすることを目指す。Requestオーバーヘッドをエンジニアリングの力で解決するオーバーヘッドが小さいことを前提とした組織を作ることができる。ここに辿り着くまでに人や工数がかかっても、最終的には開発スピードが上がって幸せになれる。STNSDBドキュメントのCIと周辺情報のリンクを管理tblsCIに組み込めるので、ドキュメントの更新忘れを機械的に防ぐことができる。ドキュメントをMarkdown出力できる。Murata@Canon11もうちょっとで社会人4年目になりそうなエンジニア。OMO事業のベンチャー企業でバックエンドやってます。帰り道で音ゲーやりがち。メインはPython。upLoginユーザーは見つかりませんでした。