Force.comスマートエンジニア〜賢太郎とあすみの場合〜

「賢さん、ApexのFor文って書き方、変ですよね?慣れちゃえば便利なんでしょうけど、Java使いの私としては慣れないんですよね。」

List<Account> accountList = [select id from Account];
for(Account account : accountList) {
    
}

あすみが賢太郎に話しかけてきた。清水あすみは今月からJava開発部隊からForce.com開発を行うスマートエンジニア部隊に異動してきた。賢太郎の所属するすごい開発株式会も他のソフトフェアハウスと同じくJava開発を行う部署があったが、このところスマートエンジニアサービスの引き合いが増え始めており、あすみのようにJava開発の部署からスマートエンジニア部隊に何名か異動してきていた。ちなみに、「清水」は「しみず」ではなく「きよみず」と読む。賢太郎も元はJava開発部隊にいたので、あすみとは知り合いだ。なぜか、賢太郎のことを「賢さん」と呼ぶ少し変わった女子である。

「いや、それJavaでも同じ文法、あるだろ?」

賢太郎が振り向きながら答えた。振り向いた瞬間、思いのほかあすみの顔が近くにあった。あすみは賢太郎が書いたコードを見るために近寄っていたようだ。

「えっ?うそ、本当ですか?」

あすみは賢太郎の隣の自席に座り、Googleで調べ始めた。

「あっ、ホントだ。J2SE5.0で拡張されてる。拡張for文っていうんですね。そういえば、ネットの記事でちらっと見たような気がしてきました。業務システムのプロジェクトにどっぷりだったから、忘れてました。
色んな書き方されるとプロジェクトが混乱するんで、基本イレギュラーな書き方って禁止されてる、というか嫌いなんですよね。もうなるべく誰が書いたコードかわかんないくらいまで標準化する、というか。」

賢太郎は「あぁ、そうだなぁ。」と軽く相槌をつきながら自分の仕事に集中しようとする。なぜか、あすみはこういった技術談義になると急に饒舌になる。それなりに可愛いのだが、かなりのギークだ。仕事(プログラミング)が好きなようでJava開発部隊にいたときもバリバリと残業をこなしていた。

「賢さん、聞いてますか?私、今とっても重要なこと言ってますよ?」
「えっ、あぁ、聞いてるって。でも、それほど重要じゃないだろ?」
「そんなことないですよ。SE部隊に移ってから、ずっと感じてるんですけど、私だけなんかコードの書きっぷりが違ってて落ち着かないんですよ。」
「そうか?誰が書いても同じようなもんだろ?」
「そうかなぁ?」

よく分からないところにこだわりを持って食いついてくるあすみを賢太郎はあしらいながら、コーディングを続けた。たぶん、あすみが感じている違和感はもっともなことだろう。慣れたメンバーはForce.comの持つガバナー制限を意識したコーディングを自然と行っているため、Java開発から移ってきたばかりの開発者とは少し違った感覚でコーディングしている。ちなみに、あすみの言っている「SE部隊」というのは、「スマートエンジニア部隊」のことである。

・・・

「賢さん、このSOQL、エラーになるんですけど、教えてもらっていいですか?」

あすみが画面を指差しながら賢太郎に質問してきた。賢太郎は、あすみのディスプレイに目をやった。あすみはパッケージをインストールした環境で、テストのため開発者コンソールを立ち上げて、データの内容を確認するためのコードを書いていた。

pjList = [SELECT id, name, content__c from SugoiProjectInfo__c];

「すまん、そういえばリリース環境でのSOQLの書き方を教えてなかった。パッケージをネームスペース付きで作ってるから、リリース環境でSOQLを書く場合はネームスペース名をつける必要があるんだよ。」

賢太郎はあすみのキーボードでコードを修正した。

pjList = [SELECT id, name, sugoipm__content__c from sugoipm__SugoiProjectInfo__c];

「ちなみに、sugoipmっていうのがネームスペース名で、アンスコを2つ入れる。項目名やオブジェクト名の前につけるのがルール。」
「へぇ、ホントだ、動いた。なんだか面倒なんですね。」
「まぁね。Javaなんかのパッケージの考えに似てるけど面倒だな。」
「そうですよ。Javaのパッケージは宣言することで省略できますし、SQLもこんな制約ないですよ。SOQLだと副問合せが書けないから、リストに実行結果を詰め直すだけのコードがいっぱい書く必要があったり、もう少しなんとかならないんですかね。」
「そうだよな、確かにもう少し書けていいよなぁ。RDBMSの副問合せみたいに際限なく書けなくても、もう少しな。」

賢太郎は答えたあと、しまった、と思ったが、時すでに遅しだった。

「そんなことないですよ。副問合せは便利ですよ。副問合せがあればこんな集計もすぐにできますよ。確かにこの前のオフシェア開発でデバッグしたコードで、フォーマットを整形したら2000行を超える副問合せを見た時には焦りましたけど、ルールさえ守ればとっても便利ですよ。客先でやるパフォーマンス・チューニングなんて結構スリルがあって面白いですし、納品ギリギリでチューニングに追われるとか、期末処理のバッチを翌日の12時までにやらないと大変なことになるとかハンパないですよ。」

あすみは器用にキーボードを叩きながら、生き生きと過去のプロジェクトの苦労話を話し始めた。賢太郎はときどき相槌を打ちながらも、明日客先に持っていく機能のテストをこなしていった。

・・・

「お疲れさま。賢太郎、明日の客先説明、問題ないか?」
「はい、とりあえずものはできたので、あとはテストをして客先に使ってもらえるようにしていきます。」
「そうか、もう客先に使ってもらうのか。いきなりエラーで止まるようなことのないようにしっかりテスト、頼むぞ。じゃぁ、お先。」
「はい、お疲れさまでした。」

部長が賢太郎に声をかけて、帰宅した。もう気がつくと21時をすぎていた。残っているのは、賢太郎とあすみの2人である。今回の客先は賢太郎の腕を見込んで依頼してくれた仕事だ。納期的にかなりチャレンジングというか、無理のある納期だが、ここで成功すればすごい開発株式会社の実力を示し、今後の仕事に繋がる。

「よし、あともう少しだ。終電までには帰るぞ!」
「はい!」

賢太郎は一緒に遅くまで働いてくれているあすみに声をかけた。

・・・

「あっ、賢太郎さん、今日泊まっていいですか?」

あすみの言葉に驚いて、賢太郎があすみの方を振り向くと、あすみは画面を指差していた。そこには、エラーメッセージが表示されている。賢太郎は、ディスプレイをちらっと見て時間を確認した。もう22時を回っている。

「えぇっと、レアケースだよな?」

賢太郎は恐る恐るあすみに聞いてみた。ちなみに、エラーメッセージから見る限り、朝までには修正できそうだが、とても終電には間に合わない。

「あんまりレアケースでもないんですよね。テストもやり直さないといけないですし、終電までには終わりませんよ。」
「はぁ、仕方ねぇな。始発で帰って客先か。。。」

品質についてはあすみは譲らない考えを持っている。賢太郎は諦めた。まぁ、客先に行って不具合が見つかるよりは何倍もいい。賢太郎はそう考えることとして、思考を切り替えた。

「しゃーねー、早めに片付けて仮眠するぞ。」
「あれ?賢さん、嬉しそうですね。あすみと一緒だからですか?」

賢太郎は内心ドキッとしながら、エラーの解析に取り掛かった。確かに部長と一緒に朝まで仕事よりはいいが。賢太郎は動揺を見せないようにディスプレイに向かってキーボードを叩き始めた。

「賢さんもあすみと一緒で仕事好きですよねぇ。」

あすみも何事もなかったようにキーボードを叩き始めた。

(おしまい)

この記事はForce.com Advent Calendar 2011に参加しています。

※この作品はフィクションです。実在の人物、団体、事件などには一切関係ありません。