mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

プログラマではありませんが、プログラマの話をさせてください

はじめまして。8キロのダイエットに成功しましたが、最近リバウンド気味の土戸と申します。
私は今、弊社イノベーション・センター案件である、Plannah(プランナー)のプロダクトマネージメントとマーケティングに携わっております。

先日我がチームの開発メンバーである衣川から、簡単にPlannahの紹介がありました。多くの方々に記事を読んで頂き、そしてPlannahに関心を持って頂き、大変感謝しております。本日は、Plannahの話は割愛させて頂き、ちょっとしたプログラマ話(?)をしたいと思います。

私はプログラミングを職業としているいわゆる"プログラマ"ではありません。ミクシィに新卒入社した2009年からしばらくは営業マンでしたし、その後も今に至るまでサービスディレクターとして勤めてきました。少しさかのぼって、小学校の頃は当時流行っていたGW-BASICでmud gameなどを作ってみたり、大学も結局機械系から情報系に移ってC言語やJavaの基礎を学んできましたが、残念なことに知識として残すことはできませんでした。

(非エンジニアが書くエンジニアブログだなんて、ドキドキしちゃいます)

しかし、一昨年からiOSアプリ開発のチームに携わることでObjective-Cと出会い、さらに今年Plannahの立ち上げをきっかけに、少しずつプログラムのコーディングを行うようになりました。もちろん無知の状態から第一歩を踏み出したレベルに過ぎませんが、学んだことは大きく、いわゆる"非エンジニア"がこれらを知識として身につけるべきメリットは身を以て感じています。

知っているか知らないかの違い

私は韓国生まれの韓国育ちの韓国人で、2002年からの日本留学をきっかけに、今は帰化をし日本人として暮らしています。ここ11年間で、平仮名がただの顔文字にしか見えないところから、自分の意思がしっかり伝えられるまで何とか日本語を習得することができました。そこで得られたものは、ただ読み書き話ができるということ以上に、日本人の文化や考え方、感覚、短い言葉から読み取れるニュアンスへの理解でした。

プログラミング言語もひとつの言語で、ただコンパイルしてくれる対象が人でなく機械であり、言い換えると機械と会話しているプログラマとの会話に必要な共通言語と理解しています。

つまり、プログラマと円滑なコミュニケーションを行うために、彼らの文化や考え方、感覚などを読み取るのに、プログラミング言語は日本語以上に最適な言語であり、これを知っているか知らないかは大きな違いを生みます。

複雑性と必要性

Plannahチームの技術責任者である衣川は、極端に開発上の面倒を嫌い、ぶつかることがしばしばあります。しかし、それは単に開発することを面倒がってるわけではないことを最近知りました。簡単な機能でも、組み込むということはソースコードを一行以上追記することになるわけで、それは少なからず複雑性を巻き起こす原因となります。

複雑なプログラムは、当然度を過ぎると不具合を引き起こす原因となり、プロダクトの品質を下げてしまうのはもちろん、その後の保守コストは膨らんでしまいます。これは一時的なものではなく、その複雑性を回避するためにさらなる複雑なソースコードが加わりかねず、よって破綻する可能性が高まります。

ここで重要なのは、そのようなことを防ぐために機能追加をやめるのではなく、本当に必要かどうか、それは誰のために必要なものかをよく考えることです。利用者にとって本当に必要な機能であれば、それを複雑にさせず、保守性の高いプログラムとして実装するのがプログラマの責任であると教わりました。

大事なこと

Plannah上には、素人の私が残してしまった数多い負債が今でも残っていて、たまに衣川がため息をつきながらリファクタリングする場面もありますが、それと引き換えに、上記二つに気づく良い勉強となりました。そしてたまたまそれっぽく書けたソースコードが、利用者にとってベネフィットのある機能として実装されていることに、大きな喜びとやり甲斐を感じています。

誤解すべきでないのは、全員がプログラミングを行うことが重要なのではなく、プログラムやプログラマの本質を理解しようとする学習そのものが大事であり、得られた知見を何らかの方法で実践することが必要、ということです。その上、自分の役割を理解し、しっかり果たさなければただのプログラマぶってることに過ぎないことがわかりました。

最後に

今でもオブジェクト指向というものが何なのかさっぱりわからず、既存のソースコードを真似して書き続けていて、わからなければ書くな、と怒られる場面も多々ありますが、共通言語を少しばかり身につけられた嬉しさのあまり、ちょっとした私見を述べてみました。

本当にPlannahの話は一切せずここまで来ましたが、Plannahは大切な思い出を大切に寄せ合える、とてもあたたかいサービスです。これだけSNSが普及している世の中で、周りの目を気にすることなく、思い出の写真をやり取りできる心地よい場を目指しています。もちろん、アプリとしてのシンプルさや手軽さを失うことなく、皆さまに長年愛用いただけるよう開発してまいりますので、これからもぜひ応援よろしくお願いいたします。

最新版のPlannahはこちらからダウンロード・アップデートしていただけます。
https://itunes.apple.com/jp/app/id677962716

最後に、将来自分に子供ができたら是非プログラマの道を歩ませたいと思います。