CROSS2014に参加して、ぶつかり稽古で登壇してきました
なんか新素材ができたので置いておきますね。提供:sorah++
CROSS 2014というイベントがありましたが、ありがたくも登壇のお声がけをいただき、コードレビューCROSS 〜ぶつかり稽古 2014初場所〜というセッションでお話をしてきました。運営の皆様、お声がけしてくださったセッションオーナーのstudio3104さんありがとうございあました。
すたじお関の決まり手「丸投げ」の威力に全員が戦慄したが、そこは名横綱、名親方あんちぽの仕切り力に救われてなんとかなった。あんちぽさん酔っ払ってウザ絡みをする芸風の面白いおじさんだと思ってたらそれだけじゃなかった。このままだとぶつかり稽古にはあんちぽさん必須になってしまうので属人化が進んでしまっていて良くない。
ぶつかり感ないとか言われたけど確かに単なるパネルディスカッションになってた。弟子たち頑張ってたけど、セッション中の成果に対してフィードバックとか返す時間がなかったのでちょっとかわいそうだった。
弊社部屋に関しては、@p_chin関が一応ちゃんと動作するものを作り上げられたのは良かった。さすがに慣れないサーバーサイドで細かい粗とか、設計上やり直してもらわないといけない部分とかもあったけど、なにはともあれ動くものを作り上げたってところが素晴らしい。あと、前日夜にサーバーインスタンスを渡されたにもかからわず、不慣れなLinux環境上でセットアップも終わらせてたのもすごい。
クライアントサイドエンジニアでもサーバーサイド理解した方がいいってことで、fujiwaraさんとacidlemonちゃんの新卒研修とか、僕が去年の配属当初に色々教えたのが役に立っていたようでよかった。
ディスカッションでそこまで話されなかった内容で、コードレビューはどうしても権威的になってしまう部分があって難しいなーみたいな問題もあって、moznionがレビュアーとレビュイーの関係に関してでまさしく言及していた。彼も今回のセッションを通して色々おもうところがあったのだと思われる。
僕もチームに中堅が僕だけで、あとは2年目くらいまでの若手のコードをレビューする的なのが多いのでそういう悩ましさがある。セッション中でも話した「方針を示しすぎない」って言うのはそういう理由もあってそうしている。最初に方針を説明し過ぎちゃうと僕のやり方にしかならなくて、僕の枠組みのレベルのコードしか生産されないので、僕自身の成長にもつながらない。
はてな社とかは、プロジェクトを跨いだコードレビューなんかも実施しているようでその辺どういう仕組みでやっているのかってところは気になった。
それと「『コードをdisられて人格攻撃に感じるやつはプログラマーに向いてない』とか超モヒカン的発言ですから!」と言ってウケをとれたのが良かったです。モヒカンをdisるモヒカンというメタい立場で本年も精進してまいりたいと思います。
イベント全体を通して言うと、すごく久しぶりにSugamo.css周辺の人と会ったりして、最近Perlのイベントしか行ってなかったなーとか反省した部分があったりする。もともとフロント寄りだったはずなのに、最近はバックエンドばかりなので、今年はもうちょっと追いかけて行きたい。
次世代Webセッションのアーキテクチャ編が色々印象に残ったんだけど、フロントの処理の複雑化が進んでるし、もっと激しくなるってのはそうだろなと思ってて、そこが今一番顕著なのがゲームなんだろうな、と。
Suicaとか中央サーバーで全部のリクエストを受け付けているわけじゃなくて、駅ノードとかそういうレベルで決済しちゃって、後で整合性を合わせるっていう超絶なことをやっているとか聞くけど、Webシステムもそういう複雑性が増していくんだとおもう。極端な話、オンラインバンキング的なやつもクライアントだけで決済完了しちゃって、サーバーにはそのトランザクション情報だけを送って後で整合性をとるみたいなことに将来はなるかもしれない(今は考えられないけど)。今ゲームでやってるようなチート対策的な技術がそういうところに活かされてくる、かもしれない。
クライアント側の処理や責務が複雑になってくると、サーバーサイドとバリデーションを一致させる必要がどうこうっていう話が良く出てくるけど、それは過渡期の話であって、これからは細かいバリデーションはクライアントに寄せてしまえば良くて、サーバーサイドは変な値が入ってきたら単に例外上げて400返せばいいだけの話だよねって話は何人かとした。例えば、数値が入るべきところに文字が入ってきたら、クライアント側でバリデーションかければよくて、サーバー側に文字列が渡ってきたら単に例外上げればいいだけって話で細かいエラーメッセージの制御とか要らないって話です。
クライアントの演算をどれくらい信用するかって話はあって、どちらにせよHTTPはエンドユーザーによるリクエスト改竄は容易な世界なんだから、そこはバリデーションというよりかは、何らかの署名つけたりとかそういうチート対策的な部分で何とかする部分なんだとおもうし、そういうところは重要になってくるんじゃないかと思われる。
取り留めもなく終わる。