ken
はい、じゃあ、アサイさん、今日もよろしくお願いします。
Yosuke Asai
よろしくお願いします。
ken
はい、ということで、あのブッククラブがね、2冊目始まってますけど、今日は第3章、収録としては2回目かな?
Yosuke Asai
はい、そうです。
ken
今回は例外処理とエラーパターンでしたよね。タイトルが正式なタイトルなんだっけ?
Yosuke Asai
例外バーサス他のエラーハンドリングパターン。
ken
そうですね、例外バーサス他のエラーハンドリングパターンの処理ということで。
はい、今回はトモヒサさんが初ファシリテーション、あの、アサイさん以外の初ファシリテーションということで、
結構、あとタイムゾーンの時間帯もね、今まではヨーロッパが朝のタイミングにやってたけど、ちょっと日本が朝のタイミングにやってみたりとか、結構トライアンドエラーをしてみましたよね。
Yosuke Asai
いや、かなり申し訳なかったですね、これ。あの、今日、日本の方が4人いて、そんな中で朝6時に起こさせるっていう、もっと早く起きてます、皆さんね。
だから、申し訳ないですね。
ken
いやー、これ難しいよね。
はい。
ということで今日もね、はい、今日はあのゲストの方もお呼びしますね。
はい、じゃあゲストの方の紹介を、アサイさんよろしくお願いします。
Yosuke Asai
はい、ということでゲストのしゅんあらはたさんをお呼びしてます。しゅんさんよろしくお願いします。
Shun Arahata
はい、しゅんあらはたです。よろしくお願いします。
Yosuke Asai
はい、しゅんさんは12月くらいに声かけていただいて、確か、あのDDIA終わった後の、何でしたっけあれ、オーロラの話かな?違う。
Shun Arahata
はい、オーロラの話です。
Yosuke Asai
そうですね。の時のリンドク会に参加していただいて、そこから、はい、参加してもらったりとかですね、簡単に自己紹介をじゃあお願いしてもいいでしょうか。
Shun Arahata
はい、えっと、しゅんあらはたです。
今は、えっと、フライミールっていう会社でソフトウェアエンジニアをしています。
フライミールっていう会社は主にデータパイプラインとかを、お客さんからデータを受け取って頑張って作って、
まあ何らかのバリューにつなげるっていう形の会社なんですけど、
今はデータパイプラインとかを書くっていうよりかは、どっちかっていうとサーバー、サービング側で、
主にはNode.jsのバックエンドサーバーとかを書いてたりするんですけど、
最近はKotlinのサーバーとかも書いていて、基本的にはサーバーサイドのエンジニアとして今までやってきています。
ken
データパイプラインを作る仕事とかね、めちゃくちゃ楽しそうですよね。
サービング側ということでしたけどね、今回の輪読会でもそのKotlinのね、ご経験とかもちょい絡めて、
ここら辺ってやっぱり他にKotlin経験者とかもいなかったんで、割と新しい観点を持ち込んでくださったなと思って、
めちゃくちゃ聞いてて楽しかったので、今日はその話をいろいろできたらなと思っています。
Yosuke Asai
なんか本当にしゅんさん入って、すごい引き締まったなっていう感じがして、
さらにバックエンドゴリゴリ書いたことある人が入ってきて、すごい楽しいですね。
ということで、本の感想といってきますか。
ken
そうですね、これ前回思ったんですけど、簡単にリスナーの方向けに、
前やってたアサイサマリーを入れるっていうのやります?
Yosuke Asai
おお、ちょっとだいぶ準備してなかったですけど。
ken
じゃあ僕サマリーでもいいですか。
Yosuke Asai
いいです、お願いします。
ken
そう、多分この本読んでないリスナーの方も多分いっぱいいらっしゃると思います。
Yosuke Asai
いや間違いないですね。
ken
今回、この本はそもそもいろんなトレードオフを話すということで、
今回の章はExceptionとError Pattern、Errorと例外処理ということで、
Javaのコード例を書きながら、例えばこういった例外処理はアンチパターンだよとか、
あとJavaではチェックドとアンチェックとExceptionっていうものがあるけれどもとか、
あとはErrorのヒエラルキ回想構造があるけれども、
これはどういったものをどのようなパターンでちゃんと処理してとか、
処理しないでっていうのを書かれてた本ですよね。
だからむやみにJavaだったらTry CatchとかRubyだったらBegin Rescue Ensureを
ただただ書けばいいだけじゃなくて、書くべきところでちゃんとキャッチしよう。
キャッチしてからもただログに吐き出すだけじゃなくて、
本当に必要なもののデータは何だっけっていう問いを投げかけてくれるようなショーだったかなと思ってますけど、
どうでしょう、法則とお二人あればこんな感じで。
Yosuke Asai
もうそんな感じでいいと思います。
一番最後にパフォーマンスの話とか法則ですけど、
このErrorっていうこのTry and Catchを使うとこうで、これをErrorに書くとこうでみたいな、
そういう話もあって、いろんな観点からTry and Catchとか、
そのErrorを握り潰すみたいなそういう話もあって、いろいろ分かりやすかったですね。
ken
ありましたね。なんかベンチマークフォードがありましたね。
Yosuke Asai
面白かった。
ken
ベンチマーク、そうだ。
ということで、じゃあ今日どんな感じで進めていきます?
じゃあしゅんさんが書いてくれた読書の音というか、ここを深掘って感じにする?
Yosuke Asai
はい、そうしたいです。
Yosuke Asai
結構しゅんさんがつり返り重てて、
臨読回では全部一個一個いけなかったんで。
そうですね。
ken
聞いてみたいですね。
じゃあまずは初手の質問はざっくりこの章を読んでどう思いましたか?
っていう、新しい観点とかありました?
現場でガリガリサーバサイドを書いてレビューとかしあっている観点でいうと。
Shun Arahata
僕はそのチェック等とアンチェック等、
エクセプションがあるっていうのを完全に忘れてたというか、
多分診察の研修のときにJavaを書いてたくらいでしかJavaの経験、
ピュアなJavaの経験ないんですけど、
そういえばそんなものがあったなっていうのはまず思い出してましたね。
確かに。
結構、エクセプションって考え方は面白いなと思ってて、
ある意味関数のシグネチャーに例外の情報が載ってるみたいな感じだと思うんですけどね。
この関数はどういうエクセプションを投げますみたいなのが。
でも最近、タイプスクリプトのほうのバックエンドのほうが主に書いてた時期が長いんですけど、
タイプスクリプトだと例外を投げることをすると、
それ型情報から分からないからあんまり良くないっていう話をよくしていて、
戻り値の型にエラーの情報を入れると、
キャッチし忘れとかそういうのがなくて、
型のレベルでちゃんとキャッチしなきゃいけないレイヤーをキャッチしてるとか、
そういうのが分かるようにしようっていう流れが最近はタイプスクリプトだとあるんですけど、
それってやりたいこととチェックドエクセプションと気持ちとしては同じ。
チェックドエクセプションもトライキャッチしなかったらコンパイルできないようにするっていうのと、
タイプスクリプトの最近の流行りの例外を返さずに戻り値で頑張るっていうのと、
一緒だなっていうのが初めに結構思って。
ken
なるほど、そこら辺僕ちょっとタイプスクリプトガリガリ書いてるんで分かんないんですけど、
最近のトレンドとかね。
エラーを返すときはどういう型を書くんでしたっけ?
普通にスローしちゃうと、それって戻り値の型に現れないじゃないですか。
このファンクションはスローアブルエラーみたいな感じを書くということですか。
例えば2つ数字を渡して、それの割り算をするっていうファンクションを書くとしますと、
AとBを渡して、中でやってることがシンプルにA割るBを返すみたいな。
10を渡して2を渡したら5が返す。
でもこれ0をBに2つ目の引数に渡したら10割る0になって、
これ計算できないじゃないですか。
例えばこういうシンプルなファンクションを書くときって型ってどう書くんですか。
Shun Arahata
型で多分エラーの情報を渡そうとしたら、
例えばサクセス型とフェリア型ってやつをまず作ってあげて、
それのユニオン型みたいなのをその関数が返しますみたいなふうにやるとかですね。
ken
なるほど。
サクセスってオリジナルのタイプをインターフェース化タイプか何かを定義しといて、
ということですか。それはもうビルドインでネイティブで入ってる方ですか。
Shun Arahata
いや、多分そういうのを何だろう、ビルドインにはないんですけど、
サードパーティーライブラリーでそういうのを書きやすくするためのライブラリーを結構作ってますみたいな人は何人かいたり、
お料でそういう方のそういうのをうまくするためのコードを書いてますみたいな人は多分いる。
ken
オビニオネイティブなライブラリー。
はい、オビニオネイティブなライブラリー。
面白いですね。
Yosuke Asai
呼び出し側が関数を読んだときに、
サクセスかどうか、もしくは失敗かどうかみたいなのをそれぞれ分岐して対応していくみたいな感じになるんですかね。
Shun Arahata
そうですね。
ken
語法っぽいみたいな書き方になるってことですよね。
Shun Arahata
そうですね。
ken
返り値が2つというか、サクセスかフェイラーが返ってくるので、
失敗だったらこう、サクセスだったらこうみたいな書き方をすると。
そうですそうです。
ken
これもどっちも混合して使ってたりするコードを読むのめちゃくちゃ辛くないですか。
辛いですよね。
アンディファインドとぬるって、
Yosuke Asai
そもそも言語設計ドーナノ的なのもあると思いますけど。
逆に初心者とかあんまりコードを書いたことない人がコードを読むっていうカーテンだと、
いきなりリザルトが出てくるとまた分かりにくいなっていうのをちょっと思うことがあって、
こういうリザルト関数から返ってくるものが、
エキセプションを出したくないっていうバックグラウンドを知らないと
なかなか読みにくいんじゃないかなっていうのもあるので、
選ぶの難しそうだなと思いましたけど。
ken
そうですよね。
Shun Arahata
業務のチームとかやろうってやると、
結構みんなのこれに関する苦しみとかの経験が多くないと、
多分導入するのは難しいんだろうなと思っていて、
僕も業務ではそういうのはもうやってない。
Yosuke Asai
学者がないとこでライブラリを書いたりしたら、
逆にそれを広めようっていう力は働くんですかね。
そうですね。
ken
でもここら辺どうなんですかね。
結構割と宗教先生寄りのところもあったりしない?
BeamかEmacsかみたいな自分が育ったプログラミング言語に慣れてると、
そのスタイルでやりたいとかわかんないですけど。
Yosuke Asai
そうかもしれないですね。
確かに難しいですね。
ken
これだけで。
で、そのGoの話も何か数年前Goが例えば出て、
みんなやってた頃って書くのめっちゃ大変じゃん。
何で毎回IfErrorNotEqualsに書かなきゃいけないんだって、
みんなやってたと思うんだけど。
全然何ですか、エビデンスのない意見ですけど。
最近だとコード保管のツーリングのほうがすごい充実してきたので、
みんなそんなIfErrorNotEqualsにいるってタイピングはしてないと思うんですよ。
もうGitHubコパイロットとか、
あとAIビルドウィンのエディターとか使ってれば書いてくれるんで、
タブ保管してるだけだと思うんですよね。
なんで書くのがめんどくさいっていう不満がツールによって解消されるから、
みんなメリットのほうを見始めたみたいなのがあるかもしれない。
Yosuke Asai
なるほど、面白いですね。
時代の変化で書き方が変わっていくんですね。
ken
他はどうかな。
何か面白い観点ありますか。
Yosuke Asai
Tomoisaさんの例外処理の方針を決めたほうがいいっていう話に
結構コメントしてる方が多くて、
僕もちょっとコメントしたんですけれども。
ken
これは元々どういう、
Tomoisaさんのコメントでしたっけ。
Yosuke Asai
プロジェクトがあって、
エンジニアが複数かかわると思うんですけど、
そのどのプロジェクトでも例外処理をどう行うかっていうのを
ちゃんと決めておいたほうがいいよねっていう話で、
後に回してしまいがちだけど、
やっぱりエラーハンドリングとか、
障害対応とかするときに、
そうして楽だよねっていう話があって、
これしゅんさんもコメントしたと思うんですけど、
この辺の感想聞いてもいいですか。
Shun Arahata
僕の例外処理のところ。
そうです。
具体的な例を出していたとこですよね。
そうですね。
ある関数の中で、
404エラーになるようなエラーを返しちゃうっていう、
そういうふうな実装していたところがあったりして、
実装しながら、
このエンドポイントのためだけにこの処理変えたから、
404返していいけど、
他のエンドポイントで404じゃないやつを返したいときあるんじゃないかな
みたいなことを思ってたりしながら、
そういう実装をしちゃうんですけど、
実際には、
例えば同じコードなんだけど、
実は同じサーバーがGRPCもサービングしていて、
ってなるとGRPCのエラーコードを返さなきゃいけないから、
関数の中でエラーコードまで決めちゃったエラーを出しちゃうと、
結構困るから、
後で書き直さなきゃいけないみたいなのは結構あって、
エラーを実際どこで出すかっていうのが難しいというか、
僕はどっちかっていうと、
なるべくエラーは出さないほうが好きなんですけど、
エラーというか例外を出さないほうが好きで、
アンディファインドみたいなやつをエラーとして代用できるなら、
とりあえずアンディファインドを返すとかして、
呼び出し側でどうするかを決めて欲しいなっていうふうに思っています。
トライキャッチを変えてしまってもいいんですけど、
トライキャッチ長くなるし、
忘れがちなところはあると思うので、
自分はなるべくエラーを返したくないなって思ってしまいます。
ken
だからこれAPIを設計したり実装したりパブリックに公開する観点から言うと、
多分考えなきゃいけないエラーっていくつかパターンがあると思って、
例えばAPIを使う全員が想定し得るジェネラルなエラー、
例えばAPIを使うのに認証と認可が必要だったら、
ken
オーソライザーとかオーセンティケイト系のエラーは多分どのエンドポイントでも出るし、
例えばバックエンドサーバーが壊れているときに動かない系のステータスコードを出したかったら、
今ビジーなんでバックプレッシャーしてくださいとかっていうのを出すかもしれない。
でも例えばエンドポイントごと、
それこそチェックアウト系決済系のエンドポイントではもっと細かくエラーコードを
エンドポイント側で決めたくなったりとか、
多分その2段階があると思っていて、
それによっても実装の仕方とかライブラリーがどこまで対応しているか次第で、
書き心地も違うだろうし、レビューも違うだろうしっていうことなんで、
本当に書いてる通り例外処理の方針ってのをたぶんかっちり決めないと、
いろんなところに雑にエラーレスポンスを返すコードが散らばっていく、
それをリファクトするのがただひたすら難しくなっていき、
それがパブリックAPIだともうクライアントが依存しているので、
バックコンパティビリティを考慮しながらリファクトするのが超難しくなる、
みたいなのが聞いてと思いましたね、これは難しい話だなと思って。
アサイさんは語を書いてないって言ってたけど、Javaですか?
Yosuke Asai
僕はJava書いてて、あとPythonもちょっと書いてるんですけど、
正直そんなに例外とかを気にしなきゃいけないようなコードを
あんまり書いてることがなくて、そんなにゴリゴリコードを書いてこなかったので、
ken
SR側だもんね。
Yosuke Asai
そうですね、ツールで使うやつとか、
書いてるくらい、Pythonとかも書いてて、
結構書くときはChatGPTとかに聞きながら書いたりしてるんですけど、
この前ChatGPTに出してもらったコードで、
トライキャッチするコードがあって、
それもあんまりよく考えずにそのまま使ってみたんですけど、
よく考えたらそこも別にトライキャッチなんかしなくてもよかったな、
みたいなことを思ったりして、
今回の本を読んでまた自分の理解も向上したんで、
よかったなと思ってますけど。
ken
でもこの提案としてresultとかtryのパターンでもうちょっと返して、
できそうみたいなコメントが書いてありますね。
やっぱりこの本の最後の方かな、
でもトライモナードの話というか、
ファンクショナルにどう書いていくかみたいなところで、
トライモナードの話とかもあって、
これ試したらいいんじゃないみたいな思ってる参加者は結構多いような印象がありますよね。
確かに、トライモナード。
ちなみにしゅんさんの会社では、
ファンクショナルプログラミングっていうのは現場で使われてるったりしますか。
Shun Arahata
いや、全然。
タイプスクリプトは書いていて、
ファンクショナルが好きそうな人は何人か。
この人は本当に。
ken
好きそうな人が勝手に書いてるみたいな。
Shun Arahata
いや、本当にファンクショナルプログラミングをタイプスクリプトで、
もっとちゃんとやるためのライブラリーとかを使って本当は書きたいんだろうなっていうのを。
よくそのライブラリーの話とかされる。
でもまあ、
みんながそのレベルというか、
みんながそこにツラテンを感じているってわけでも、
多分ないので、
あんまりすごいファンクショナルにやろうっていう感じではないですね。
ken
やっぱファンクショナルの世界観ってピュアだからね。
副作用をさ、
すごいこだわってさ、
副作用と副作用のないものをさ、
分けてピュアな世界観を大事にするじゃない。
テストのしやすさとか、
ユニットテストのしやすさとか、
副作用の無さとか、
そこに美しさはやっぱ感じるんですよね。
ハスケルやってたりとか多分、
その数学のバックグラウンドがあったりすると。
で、多分Rxとかもとかかな、
ファンクショナルプログラミングをやってくれるライブラリーとかもいろいろあって、
Java Cookpad時のJavaのとあるソースコードには、
ファンクショナルスタイルが入ってたりとかしたけど。
多分全員、
DDDとかとも一緒で、
ここら辺全員が足並みそらないと結構、
開発速度出ないと思うんですよね。
そうですね。
Yosuke Asai
そう考えると、
なんていうか、
バックエンドって、
SREとかで歴史が長いって言うとあれかもしれないですけど、
そういう宗教戦争みたいなのが大変そうですね。
どうなんだろう。
ken
そうね。
大変というか、
Yosuke Asai
やっぱりみんなの、
なんていうか、
足取りを生きさせるのが難しいのかなってちょっと思います。
ken
啓蒙が難しそうじゃない。
例えばファンクショナルプログラミングでカチッと経験された人は、
それの良さを知ってるから、
それでやろうよって思うわけですよね。
はい。
学習コストあるけど。
で、例えばDDDとかもそうだと思っていて、
学習コストは大変なんだけど、
山を登り切った時の見える世界はめちゃくちゃいいからみんな登ろうよみたいな。
やっぱりそこをちゃんと導入できてる現場は、
やっぱりその学習コストの大変さとか、
採用とかトレーニングとかにもちゃんとインベストして、
投資してやってるから成功する。
だけど、
例えばボトムアップで好きな人がただやってくっていう啓蒙の仕方だと成功しないと思うんですよね。
やっぱりそのCTOとかVP of Engineerとかにいる人が、
ちゃんとその予算とか投資する大事さを持って、
こうちゃんと啓蒙していかないと、
開発スタイルとして文化みたいなもんだからさ。
なるほど。
Yosuke Asai
確かにそういう会社を選ぶとか、
そういう時にあたってはやっぱりそれが共感してるとこに入らないと、
なんていうか辛い思いするかもっていう、
全然話違いますけど。
ken
話違いますけど。
ちょっと思いましたね。
しゅーさんの会社は特徴的なカルチャーってあるんですか?
そういうみんなビーム使ってますとか。
Shun Arahata
特徴的なカルチャーそんなに。
ベイゼルを使ってるとかが特徴的なカルチャーかもしれない。
Yosuke Asai
ベイゼルって何ですか?
ken
何ですか?
Shun Arahata
ベイゼルってビルドツールなんですけど。
ken
あれ?違うか。
Yosuke Asai
バゼルかと思った読み方、あれ?
BASELでしたっけ?
Shun Arahata
バゼルであってます。
ken
バゼルを使ってるっていうのが結構特徴的かもしれないです。
Yosuke Asai
じゃなかったら何を使うんでしたっけ?
Shun Arahata
だからポリゴットっていうか、
そのバゼルはいろんな言語に対応してるビルドツールなんで。
多分普通だったらメイブとか。
分かんないですけど。
メイクファイルでもいいんですけど。
ビルドツールなんですけど、
いろんなに対応しているので、
一応ベイゼルで使って、
TypeScriptとPythonとかJava系の言語とか
ken
全部同じビルドツールでビルドができるみたいな風にはしているんです。
スーパーセットメイクファイルみたいな認識なんですけど、
Shun Arahata
あってますか?
一応それでいいと思います。
Shun Arahata
いいところはCIが、
レポジトリが1個なんですけど、
5分とかぐらいで終わってくれるんですよね、テストとかが。
ken
それはなぜですか?
Shun Arahata
キャッシュをめっちゃ頑張ってやってくれてるんですよ、ベイゼル。
ken
なるほど、なるほど。
Yosuke Asai
いろんな言語を使うときとかにも使いやすいみたいな。
Shun Arahata
そうですね。
結構、どうなんだろう。
プロトとかあると、
プロトの1個の変更がいろんな言語に波及したりすると。
ken
プロトクロパファーのプロトファイルのこと?
はいはい、そうです。
Shun Arahata
結構そういうのいろいろあると思うんですよね。
1個の変更がいろんな言語に波及したりすると。
そういうときに、
全部1個のビルドツールでうまく走ってくれてると、
いろんな言語での影響とかがあっても、
割と1個のCIが落ちてくれるとかで、
多分管理とかやりやすいとかは、
結構そういうメリットはあるのと、
CIが早いっていうのは素晴らしいことですね、開発者としては。
ken
あれは元々Googleから出たツールでしたっけ?
Shun Arahata
元々Googleですね。
ken
あの規模でスケールするようなパフォーマンスが出る
CIツールを作ってるわけだから、
まあ早いよねっていうことなんですかね。
たぶんいろんなオプティマイザーに召喚されていると。
まあ確かにね。
普通にボトムアップでみんな好きなサークルCIとか
GitHubアクションを使っていって、
今後キメランな感じになるよりは、
ちゃんとそこらへんガチッと決めてるっていうのはいいかもしれないですね。
そうですね。
なるほどね。
じゃあ元の本のトピックに戻すと、
じゃあそうですね、
もう一つぐらい、
ブッククラブに出てきた他の方の意見でもいいですけど、
お二人の方でこのトピック観点面白かったなみたいな、
それぞれ一人出して終わる感じにしましょうか。
いいですね。
思いついた人からいきましょうか。
Yosuke Asai
今回新しい参加者のNaoさんって方がいて、
その方がフロントエンドにいじるんですけど、
やっぱりその観点があって、
なんかすごい率直に書いてくださってて、
分からないことは分からないって言ってくださるんで、
かつその分からないところながらも、
自分なりの過去を思い出して書いてくださってて、
すごい自分勉強になるというか、
あとフロントエンドだと、
UIをユーザーに見せなきゃいけないんで、
バックエンドみたいにクラッシュするみたいなのはできないという話があって、
そういう話も全然違う観点で勉強になったし、
良かったなと思いました。
ken
この観点めちゃくちゃ良かったですよね。
僕もフロントエンド分からないっていうのもあるし、
やっぱこう書いてくれる観点が、
なんか自分が普段業務で触れない観点とかだったんで、
なんかすごい勉強になったよね。
すごいメンバーが多様になってきたというか。
Yosuke Asai
本当に。
ken
本当に楽しかったです。
Shun Arahata
セントリーに投げるっていうのもすごい大事だと思います。
確かに。
UIってお客さんの、
お客さんってカスタマーのブラウザー環境で動いてるから、
こっちからロギングしようっていうのが、
バックエンドとかだと会社のインターナルサーバーで言うんですけど、
確かにキャッチしてちゃんとセントリーに投げてあげないと、
お客さんの環境でどういうバグが起こってるかとかが、
トラックできないから、
キャッチしてセントリーに投げるってすごい、
フロントエンジニアが大事だなっていうのを思い出しましたね。
ken
そうですよね。
これ僕も本当にそれを思って、
もう一つすごい良い観点を返ってくれてたのが、
多分フロントエンジニアの観点で言うと、
バックエンドに投げていろんなバリューが返ってきますよね。
JSONとかで、
プロトコルBufferでもいいんですけど、
一つ一つのバリューがヌラブルかどうかをチェックしなきゃいけない。
ヌラブルであればあるほど、
そのチェックがめちゃくちゃ長くなって複雑になっていくってことですよね。
例えば100個フィールドが入ってきたときに、
100個全部ヌラブルだと、
一つ一つにヌラブルかどうかみたいな分岐側を、
100個に対して全部しなきゃいけないんで、
それめちゃくちゃ大変だし、
例えばフルネームとラストネームが別のフィールドで返ってきて、
それぞれヌラブルだったら、
考えなきゃいけないパターンって4パターンだよねみたいな。
ラストネームがあるなしのパターンと、
フルネームがあるなしのパターンだよねとか、
っていうことがあるんで、
フロントエンドエンジニアの目線で例外処理の大変さっていうのがあって、
じゃあそれをどう解決しようかみたいなのは、
コメントで議論だったのかな。
Yosuke Asai
ありましたね。
ken
そうだね。
例外開発するどのフェーズで、
バックエンドチームとフロントエンドが話し合うかみたいなのを、
確かGoogleドックのコメントでちょっと議論になってた気がするけど、
これはやっぱり両者の足並みが揃わないとうまくいかないところなんで、
本当にいい観点だなと思いましたね。
Yosuke Asai
いやー本当に本読んでると思ったら思いつかないですね、こういうの。