スタートアップiOS勉強会 #3

スタートアップiOS勉強会 #3 #startup_ios on Zusaar に参加してきたのでメモ。


「スタートアップの人材獲得戦略」@laisoさん

スタートアップの人材獲得戦略とは何か – laiso

  • ユビレジ
  • スタートアップ
  • リソースが足りない

基本戦略

  • 大企業だとできない方法取る必要がある
  • エンジニアが採用に関わる
  • 小さいチームで進めていく

優秀なエンジニア

  • 自分よりエンジニアを探す
  • 知り合いから探す(縁故採用)

WANTEDLY

  • スタートアップ向けという思想でできてる

コミュニティ

  • 勉強会を開く
  • 勉強会で発表する
  • 非エンジニアはイベントの運営を手伝う
    • 会場の貸出をするとか
  • 注意 : コミュニティの現場で採用活動目的だと嫌がられる

自分たちからアプローチする

  • 自分たちから誘わないと誰もコない
  • 気になる人に声を直接書ける
  • ポジションとかで募集じゃなくて、個人を指定して募集する
  • クックパッドの連鎖パターン

柔軟に参加出来るようにする

  • リモートワーク
    • クラスメソッド事例

まとめ

  • 自分よりすごい人を紹介してもらう
  • コミュニティへ貢献して良い人元関係を作る
  • 来て欲しい人に自分たちからアプローチする
  • スタートアップiOS勉強会みたいなイベントを開く

「Appleのテンプレートは有害と考えられる:UITableViewControllerとSRPについて」@modocacheさん

Apple Templates Considered Harmful

単一責任原則(SRP)

  • クラスを変更する理由はひとつ以上存在してはならない
  • Clean Codeの著者

UITableViewController

  • ViewController
  • TableDataSource
  • TableDelegate

の3つすべて入ってる

GithubViewer(サンプルアプリ)

TableViewController -> ViewController(Detail)
なアプリ

バットパターン

  1. reloadData
  2. インジケータの表示
  3. APIClientでデータを取得する

ViewControllerにデータを持ってるのが問題

  • UITableViewDataSource で使うものもControllerにあってあんまり美味しくない

ViewControllerが持ってしまってる責任が3つもある

  • ViewControllerの責任
  • UITableViewDataSourceの責任
  • UITableViewDelegateの責任

責任の分割

  • ViewControllerの責任
  • UITableViewDelegateの責任

モデル部分は別に分けてしまって、DataSourceは外に出す

特にひどいMasterDetailApplication

  • MasterDetailApplicationはやばい
  • CoreDataは難しいのに、AppDelegateが責任持ちまくり
  • エラーハンドリングをちゃんとやってない

OpenGL Application

  • 400行以上ある

ましになったテンプレート

  • Page-Based Application
  • Sprite-Kit

最近作られたものはまともなテンプレートになってる

ファイル数が増えるデメリット

  • SRPだとクラスが増える
  • クラスエクプローション
  • あんまりない

「OHHTTPSutbsを使って進めるiOSアプリ開発」@yimajoさん

OHHTTPStubsを使ったiOSアプリ開発

  • 通信をフックしてレスポンスのstubを行うライブラリ
  • レスポンスのステータスコードも決められる

APIがまだ出来てなくてもテストを書いていける

  • APIの仕様を決めて実装を進められる

  • サーバ側がまだ実装されてなくても、アプリ側の実装を進められる

  • リリースビルドに含めないようにする

  • リジェクトされる

まとめ

  • API開発者にスタブ用のデータは作ってもらおう
  • スタブはあくまで単体テストのためだったり無駄なコミュニケーションの時間を減らす
  • WebViewも同じようにレスポンスのstubできる?

「地方零細スタートアップの失敗ノウハウ」Masayasu Shigeokaさん

「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3

  • 福岡でiOSアプリのセミナー

ビジネス担当としての失敗事例について

何でもできます!

  • 何でもできるというと、何を注文していいのか分からない
  • お客から見て専門的な事に絞る

お金のコンプレックス

  • 1000万の札束メモを使ったお金の苦手の意識を解決

やらないことを決める

  • やらないをきめて、他に集中する

受託サービス嫌い

  • 立ち上げ労力がかかる
  • スタッフの給料とかの問題
  • 受け入れると安定して資金ができるので経営が楽

過剰なサービス提供

  • お客が求める需要よりも大きすぎる提供
  • 営業のバランスがわるくなった。
  • バランスをちゃんと決めて提供する
  • 他の企業への経営に入ってバランスを学ぶ

体のメンテナンス

  • 体壊れた
  • 体のメンテナンスを定期的に行う

起業前

  • 起業時の計画は上手くいかない
  • ビジネスをやればやるほど「なんか違う」
  • ポジショニングだけ変えて再スタート
    • ITエンジニアを大事にする企業をサポートしていく

「iOSでの計測とカイゼン」Gunosy @y_matsuwitterさん

iOSの検証と改善 // Speaker Deck

  • 最近GoLangを書いてる
  • 数字は紙より正しい

改善 > 開発

  • リリースより、改善の方が大事
  • 1つの改善の効果を見るのに大体3週間かかる
  • 時間がない

無駄なく改善したい

  • 仮説の精度
    • 目的をしっかり決める
    • 各画面の遷移などから明確に定義していく
    • 会社内に仮説のナレージをためる
  • 検証の精度
    • 外部の計測ツールについて
    • なんとなくスクリーンビューとかが見える
      • 数値が何となくしかでてこない
      • セッション単位で何をしたかぐらいな感じ
    • 検証をする上であんまり使いやすくない
    • 仮説の検証に必要な変数を用意しにくい
    • 仮設用のログを取る仕組みを取る必要がある
    • 自前でLoggerを作成してる
      • 各ユーザーのクリックや遷移や滞在時間等を取得してる
  • 検証の手数を増やす
    • 開発と検証の分離
    • リモートから変更可能なUI
      • APIレスポンスにUIに関数情報を含める
      • { color : 'xxx' : 'size' : "xxx"}`

「NJKWebViewProgressを使ってローディングの表示を工夫する」@ninjinkunさん

アプリ内にWebViewを使いたい

  • 大分サイトを表示したい
  • アプリの画面をHTML+JSで作りたい
  • ヘルプやガイドなどをHTMLにしたい

アプリ内WebView

  • ローディングの白い画面が出てしまう
  • コンテンツにローディングアイコンを出す
    • 消すタイミングが難しい
    • UIWebViewDelegateで消す
    • 読み込み完了 ≠ 画面が表示
  • HTMLが見える前に処理が始まってキレイにフェードできない

ninjinkun/NJKWebViewProgress

まとめ

  • 白い画面をさけよう

「私のアプリがTVで紹介された時の話」- koogawa

  • ダウンロード40万ぐらいのまりもアプリ
  • ダウンロード数が一瞬で3倍ぐらいになった

放送前

  • 事前に使用許諾メール
  • メール見てなかった
  • きゃか出してないけど放送された

放送後

  • テレビ局にお礼のメールした
  • 放送時の映像を送ってもらった

「メモリを節約する工夫」- @k_katsumi

メモリを節約する工夫

  • ユビレジのメモリ消費
  • 普通の画面フローで40MBもメモリ消費してしまっていた
  • 今回これを改善した
  • 画像が大量にある
  • 4画面ぐらい確保 + 画像が一杯あったのでメモリ消費されてた

解決方法

  • 大きな1枚の画像 => パターン的に使える画像に分割して利用
  • 小さい画像を分割してパターンを利用するようにした
  • 複数の箇所で同じ画像が使いまわす
  • 20MBぐらいまで減った

連打や同時押しに気をつけよう

  • ナビゲーションバーをカスタマイズしてるアプリでの問題
  • 同時押しの対応をしないと、Navigation Stackに不整合がおきて死ぬ問題
  • UIButtonのexlusiveTouch = YESにして排他的にボタン処理をする
  • デフォルトexlusiveTouch = YESにしてしまうとかでもいいじゃないかな

「アプリのインタラクションデザイン」@yskm_

  • Share画面
  • openFrameworks
  • デジタルサイネージ
    • OpenCVを使って動体を検知してインタラクション的な映像
  • cal
  • アイコンのPicker
    • 選択した時に震えるフィードバックして選択できることを示してる
    • UIScrollViewベース + アイコンのPickerViewで表示
    • Scrollしてる位置でalpha値とかを変えてる
    • scrollDidEnd でアイコンの位置を決定してる

「iPad 観光アプリのご紹介」- @aplink_hidaka

  • 観光するときにどうやって情報を収集するうか
  • それを行うiPadアプリ
    • 福岡の糸島エリア
  • お気に入りのスポットの順番を並び替え出来る
    • 情報誌とかだと順番は管理できない
  • 個人だと広報が難しい
    • 福岡ローカルで放送してもらった総合のランキングに入った

人力で調査、反映してる

  • マネタイズは難しい
  • 採算性は全然あわない

「ショートムービーアプリ•メチカブーラ」@kaz_piro_piroさん

  • デザイン
  • 美容室を起業

動画アプリ

  • スタンプを動画に貼れる感じ
  • 15秒
  • メインが2秒x6コマ
    • ユーザーは後からコマを切り出すのが苦手
  • 投稿の9割ぐらいは非公開になった
  • リテラシー低い人はオフラインでアプリを教える
    • その活性化する週末を以下に最大化するかについて

メモ : Markdown Life

懇談会はにんじんくんさんとiOSアプリのコードレビュー的な勉強会あると楽しそうだよねという話をした。