ユーザーが使い方に困るようなアプリにはしたくない
iOSとの関わりは、初代iPod touchが日本で発売になった2007年の夏から。当時Toolchainという非公式のデベロッパーキットがリリースされて、これを使えばあの小さな携帯音楽端末向けにプログラムを書けると聞いて、その足で量販店に行ってiPod touchを買ったのを覚えています。
前職の仕事はもっぱらWindowsでの開発。でも僕、Windows苦手なんですよね(笑)。その鬱憤を晴らすべく、趣味でiPadアプリを書いたり、個人の仕事でiPhoneアプリ開発を受託していたりしました。
もうすぐ40歳になろうかという時に、これからは好きなものだけを仕事にしようと決めて、iOSでの開発の仕事を探し始めていた。そんなとき、代表の山田のFacebookでiOSアプリ開発者を求めていることを知り、「今しかない」と速攻で応募しました。
メルカリのアプリは最初ガワネイティブで開発する方針だったのですが、やはり利用されるシーンを考えるとサクサク動くことが重要だということで、すぐにネイティブ開発に方針を転換しました。長年の夢だったObjective-Cでがんがんアプリを書けるぞと、僕も俄然やる気が出ましたね。
アプリのリリース前の入社ですから、クライアントアプリ開発チームのエンジニアの中では僕が一番古株になりますね。開発の経緯とか知っているので、現在はAndroidとiOS版の両方を見る立場。ただ、iOSでは自分もコードを書いています。
スマホアプリ開発だと、普通はできるエンジニアであればあるほど、実験的なUIを取り入れたりとか、デザインに凝ったりとかやりがちですが、メルカリのアプリにはそれがない。ユーザーが使い方に困るようなアプリにはしたくなく、学習コストを限りなく下げることが、開発の基本方針になっています。UIもシンプルで、ストレスを感じさせないもの。実はこれがかえって難しいんですけれどね。
エンジニアもプロダクトに関するあらゆる知識を持つことが大事
iPhoneアプリの開発環境はXcodeとiOS SDKがメイン。それに加えてAFNetworkingなどのオープンソースもよく使います。US版の開発に合わせて、Xibファイルの多言語化が簡単にできるライブラリAGi18Nも使うようになりました。ローカライズのための翻訳を管理するサービスとしては、Transifexも使います。これでUS版の開発はぐんと楽になりました。
iOS自体、バージョンアップのたびにバグがあって僕らの苦労は絶えないけど、AppleはOSもハードも統合的に作っているという点が魅力ですね。ハードの新機能をOSレベルでサポートしてくれるのはいいです。反面、旧バージョンのサポート切り捨てが早い。APIもしょっちゅう変わります。ビジネスとして旧バージョンのOSもサポートしなくちゃいけない僕らとしては、痛しかゆしのところがあります。
メルカリアプリは現状ネイティブで開発していますが、当然ながらHTML5やJavaScriptでの開発にも関心を持っています。これに限らずエンジニアは、多方面に関心を持つ必要がある。例えばUIデザインなんかもそうですね。
社内に専任のUIデザイナーがいますが、彼らと同じ土俵に立って話をするためにも、エンジニアもUIをよく勉強しないといけないと思います。同じ処理時間なのに見せ方によっては速く感じたり、遅く感じたりする。このあたりを理解するためには、心理学の勉強も必要です。
勉強の基本は、普段からそれを意識していること。他社のアプリを使いながら、UIデザインがいいとか悪いとか、たえず意識するようにしています。うちの山田も大のスマホ好きで、国内外問わずいろいろなアプリを使い込んでいます。
「使う人」のことがどこまで見えているか
大学は理工学部でロボット工学を専攻しました。まだそんなにPCが普及していない時期でしたが、僕は小学校高学年から独学でプログラミングを学んでいたので、授業では学生をサポートする役割。教えてみて初めてプログラミング初心者の陥りやすいツボがわかる。アプリ初心者の立場に立って開発するという発想は、その時の経験が活きているかもしれません。
2000年前後のインターネット普及期には、PerlやPHPで掲示板のようなプログラムを書いたこともあります。そのときどきに流行っていて、かつ有用な技術を取り入れるようにしていますけれど、一番好きな言語と聞かれると、やはりObjective-Cですね。書き方が変態的なので敬遠する人が多いけれど、僕としてはMac OS X やiOSの使いやすさを縁の下で支える言語ということで、一番頼もしい存在です。
これまでのキャリアの中では、受託開発が多かったんです。自分の書いたプロダクトでサービスを回すというのは、メルカリが初めての経験。忙しいけれど充実している。忙しいのに、それがストレスにならない。自分でも今は得がたい経験をしていると思います。
アプリは自由に開発させてもらっていますが、僕らが絶対に忘れてはいけないのは、使う人のこと。クライアントアプリ開発者にとっての「使う人」というのはエンドユーザーですが、サーバーサイドのエンジニアにとってはクライアントアプリ開発者が「使う人」になります。向こうにいる人が見えていて、彼らのことをずっと考えることができて、それが大好きな人。そういう人に僕はなりたいし、これからのエンジニアにもそういう資質を期待しています。
メルカリのエンジニア一同から、CodeIQユーザーに挑戦問題!
メルカリの第一線で活躍するエンジニア集団からの出題です。
腕に覚えあるエンジニアの皆さんは、ぜひ挑戦を!
サーバソフトウェアの設定ファイル設計
問題はこちら⇒与えられた要件を満たすHTTPサーバの設定ファイルを設計しよう!
株式会社メルカリ 大庭 慎一郎氏
小学生時代のMSXパソコンでBasicを勉強。大学時代はロボット工学を専攻。Webサイト、ゲーム、デジタル放送のシステム開発など会社を経て、5社目の会社として選んだのがメルカリ。2013年4月入社。39歳。
自分の書いたコードを誰かに評価されたいエンジニアは、けっこう多い?
ITエンジニアのための実務スキル評価サービス『CodeIQ』で出題されている「コード銀行」問題に挑戦すると、あなたのコードが評価されます。
評価(1)出題者からの評価 ⇒評価フィードバック例を見る
- 企業ではたらくという観点からあなたのコードをチェックします
- フィードバックされた観点をふまえてコードを書くと世の中の企業にとって「いいコード」が書けるようになります
評価(2)企業からの評価 ⇒評価フィードバック例を見る
- 「あなたと一緒にはたらきたい」という企業からスカウトが届きます
- あなたのコードが社会でどこまで通用するか、リアルな評価が得られます
興味を持った方はこちらからチャレンジを!