decouple

今管理しているチームでは、ヨーロッパの開発者1人と米国にいる1人と合計3人でプロジェクトをこなしています。プログラミングにしてもシステムデザインにしてもそうですが、「分離」というのがいつもキーワードとしてあがってきます。何でも切り離すことによって汎用性が出てきたり、再利用可能になってきたりします。だいたいうちのチームでは、ヨーロッパの担当者がBack-endというデータベースまわりのコンポーネントを、こちらにいるもう一人のスタッフがFront-endといってユーザーインタフェースなどを中心に開発します。その中間にはmiddle-tierといって、実際のデータ管理や情報の取りまとめ、データの計算などをするビジネスロジックを統括するコンポーネントをつくり、3つの層に分けてシステムを開発します。
通常は自分がBLを受け持ち、2人の間を取り持つのですが、今回はその二人だけで直接仕事を仕上げてもらうようにいろいろと計らっていたのですが、これがまったくうまくいかない。しばらくこの前中後という役割分担が続いたせいか、「BLはどうするんだ」という質問がすぐにでてきます。要は手を染める気がないわけですね。確かにサッカーなんかでも、FWやDFにある日突然、MFをやれといってもうまくいかないのかもしれません。次第にFront-endをやっているスタッフが、Back-endでStored Procedureなどを作成するプロセスが「遅い」ことに業を煮やし、勝手に自分でSPを書き始めたりと、この数日間、本当に混沌としてきました。ふと気がつきましたが、この「間を取り持つ役割」ってのが日本人は実は得意なのではないでしょうか。通常、同時進行で中間層をやる場合、さっとインターフェースをつくり、テスト用のダミークラスやデータを実装してFEの人間に渡します。「うそでもいいから」まずはUIを作れる素地を与えてやるわけです。その一方でバックの人間がDB層を完成させれば、ある日突然、本当の実装に切り替えて、システムがリアルモードで動き始める(現実はそんなにスムーズではないのですが)、という具合になるわけです。二人ともこういったアプローチは十分に見てきているから、自分たちでもできるだろうと思ったのが間違いだったのかもしれません。二人ともラテン系だからかな・・・。もっと仕込まないといけないですね。
さて、この「分離」、「切り離し」というのはdecoupleという動詞で表現します。
We need to decouple completely the data access from the rest of the application
decouple 〜 from 〜で、○○から××を切り離す、という意味になります。もちろんseperateも使えますが、今回紹介した動詞もよく耳にします。