プログラミングスクール受講後、マッチングアプリの受託開発をした話【徹底解説】
① DMM WEBCAMP
⇒ 首都圏拠点のエンジニア志望におすすめ
② TECH::EXPERT
⇒ 首都圏・関西圏・名古屋・福岡拠点のエンジニア志望におすすめ
③ TechAcademy
⇒ 未経験から効率よくプログラミングを学んでキャリアに活かしたい社会人におすすめ
こんにちは、フリーランスエンジニアのYaemonです。
プログラミングスクールを真剣に選んでいる方の中には、
・プログラミングスクールを使って、ちゃんと就職ができるの?
・プログラミングスクールは通学型・オンライン型どちらを選べばいいの?
・プログラミング言語はRuby、Java、Swiftなど色々あるけど、結局どれを選べばいいの?
などと不安ですよね?
管理人もプログラマーなので悩むところはわかります。
そこで、このページでは、
▶ エンジニアになりたくて、プログラミングスクールを検討している人
に向けて、
▶ 管理人がプログラミングスクールを受講後にマッチングアプリ(iPhoneアプリ)の受託開発に携わった話
を具体的に説明し、プログラミングスクールで学んだ後の1つのモデルケースとして参考にしてもらえればと考えています。
*失敗しないプログラミングスクールの選び方について知りたい方は次の記事を参考にしてみてください。
それでは、説明をしていきます。まず、プログラミングスクールを受講した後の管理人のスキルを説明すると、以下の形です。
iPhoneアプリ開発のスキルセット
メモ電卓
- デザインパターンのStatus、シングルトンが使える
- UIViewにUILabel、UIText貼ることができる
- UITableViewを用いた処理が行える
為替電卓
- 企画をしっかりしていたため海外・国内のツールアプリで100位以内に入った
- XMLを利用した通信AFNetworkingでデータを取得できる
- プロパティを利用した画面遷移を行える
- 取得したデータを加工してアプリ内で利用できる
それぞれのアプリを作ったときの具体的な作り方については、以下を参考にしてみてください。特に為替電卓については、ツールカテゴリで国内で100位以内に入ったという実績があります。
友人からの受託開発の提案
そうして、プログラミングスクールを受講した後に、プログラミングスクールで学んだスキルを、会社を経営している友人(1人)に話していたところ、「今度受託があるので一緒に開発をしませんか?」という流れになったので、受託開発の仕事手伝うことになりました。少し不安なところもあったが、「仮に難しい場合は巻き取りますよ」と言ってくれたので挑戦してみることにしました。
また、当時は、社内SEとして働いていたが、仕事が終わったあとの平日・土日に手伝ってもらえればよいという条件で、案件を手伝うことになりました。
案件内容:某メディアのマッチングアプリ
そうして引き受けた後に、友人から今回の受託案件の企画書と画面設計書が送られてきました。企画と画面設計は相当練られていて、あとは画面設計に従って作っていけばよいというものです。
詳しくは書けませんが、既存の超大手メディア(数千万PV)の1つのサービスとして今回のマッチングアプリを取り入れるという形。モック開発ということで開発規模自体は小さいのですが、その案件に携わっている人の数は、色んな商流を考えると20〜30人くらいではないかと想像しました。
マッチングアプリの開発体制について
開発体制としては、以下の状況でした。
開発元
↓
大手広告代理店
↓
UI/UX/デザイン担当会社
↓
開発受託元(友人)
|—-自分
こうして、1つのプロジェクトの中に自分も参画していくことになりますが、決まられた仕事をする社内SEとは違い、0から1を作り出すサービスに携われ、大きなメディアのサービス開発に携われるということでワクワクしました。
マッチングアプリの作業期間について
作業期間:約1ヶ月
作業期間については、ほぼ1ヶ月で作り上げる形であった。作業自体は、平日の夜、土日終日でワークライフバランスは皆無な状況。社内SEからWEB系に移るためには、作業量が必要だと思っていました。
会社でも、昼休み中は詰まったところをどう解決すればいいかを、githubの公式のReadme.txtを読んだり、Objective-Cの基本的なオブジェクトの使い方を確認したり、正規表現の使い方を確認したりしました。
また、行きと帰りの通勤でも作業内容について整理したり、詰まっている部分へのアプローチを考えたり、帰ってからどういう風な作業をすればより効率よくできるのかといった、作業スケジュールの確認などを行っていました。
作業時間は、月の作業時間は150〜160時間くらいだったと思います。通常の会社で働いた後、休みの時間でこの作業量だったからなかなかの負荷でした。それでも、このままの仕事のままだと「夢を掴めない」という危機感があったので頑張ろうと思いました。
アプリ開発の作業内容について
作業内容については、毎週送られてくる画面設計に従ってコーディングを行い、リモートで開発をしましたね。具体的には、bitbucketにレポジトリを作って、そこにpushして、連絡はChatworkで行う形で作業を進めました。1週間に1度、土曜日に進捗の報告がてら、渋谷で一緒にランチを食べつつ状況についてシェアしましたね。
構築画面としては、通常のマッチングアプリ+RSSでメディアの更新情報を表示する機能がありました。チャット機能は、サーバーからの通知だったり、非同期通信だったり、モバイルのDBを利用するため、友人がその機能を開発して、それ以外のサーバーへ登録する機能であったり、各画面の作成をすることになりましたね。
毎日新しいことを覚えて作業をするため、詰まる部分がたくさんあり、その都度StackoverFlowや、他のネットで実装方法を確認したりするなどで時間がかかることもありました。詰まる部分へのアプローチについてはここを確認してもらえたらと思います。
開発も終盤になると、想定以上に修正する内容も増えてきて、正直力不足な面もでてきて、自分だけでは対応できない部分があり、友人が自分の作業を巻き取るという形になりました。ここについては、期待値を超えるアウトプットができなかったのは、申し訳なかったと思いますね。また、このときにフリーランスエンジニアとしてのアドバイスを3つもらったので、共有しますね。
フリーランスエンジニアが受託で大事な3つの視点
可変で作ることの大切さ
例えば、あるオブジェクトを画面に配置するときは、一番上のオブジェクトの高さを利用して、それ以降のボタンは、相対的にボタンの位置を決めるといった、コーディングの手法が大事だと認識しました。
固定値で設定しておくと、画面設計が変わったときの修正量が多くなります。実際に、絶対値のピクセル指定で配置場所を設定すると修正が大変でした。また、計算ミスや再確認があり、効率も悪かったですね。
要するに、修正しやすいコードを書いたほうがよいということですね。
余計なリソースを使わないことの大切さ
画面に描写する処理はメモリを使うため、その点も意識して実装をするというものです。設計書通りにただただ作るのではなく、リソースの管理という視点で画面を作成するという視点が欠けていたため、注意しないといけなかったと思います。受託であれば、与えられたものをただこなすだけではなく、こちら側でブラッシュアップするという視点が抜けているとその他大勢になってしまうため、ここが単価を上げるポイントになるんですよね。
早め早めのスケジュールを心がけること
仕事を受けるときは、スケジュールを守ることは絶対に必要ですね。今回は友人に巻き取ってもらうことになったのは結果としては良くなかったです。そのため、早め早めに開発を終わらせて、以降は製品のブラッシュアップに時間をかけるということが大事になります。
まとめ
今回の受託開発の仕事について、個人が受託開発を経験するという点では初めてだったのですが、1ヶ月間の中で、たくさんの学びを得ることができました。やはり、アウトプットありきのインプットは非常に効率が良いと考えますね。
将来的にフリーのWebエンジニアになりたいという方で、プログラミングスクールを検討している方は以下の記事を参考にしてみてください。