プログラミングスクールでiPhoneアプリを最短19日でつくった体験談

2018年5月3日

iPhone-app

このページでは、

 プログラミングスクールを検討している未経験者
▶ プログラミングスクールを検討しているエンジニア

に向けて、

 プログラミングスクールで学べること
▶ プログラミングスクールを効率的に利用するために知っておきたいこと

を、管理人がオンラインプログラミングスクールを実際に利用してInstagramと連携したiPhoneアプリを作成した話をもとに説明していく。

*失敗しないプログラミングスクールの選び方について知りたい方は次の記事を参考にしてみてください。

 

 


目次

管理人がプログラミングスクールを利用した経緯

progate-efficient

ユーザー系SIerの社内SE時代に、会社を経営していたフリーランサーをしていた友人から、アドバイスをもらいつつiPhoneアプリを作っていた。

別の友人がスタートアップで新しくペアプロのサービスを開発したため、開発スキルをあげた方がいいと強く薦められて、オンラインプログラミングスクール(*以降、プログラミングスクール)の受講することにした。その当時は期待値がわからないサービスだったため、正直どうなのかな?と思っていた。

プログラミングスクール利用時のプログラミングスキル

programming-skill

当時のプログラミングスキルは以下の通りだ。

▶ プロパティを利用した画面遷移を利用したアプリを作れる

▶ AFNetworkingを利用したRSSから情報を取得したアプリを作れる
  →非同期通信のやり方など
  →処理速度をあげるという概念はない

▶ 友人のiPhoneアプリの受託開発を手伝える
  →某大手IT企業(東証一部)の新サービスのモック開発。
   デザインは、別のIT企業(東証一部)が担当。
   プロジェクトの関係者は15〜20名ほど。

  →CakePHP + iPhoneアプリを連携したアプリ
   某大手IT企業(東証一部)のモック開発、大手広告代理店からの紹介

   *これらのアプリ開発の作業自体は、適切なレベル感であった。

プログラミングスクールを利用した理由

programming-school-hikaku

成長スピードをあげたかった

プログラミングスクールを利用した理由は、成長スピードを上げたかったため。できる優秀なエンジニアは、”Time is Money“ と考えていて、新宿、渋谷、恵比寿に住んでいる人が多い。いかに、時間を短縮してスキルを身に着けられるかがエンジニアとして必須スキルだと考えていた。そのため、独学で時間をかけて悩む時間がもったいないと思っていた。

できる人のデバッグ方法を知りたかった

開発をしていると、技術的な点で詰まることが絶対に発生する。最新の開発になると英語のレファレンスを確認しないといけない。優秀なエンジニアは、このデバッグスピードがものすごく早い。この時間をどうにかして減らせないかといつも思っていたため、時間短縮のためにデバッグ方法を知りたかった。

技術を磨いていく方向性を知り、時間を短縮する

一人で勉強していると、間違った方向に勉強して、余計な作業をしてしまい、貴重な時間を失ってしまうことがある。そのため、どういう方向で勉強をするかを教えてもらえるだけでも、大きな価値があると考えていた。

プログラミングスクールのメンターについて

programming-school-mentor

利用を開始するにあたり、メンターと相談をしていくことになる。登録をして、某大手有名IT企業から独立をしてフリーランスをしている方から教えてもらえることになった。

メンターのレベル感を話すと、ベンチャーキャピタルから投資が来たり、資本金が短期間で数億円になるようなサービスの受託開発をしている会社でサービスの企画と開発担当していてスキルが高い人がメンターを担当することになった。B to B to C の受託開発の企画が強かった。

 

初日の面談と目標設定について

set-goals

そのプログラミングスクールは、要望にあったカリキュラムを提供してくれることが特徴としてあった。そのため、iPhoneアプリ開発のスキルアップをしたいとメンターに相談をして、今のスキルから、以下の目標が設定されることになった。

WebのAPIと連携したアプリを作れるようになること

Webのアプリを開発していくうえで、Facebook、Twitter、Instagramといった、アプリケーションとの連携は、ログイン周りやデータを取得するうえで大事だという話になり、
データ取得のスキルを磨いていくことになった。この時点では、Web APIは難しいと尻込みをしていたことを覚えている。

スマホ向けのDB(SQLite)を利用したアプリを作れるようになること

スマホアプリは、SQLiteといったMobilie向けのDBをあわせて使えるようになると、AFNetworkingを利用した通信で取得したデータをスマホ内部のDBに取り込むことができるため、チャットアプリなど幅が広がるという話になった。

収益化できるアプリを開発すること

スマホアプリを作る上で、収益化の実績を作ることを目標にすることにしたい。方針として、なるべくトレンドを意識したものを作っていくことを意識して作業をすることにした。

 

iPhoneアプリの企画

brain-storming

iPhoneアプリを作っていくにあたり、1週間程で、企画と画面設計をすることにした。そうして、以下の企画でアプリを作る方針に決定した。

さみしい男を癒やすInstagram連携グラビアアイドルPhoto iPhoneアプリ
#グラビアアイドルのタグから最新写真をメイン画面に表示する。

▶Instagramで”#グラビアアイドル”で表示される写真の例

instagram-app

iPhoneアプリのターゲット

18〜50までの成人男性

iPhoneアプリの機能

お気に入り機能

メイン画面から確認した写真をお気に入りボタンを押すと、お気に入り画面で写真を確認できる。   

閲覧履歴機能

自分が過去に閲覧した画面を確認することができる。

ニュース機能

2ちゃんまとめサイトのRSSを利用して、最新のニュースを見れるようにする。

iPhoneアプリの設計

ux-structure

画面を、左から順に、

 ▶ メイン画面
 ▶ お気に入り画面
 ▶ ヒストリー画面
 ▶ ニュース画面

4つの画面のそれぞれのイメージを、方眼ノートに定規を使って書くことにした。タブのアイコンから、遷移図のイメージを書いていった。画面イメージが完成すると、近くのファミリーマートでノートをスキャンをして、pdfファイルにしたものを、画面設計図として送った

iPhoneアプリの実装

programming-school-iphone

実装で成果を出すために気をつけたこと

この実装は、Ver1.0ができるまでの期間わずか12日であった。当時、社内SEとして働きながら作業をしていたため、最短の時間で作れるように気をつけていた。

短時間で成果が出せた理由は、夜作業が終わるときに、今日作業をしたこと、課題、課題へ取り込む方針、明日やることをまとめて、毎日報告していたため、情報の整理ができてスムーズに対応することができていた。

会社の昼休みは、元気があるときは、実装で必要なgithubのライブラリの使い方について調べていたが、大抵体力が続かないので寝ていた。10分でも20分でも寝ると、夜まで体力が続いていた。また、テキストで課題を送っておくと、帰宅するまでに問題へのアプローチ方法をアドバイスしてくれるため、帰宅後もスムーズに作業に取り掛かれていた

そうしたメンターの支援があったため、企画から実装完了まで19日でiPhoneアプリを作成することができた。ちなみに、当時使用していたbitbucketのコミットしていた履歴は以下の通りだ。

 

*bitbucketのコミット履歴

bitbucket

実装で詰まった点と解決方法

実装していく中で、主に詰まった点と解決した点は以下のとおり。特別、これで詰まったというものはないが、

こういう風に実装しようと思いますが、どう思いますか?」、
そのアプローチよりもこっちの方がよいよ?」などと会話をしていた。

20件ごとに、Instagram経由で情報を取得する方法
→ StackoverFlowの過去事例で解決

メイン画面で正方形の写真を、2列ずつ表示する方法
→ StackoverFlowの過去事例で解決

XMLの取得がうまくいかない
→ 正規表現を使用して、取得したXMLのデータを加工する

プログラミングスクールを利用した結果

programming-school-success

デバッグスピードが早くなった

プログラミングスクールを利用することで、当初の目的であった、デバッグスピードを上げることができた。まずは、ライブラリの使い方をブログだけではなく、公式のレファレンスを確認するようになった

どこがわからないのか説明できるようになった

どこがわからないのかわからないという現象が少なくなった。暗黙知のような説明になるが、ソースを追いかけて出力されたログを確認することで、この部分の処理がわからないなど、具体的に今起きている問題を説明できるようになった。

技術的な方針を聞けて、進むべき道が分かるようになった

短期間のスパンではなく、半年後、1年後、3年後と、長期的なスパンで物事を考えたアドバイスがもらえるため、進むべき方向がわかって、今の作業が将来につながるイメージができて、毎日一歩一歩進んでいると実感できて、精神的に安定してプログラミングに取り組めていた。

面接でアピールできるポートフォリオができた

WEBエンジニアになるための転職活動では、面接でこういうアプリを作ってきたと実績をアピールできるとプラスになるため、その成果ができるのは良い。

収益化はできなかった

グラビアアイドルに特化したiPhoneアプリは、Appleに申請したところ、5回リジェクトされてしまった。リジェクトされた原因は、InstagramのAPIを叩いて写真を表示する画面にあっち系の画像がでてきたり、それをサーバー側で管理しないといけなかったり、RSS側のサイトに行くと、nendのエロ広告があってアウトだった。何回修正しても終わりが来なくて、途中で諦めてしまった。

グラビアアイドルだけではなくて、他には、たとえば、可愛い猫まとめだったらいいかなと思ってはいたが、企画段階で自分が役に立つアプリを作ったほうが良いと思っていたのが失敗だったなと。それも経験値として面接のネタにもしていた。失敗したことはありますか?という回答で。

 

プログラミングスクールを使ってみた感想

programming-school-feedback

開発スピードがあがる

プログラミングをやっていると技術的な点で詰まることがあったが、状況を整理して不明点のあたりをつけて、参考文献をあたったり、Google 検索をする癖ができた。そのおかげでアプリの開発スピードがあがった。また、単純にコピペすることもなくなり、処理を追ってどう動いているのかを確認するようになり、バグも減っていった。

不安に思うことが減った

独学でアプリを作っていると、今のアプリの方向で大丈夫なのかと不安になることがある。だが、アプリ開発の考え方や今後のトレンドなどを教えてもらうことで、自分の中に進むべき方向ができて、アプリ開発で不安に思うことが減った。また、毎日状況を報告していたことで、やるべきことに常に集中できていたことも大きい。

計画を立てて、1日1日の作業がスムーズに行ったのが良かった

会社の行きの電車や休み時間で帰ってからやることをリストアップしていたので、限られた時間で最高のアウトプットをできるように努力していた。これは、マイクロソフトのde:codeにいったときに、IBMの社長から寝る前に明日やることリストを作るといいよとノウハウを教えてもらったこともある。

費用について

programming-school-cost

費用は、月々25,000円ほど。週に1回1時間のチャットサポートがあった。それ以外は、24時間以内のテキストサポート。プロからマンツーマンで教えてもらって、時間を短縮するということを考えると、投資としては安いと思っていたし、現在のプログラミングスクールの相場に比べても安かった。ちなみに、今は友人の会社はその事業はやっていないが、時代の先を行っていたサービスだった。

 

プログラミングスクールはどんな人にオススメするか?

programming-school-recommend

プログラミング未経験者

プログラミング未経験者で、早く成果を上げたい人強くオススメする。すぐに成果をだすという点もそうだが、初心者がつまずきやすいところの説明や、どうやって効率的に成果を出していくかという、プログラマーとしての考え方の部分を教えてもらえるのが意味がある。

プログラミングスクールを利用することは、ドラクエに例えると、レベル1からコツコツスライムでレベルアップするんじゃなくて、メタルスライムを倒してレベル10にレベルアップするイメージに近い。

プログラミングを独学で勉強していて、成長が感じられない人

プログラミングを勉強していていて、つまるところがたくさんあって、成長を感じられない人は、プログラミングスクールを検討しよう。今の現状について、プロが客観的なアドバイスをしてくれるからだ。

SIerからWEB系に転職するための実績作り

SIerからWEB系に転職するために、実績を作りたい人にもオススメする。SIerでWEBエンジニアのような仕事をしていた場合は、その業務経験で経験をアピールできるが、そうでない場合は、実績作りが必要だ。

今の現状をスキルアップして変えたいSE

フリーターであったり、客先常駐先で辛い単調な仕事をしているSEで、スキルアップをして今の状況を変えたいと思っているのであれば、プログラミングスクールはその手助けをしてくれる。

効率の良いプログラミングスクールの使い方について

programming-skill-get-skill

モチベーション管理とペースメーカー

毎日今日やったこと、今困っている課題、課題へのアプローチ、明日の予定をざっくりと書いて報告をしよう。今困っていることについて、メンターがアドバイスをしてくれる。そのため、モチベーション管理とペースメーカーとなる。

デバッグ方法を習得する

ここは、暗黙知の部分となるが、ログの読み方や、公式のレファレンスの読み方などデバッグ方法を習得することを意識すると良い。個別の事象を確認していくことは効率が悪い。

Skypeなどの面談では、どこがわからないのか、どうしてわからないのか?を説明できるように事前にまとめておくとよい状況を整理する中で、自分で調べられそうな所は自分で調べておく。 

オススメのプログラミングスクールについて

もし、フリーターや既卒で仕事をしていないのであれば、SIerからWEB系まで幅広く案件があり無料でJavaの研修と就活サポートを受けられるプログラミングスクールと就活サポートがあるエンジニアカレッジ をオススメしたい。

現在、すでにSEとして仕事をしているのであれば、効率的に成果を出すために、PHPやRubyなどが学習できるオンラインプログラミングスクールのCodeCamp をオススメしたい。

まずは、どちらも無料体験ができるので、試してみて雰囲気をつかんで欲しい。

 

まとめ

以上、プログラミングスクールを利用してiPhoneアプリを作った体験談を紹介してきたが、プログラミングスクールは受け身で利用すると効率が悪いため、こちらから動いてより早くスキルアップができるような工夫をしていくことが大事だろう。

*また、失敗しないプログラミングスクールの選び方について知りたい方は次の記事を参考にしてみてください。

 

 

Pocket