業務系と、ソーシャル系と、エンジニアと

気がつけば1年以上放置していた・・・。
適当に何か書く。


私は新卒でシステム開発会社に入社し、主にB2Bシステム開発に携わってきた。
B2Cの割合は2割にも満たないくらい。
案件の引き合いから要件定義、見積り、設計、開発、テスト、納品と一通りの流れを経験したあたりで、最初に入社した会社の将来性に疑問を持ち転職。
転職先は知り合いのエンジニア2名が建てた会社で、それぞれ社長と取締役。
パートナーやアルバイトはいたが、社員としては私が第一号であった。
会社としてのビジョンはしっかりとあり、組織が育っていく過程を見たかったのと、育てていく経験をしたかった。
ただ、当時はまだ会社としては準備段階で、業務委託エンジニアとして外へ出て、月単価で売り上げを上げつつ自社サービスを開発している状況だった。
そこで、私が行き着いた職場が所謂ソーシャルゲームの開発現場であった。


業務系がメインとは言えWEBシステムの業界に数年居たわけで、当然ソーシャル業界の動向は業務知識としてある程度把握しているつもりだった。
実際に入ってみて、予想通りソースコードは継ぎ接ぎだらけで汚く、メンテナンス性は最悪だしコメントも一切ない。
今までの感覚で言うと、こんなものは到底お客様への納品物としては成立し得ない代物だった。
ただ、各々の現場において最優先とされるものは異なる。
ソーシャルゲームの現場では、とにかく競合他社との争いが激しくスピードのある開発が求められた。
色々思うところはあっても、まずは耐えて実績を上げ、現場において一目置かれる存在になるべく動いた。
実績を伴わない発言は「意見・提案」ではなく「文句」と受け止められてしまうからだ。

  • スクリプトを組むことにより日々のリリース手順の簡略化
  • インパクトで開発効率を向上させられるノウハウの提案
  • プロパー/業務委託問わず周りのエンジニアへの知識の共有
  • トラブル時の対応
  • 企画サイドとの折衝(あえて歯に衣着せぬ物言いをすることも)

これらは特にソーシャルならではという物はなく、今までの経験から得たものだったり自身のスタンスなのだが、
現場における自身の価値の向上を図り、それに適したキャラクターを演じ、地道に積み重ねることにより、それは実った。
業務委託としての自身の価値が高まると、自ずと契約延長時に単価の交渉が入る。
ここで、自らが直接交渉する事に面白さを見出す。
一旦、社長に相談を持ちかけた。
  私がこの現場でやってきた事が一定の評価を得ている。
  これにより単価が上がった場合は何かしらの形で還元されるのか。
社長の答えはNOであった。
理由は色々あったが詳細は省く。納得のいく理由だった。
自身のスタンスなどを告げていく中で、社長のほうから、そこまでの考えがあるならフリーランスになるか自分で会社建てるなどするほうが合っている。
と言われた。(「これ以上面倒見切れんよ」の意と捕らえたが)


ひとまず、自身で交渉を行い、こちらの条件を飲んでいただく形でフリーランスとして現場に残ることが決まった。
転職後の在職期間は1年ほどであったが、あたたかく迎え入れていただき、また、私のエンジニアとしてのキャリアを尊重し送り出してくれた。
短い期間であったが、組織が育っていく過程も垣間見ることができた。
現在は、外に出ていた社員も事務所に戻り、自社サービスの開発や受託案件の開発を行っていると聞く。
心から応援したいし、またご縁があれば別の形でご一緒できるとするならばこんなにうれしいことはない。


さて、前置きが長くなった。
業務系とソーシャル系、基本的にはものつくりとしては何ら変わるところは無いと思っている。
ソーシャルだと「スピード感のある開発」と言う文言が散見されるが、業務系であっても短納期のわりにそれなりの工数の案件(修羅場)も多く経験してきた。
正直、失敗したり開発が間に合わなくても自分らが痛手を受けるだけで業務系で言うところの「お客様」へ損害を与えるわけではないのでむしろ楽とさえ感じた。


ただ、常に違和感として感じていたのは、設計書(といってもOfficeドキュメント数枚程度の簡素なものだが)を作成するのが企画サイドで、それを元にエンジニアが開発を行うというスタイルだ。
なぜなら、業務系の感覚だと、お客様の要望(やりたいこと)を聞き、それ以降はすべてエンジニアの範疇だからだ。
その中で、要望を解釈して明確な目的(要件)として落とし込み設計を行う事ができ且つ開発工程のどのタイミングでどのような人員をアサインすべきかを判断できるもの、あくまで実装を担当するものとで一般的には(日本においては)エンジニアは区別される場合が多い。
営業的には、前者をシステムエンジニア(SE)、後者をプログラマー(PG)と呼び区別することが多い。
また、同じエンジニアであっても前者と後者とでは求められるもの、範囲が大きく異なる。
*1


話が逸れたが、現場の実態としては、上記で言うところのPGが殆どで、開発と言うものを知らない企画が作った設計書から形にすることは本来であれば難しいはずであった。
ただ、ソーシャルゲームということもあり「この機能はあのゲームで言うところの○○か」というように解釈することで各々対応していた。

しかし、この違和感はその後大きな形で打撃となって押し寄せてきた。
ソーシャルゲームは新規タイトルの開発であっても既存タイトルの横展開での開発が多いが、横展開ではないチャレンジングなタイトルの開発が現場で企画されており、私がそのサーバーサイドエンジニアとしてアサインされた。
そこで目の当たりにしたのは、企画のみで進められてきたプロジェクトの顛末。
サーバーサイドエンジニアとして、担当範囲としてまずはフロント(ゲーム画面)との値の入出力の設計やデータベースのER作成から入るわけだが、UIも明確に決まっていない、モックも殆どできていない、なのにリリース予定日だけは決まっているという状況であった。
UIが決まらなければフロントとのIO仕様を設計することなどできないし、ER図作成もできやしない。
一発ものであれば見切り発車で着手してもいいかもしれないが、今後、このタイトルをベースに横展開をしていく想定もあるのだから半端な設計はできない。
ここをしっかり設計するか否かで、今後の運用・新機能開発コスト、さらには横展開タイトルのコストに何重にも重くのしかかってくる。
「これがソーシャル系の開発だから」や「何か起きたらマンパワーでなんとかする」と言ったスタンスは程度が低い精神論・根性論を掲げる侮蔑的体育会系思考だ。
優秀なスポーツ選手は「いかに楽をして安定した成績を出すか」を考え、頭を使い、長期的に自身を安定した状態とするべくメンテナンスしていくことに努める。


プロジェクトの現状を受け、現場の責任者にはっきりと言った。
「このプロジェクトはまだ開発に取り掛かれる段階ではない」と。
その上で、

  • 開発を行う上で企画段階から必ずエンジニアを参画させておく必要がること
  • そこにアサインするエンジニアについては、単にプログラミングの実績のみで見るのではなくB2BでもB2Cでもどちらでもいいからゼロの状態から、絵に描けてもいない餅を形にしてきた経験のあるものをアサインすること

などを伝えた。
これを受けてかどうかは私の知るところではない(理由のひとつにはなっているかもしれないが大きくは別の理由であると想定している)が、程なくしてこのプロジェクトの仕切りなおしが決定し、チームは一旦解散となった。


ものつくりは、企画やエンジニアなど各セクションの理想のぶつけ合いだ。

  • 企画の理想に対し、エンジニアは限られた時間とリソース等を鑑み、現実を突きつける
  • エンジニアはエンジニアで、まずは、ものをつくる上での最も理想とする工程を描く
  • クリエイターは納期いっぱいを使って質の高いものを創り上げる
  • etc...

これらを受けて、リリースを最優先するならば機能の段階リリースや、今後に影響を与えない範囲で開発工程を一部重複で進めるなどの方法を模索・検討・提案していく。


このような音頭を取るのに最も適しているのはエンジニアだ。
誤解を恐れずに言ってしまえば、ものつくりの現場において最も「強い立場であるべき」なのはエンジニアだ。
幅広い知識を持ち、全体を俯瞰し、企画が語る理想から明確なゴールを導き、メンバー全員に認識を共有し、プロジェクトの進行に沿って然るべきポイントで必要な要員をアサインし、ゲームであれば画像やBGMなど素材の状況も把握し、最終的にそれを形とする。
これらはすべてエンジニアの役割だ。
基本的にはレイヤー毎に分担することになるだろうが、中には一人ですべてをこなしてしまうケースもあるかもしれない。
もちろん、様々な画期的なアイデアを挙げる企画や、ストーリー性のあるものであればライターであったり、その世界観を考慮した画像やBGMを創るクリエイターも重要な役割だ。
ただ、これらをまとめ、プロジェクトの進行管理を行うのは、何も無い状態からひとつのシステムとして形にする工程を知っているエンジニアが行うべきだ。
ここまでいうとエンジニア至上主義と受け取られかねないが、現場とリソースと時間その他もろもろを鑑みてプロジェクトの各ポイントで何が揃っているべきか、何が決定しているべきかを把握・判断することができるものであれば良い。
それに最も近いのが、上述のような経験のあるエンジニアであることが多いというだけ。


今の現場は数ヶ月後の契約満了をもって去る。
(現場とケンカしたとかそういう類ではない)
次の身の置き場は多方面で検討中だが、もう一度、というか引き続き、ソーシャルの現場で戦ってみたいという思いが強くなってきた。


すでにいくつかアクションはしている。
果たしてどうなるか、何が起きるか楽しみだ。


*1:個人的には、このようにエンジニアを区別する事には違和感を感じるが詳細は割愛