PHPerが開発合宿でiOSアプリ開発に入門してきた記録

@hiro_yエントリーを読まれた方もいらっしゃるかと思いますが、今回は自社で開催された「開発合宿」を通して私(@akase244)がどんなことやってきたのかを紹介します。

f:id:akase244:20161025133638j:plain
戦いの始まり。。。

合宿にあたり心がけたこと

今回の合宿では、以下の二点を心がけて取り組みました。

  • 自分が使いたいものを作る。
  • 普段の仕事ではやらないことにチャレンジする。

実はこれらとは別に「必ず何かしら動くところを見せられる状態にする」というのが合宿に参加する上では「絶対条件」として課せられていました。

厳しい条件ではありますが、合宿に伴う諸々のコストを考えるとそれに見合うだけのアウトプットを提示するのは当然かと思います。ということで都合三点を意識しながら作業を進めました。

何を作ろうとしたのか

普段はPHPerなのですが

  • スマホアプリを開発してみたい。
  • Rolto(iPhoneに対応した感熱紙方式の小型モノクロプリンタ)」というガジェットを使った開発をやりたい。

と以前から考えていたので、ちょうどよいタイミングだと思い今回の合宿ではSwiftにチャレンジしてみることにしました。

ところで突然ですが、みなさんは勉強会に参加する機会は多いほうですか?

私は個人の活動としてPHPの勉強会を主催していることもあり、非常に多くの方とお会いする機会が多いのですが、そんな活動の中で一つ困っていることがありました。

  • SNSの「あのアイコンの人」が勉強会に参加してる!でも、顔を知らないのでどの人なのか分からない!!

みなさんはこんな経験ないでしょうか!?

後日、「あのアイコンの人」だったのかー!ということが判明したりして、もっとゆっくりお話したかった!なんてこともしばしば。

この問題を解決するために考えた仕組みが「アイコン印刷システム」です。

つまり、このシステムを使って勉強会の受付時にアイコンを印刷して、裏がシールになってるので勉強会の参加中は服にペタっと貼ってもらい、参加者同士の会話のきっかけを生み出せないかと考えた訳です。

システム概要

実装するにあたり、ふわっと頭の中で考えたアイコン印刷システムの概要はこんな感じです。

  • connpassのイベントページをスクレイピングして参加者名とアバター画像をJSONで返すAPIを呼び出す。
  • 取得したJSONを元にiPhoneの画面に参加者のアイコン一覧を表示する。
  • アイコンをタップすると「受付済み」と記録してアイコンをRoltoから印刷する。

ページのHTML構造が変わると破綻してしまうスクレイピングをなぜわざわざやっているのかというと、ほとんどのイベントサイトで提供されているAPIでは参加者の情報までは返してくれないからです。

ですので、このAPIの部分だけはPHPで実装することに決めました。

できたこと・できなかったこと・苦労したこと

できたこと

  • Goutteでconnpassのイベントページをスクレイピングして参加者名とアバター画像をJSONで返すAPIを実装しました。LaravelのControllerで連想配列をreturnすると自動的にJSON形式にしてくれるので非常に作りやすかったです。
  • ローカルにある画像のパスを指定して特定の画像をRoltoで印刷することに成功しました。

f:id:akase244:20161012184256j:plain Roltoを使ってSNSのアイコン画像を印刷した様子

できなかったこと

  • 前述のAPIで取得したJSONを元にiPhoneの画面に参加者のアイコン一覧を表示するということをやりたかったのですが、「苦労したこと」で書いているとおり、JSONの読み込み方が分からず実装できずに終わりました。
  • 一覧表示が実装できなかったので、必然的にアイコンをタップし「受付済み」と記録する機能の作り込みまでは辿り着きませんでした。

苦労したこと

  • Objective-C用の「Rolto SDK」をSwiftで読み込む方法が分からず、Xcode上で「Build Succeeded」を拝むまでにかなりの時間を要しました。

f:id:akase244:20161025133111p:plain 大量のエラーで何度も心が折れかけた

  • SwiftでJSONを読み込むやり方がいくつかあるようで、どれがセオリーなのか分からず結局JSONを読み込むところまで行きつきませんでした。
  • Swiftの情報をググるとSwift2.xと3.xの記事が混在してヒットする状況のようで非常に混乱しました。

まとめ

ひとことでまとめると、「楽しかった」これにつきます。 「雑なまとめだな」と思われるかもしれませんが、

  • 普段仕事でやらないことにチャレンジするのが楽しかった。
  • エラーが発生してうまくいかないことすら楽しかった。
  • 参加したメンバーでバラバラのことをやりながらもちょっとした相談にワイワイ話しながら解決するのが楽しかった。
  • 最後に「動くもの」を少しでも見せられたのが楽しかった。

といった感じでしょうか。とにかく今回の開発合宿は最高体験でした。なので、また次回があることを期待しています。|д゚)チラッ

f:id:akase244:20161025134523j:plain 「動くもの」を発表している様子