[インターン生レポート]使いやすいアプリを作るためにUI実装で意識すべきこと(iOSアプリ)

こんにちは、技術インターン担当です。

現在KLabでは、技術に興味のある学生さんを、随時インターン生として受け入れています。
インターン期間中は、技術レベルアップの為に、個々で設定した企画・課題に対して
弊社メンターのサポートを受けながら取り組んでいきます。

今回は、9月にインターンへ参加してくれた学生さんのレポートをお届けします。

使いやすいiOSアプリを作るためには、UI実装の点において、どのような点に着目し、
注力すればよいかについて取り組み、その成果をまとめてくれました。

—————————————————————————————————-

■期間:2012年9月18日~28日(9日間 ※休日除く)
■部署:開発制作本部

[自己紹介]

現在、金沢工業大学情報学部の3年生です。
Tech-TokyoさんのTokyo IT Internship 2012という企画を通して、インターン生として受け入れて頂きました。

趣味として普段からゲームやWebサービスの開発に取り組む中、東京のIT企業という先端的な場でどれだけ自分の力が通用するのか、どれだけ自分が成長できるのかを知りたいと思い、参加しました。

[行なったこと]

今回のインターンでは、今後公開したいと考えているアプリのプロトタイプを作りながら、
iOSアプリの開発方法の習得に努めました。

[学んだこと]

学んだことを大別すると「iOSアプリの開発方法」と「UI/UXへの取り組み」の二つです。

<iOSアプリの開発方法>

1. UIをStoryBoard/InterfaceBuilderで作るのか、コードで作るのか

StoryBoard/InterfaceBuilderはデザイナーとのやり取りに向いていて生産性も高いです。
しかし、Viewのコアな部分(CALayer等)を触ったりすることが求められる場合には
結局コードで書かなければならず、結局UI定義が分散されてしまいます。

今回のアプリはがっつり使ってみました。以下がその感想です。
・プロトタイピングには最適。WYSIWYG的に作ることができます。
ただし、カスタムコンポーネントを使いだすと微妙になってきます。
・コントローラ間の遷移(segue)の定義はStoryBoardでやるべきだと思いました。
StoryBoardで定義した遷移に識別子を振り、コード側から呼び出す機能がありとても柔軟であるためです。

2. iOSアプリケーションのライフサイクル

iOS開発の初歩ですが、非常に重要でした。
これについては解説している書籍やサイトが沢山あるため、進めやすかったです。

3. iOS Simulatorではプッシュ通知が使えない

今回のプロトタイプではプッシュ通知を活用し、開発を進めるつもりでした。
しかし、iOS Simulatorはプッシュ通知に対応しておらず(!)、
実機テストも出来ない状況(Developer’s Program未登録)でした。

今回はその代替策として、バックグラウンドプロセスによるポーリングを行いました。
具体的には、
NSApplication beginBackgroundTaskWithExpirationHandler
の中でNSTimerを使い、指定した秒数毎にHTTPリクエストを送ります。
通知すべき情報があるかどうかをレスポンスとして受け取り、ローカル通知(NSLocalNofitication)を行います。

※開発に際し、以下のblog記事を参考にしました。
http://d.hatena.ne.jp/KishikawaKatsumi/20100630/1277901688

<UI/UXへの取り組み>

1. 背景にあるストーリーからUIを作る

今までは、機能要件立てからUI実装におけるフェーズにおいて、
「ユーザーの手間を少なくする」ということを考え開発を行なってきました。

しかしそれだけではなく、ユーザーが機能を理解しやすくなるよう「メタファー」を用いてUIを作るということができます。
この「メタファー」の見つけ方について、ユーザーストーリーを書き出して、それに類似するストーリーを持つ何かを探してみる
という方法を学びました。

2. iOSネイティブに近い操作に注意

思いつきで画面上部のナビゲーションバーをスワイプする操作を実装したところ、
iOSネイティブの操作(通知センターを開く)に近くユーザーが混乱してしまうという指摘を
メンターの方から頂きました。その実装を取りやめることで改善しました。

[改善点]

コードレビューをしていただき、改善点を指摘していただきました。
・ コントローラーが肥大化する傾向にあるので、適宜モデルにメソッドを移動すること
・ 今後重たい処理をしなければなくなったら、GCDを使ってレスポンスを良くする

[今後取り組みたいこと]

コードレビューでいろいろなアドバイスを頂いたことで、iOSアプリのコーディングに自信を持つことが出来ました。
その反面、ユーザーストーリーを練ったり、ユーザーインターフェースを設計する力が足りていないことを知りました。
メンターの方に教えて頂いた書籍を読んだり、プロトタイプを作ってフィードバックを得たりということをしながら、力をつけていきたいです。

当たり前ですが、いくら実装が美しくあっても、その価値はユーザーに届くものではありません。
ユーザーに気持ちよく使ってもらえるようなアプリを作ることを目標にして、
今後もiOSアプリ開発に取り組んでいきたいと考えています。

[KLabに思うこと]

朝フルーツに朝ヨガなど、一風変わった福利厚生が印象的でした。
朝フルーツはほぼ毎日食べました。様々な種類があるのですが、特にゴールドキウイが美味しかったです。
すばらしい制度だと思います!

オフィスの中は仕切りが殆どなく、デスクに着きながらも周囲の様子が伺えました。
コミュニケーションの敷居を下げる反面、集中した作業にはあまり向いていないと言えると思います。
どちらに重きを置くのかという天秤のようなもので、KLabさんのカラーが出ているのかなと感じました。

インターン期間中、メンターの方にランチに連れて行って頂いたり、
インターンとは関係ない趣味の話をしながらリラックスして開発を進めたり、
とても楽しく過ごすことが出来ました。
—————————————————————————————————-

※技術インターンに興味を持たれた方は
是非、技術系インターンシップ応募ページ からご応募下さい。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中