スタートアップiOS勉強会 #3 アウトラインメモ
スタートアップiOS勉強会 #3
スタートアップiOS勉強会 #3 #startup_ios on Zusaar に参加してきたのでメモ。
「スタートアップの人材獲得戦略」@laisoさん
- ユビレジ
- スタートアップ
- リソースが足りない
基本戦略
- 大企業だとできない方法取る必要がある
- エンジニアが採用に関わる
- 小さいチームで進めていく
優秀なエンジニア
- 自分よりエンジニアを探す
- 知り合いから探す(縁故採用)
WANTEDLY
- スタートアップ向けという思想でできてる
コミュニティ
- 勉強会を開く
- 勉強会で発表する
- 非エンジニアはイベントの運営を手伝う
- 会場の貸出をするとか
- 注意 : コミュニティの現場で採用活動目的だと嫌がられる
自分たちからアプローチする
- 自分たちから誘わないと誰もコない
- 気になる人に声を直接書ける
- ポジションとかで募集じゃなくて、個人を指定して募集する
- クックパッドの連鎖パターン
柔軟に参加出来るようにする
- リモートワーク
- クラスメソッド事例
まとめ
- 自分よりすごい人を紹介してもらう
- コミュニティへ貢献して良い人元関係を作る
- 来て欲しい人に自分たちからアプローチする
- スタートアップiOS勉強会みたいなイベントを開く
「Appleのテンプレートは有害と考えられる:UITableViewControllerとSRPについて」@modocacheさん
単一責任原則(SRP)
- クラスを変更する理由はひとつ以上存在してはならない
- Clean Codeの著者
UITableViewController
- ViewController
- TableDataSource
- TableDelegate
の3つすべて入ってる
GithubViewer(サンプルアプリ)
TableViewController -> ViewController(Detail)
なアプリ
バットパターン
- reloadData
- インジケータの表示
- 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さん
- 通信をフックしてレスポンスのstubを行うライブラリ
- レスポンスのステータスコードも決められる
APIがまだ出来てなくてもテストを書いていける
-
APIの仕様を決めて実装を進められる
-
サーバ側がまだ実装されてなくても、アプリ側の実装を進められる
-
リリースビルドに含めないようにする
-
リジェクトされる
まとめ
- API開発者にスタブ用のデータは作ってもらおう
- スタブはあくまで単体テストのためだったり無駄なコミュニケーションの時間を減らす
- WebViewも同じようにレスポンスのstubできる?
「地方零細スタートアップの失敗ノウハウ」Masayasu Shigeokaさん
- 福岡でiOSアプリのセミナー
ビジネス担当としての失敗事例について
何でもできます!
- 何でもできるというと、何を注文していいのか分からない
- お客から見て専門的な事に絞る
お金のコンプレックス
- 1000万の札束メモを使ったお金の苦手の意識を解決
やらないことを決める
- やらないをきめて、他に集中する
受託サービス嫌い
- 立ち上げ労力がかかる
- スタッフの給料とかの問題
- 受け入れると安定して資金ができるので経営が楽
過剰なサービス提供
- お客が求める需要よりも大きすぎる提供
- 営業のバランスがわるくなった。
- バランスをちゃんと決めて提供する
- 他の企業への経営に入ってバランスを学ぶ
体のメンテナンス
- 体壊れた
- 体のメンテナンスを定期的に行う
起業前
- 起業時の計画は上手くいかない
- ビジネスをやればやるほど「なんか違う」
- ポジショニングだけ変えて再スタート
- ITエンジニアを大事にする企業をサポートしていく
「iOSでの計測とカイゼン」Gunosy @y_matsuwitterさん
- 最近GoLangを書いてる
- 数字は紙より正しい
改善 > 開発
- リリースより、改善の方が大事
- 1つの改善の効果を見るのに大体3週間かかる
- 時間がない
無駄なく改善したい
- 仮説の精度
- 目的をしっかり決める
- 各画面の遷移などから明確に定義していく
- 会社内に仮説のナレージをためる
- 検証の精度
- 外部の計測ツールについて
- なんとなくスクリーンビューとかが見える
- 数値が何となくしかでてこない
- セッション単位で何をしたかぐらいな感じ
- 検証をする上であんまり使いやすくない
- 仮説の検証に必要な変数を用意しにくい
- 仮設用のログを取る仕組みを取る必要がある
- 自前でLoggerを作成してる
- 各ユーザーのクリックや遷移や滞在時間等を取得してる
- 検証の手数を増やす
- 開発と検証の分離
- リモートから変更可能なUI
- APIレスポンスにUIに関数情報を含める
{ color : 'xxx' : 'size' : "xxx"
}`
「NJKWebViewProgressを使ってローディングの表示を工夫する」@ninjinkunさん
アプリ内にWebViewを使いたい
- 大分サイトを表示したい
- アプリの画面をHTML+JSで作りたい
- ヘルプやガイドなどをHTMLにしたい
アプリ内WebView
- ローディングの白い画面が出てしまう
- コンテンツにローディングアイコンを出す
- 消すタイミングが難しい
UIWebViewDelegate
で消す- 読み込み完了 ≠ 画面が表示
- HTMLが見える前に処理が始まってキレイにフェードできない
ninjinkun/NJKWebViewProgress
- WebViewの読み込みの進捗率を取得する
document.readyState
の interactiveなったかどうかを見てる- document.readyState – DOM | MDN
まとめ
- 白い画面をさけよう
「私のアプリがTVで紹介された時の話」- koogawa
- ダウンロード40万ぐらいのまりもアプリ
- ダウンロード数が一瞬で3倍ぐらいになった
放送前
- 事前に使用許諾メール
- メール見てなかった
- きゃか出してないけど放送された
放送後
- テレビ局にお礼のメールした
- 放送時の映像を送ってもらった
「メモリを節約する工夫」- @k_katsumi
メモリを節約する工夫
- ユビレジのメモリ消費
- 普通の画面フローで40MBもメモリ消費してしまっていた
- 今回これを改善した
- 画像が大量にある
- 4画面ぐらい確保 + 画像が一杯あったのでメモリ消費されてた
解決方法
- 大きな1枚の画像 => パターン的に使える画像に分割して利用
- 小さい画像を分割してパターンを利用するようにした
- 複数の箇所で同じ画像が使いまわす
- 20MBぐらいまで減った
連打や同時押しに気をつけよう
- ナビゲーションバーをカスタマイズしてるアプリでの問題
- 同時押しの対応をしないと、Navigation Stackに不整合がおきて死ぬ問題
- UIButtonの
exlusiveTouch = YES
にして排他的にボタン処理をする - デフォルト
exlusiveTouch = YES
にしてしまうとかでもいいじゃないかな
「アプリのインタラクションデザイン」@yskm_
- Share画面
- openFrameworks
- デジタルサイネージ
- OpenCVを使って動体を検知してインタラクション的な映像
cal
- iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 cal.
- 触った時にフィードバックがあるアプリ
- テーマを選択出来る機能
- アイコンだけのPickerを作ってテーマ選択画面に使ってる
- アイコンのPicker
- 選択した時に震えるフィードバックして選択できることを示してる
- UIScrollViewベース + アイコンのPickerViewで表示
- Scrollしてる位置でalpha値とかを変えてる
scrollDidEnd
でアイコンの位置を決定してる
「iPad 観光アプリのご紹介」- @aplink_hidaka
- 観光するときにどうやって情報を収集するうか
- それを行うiPadアプリ
- 福岡の糸島エリア
- お気に入りのスポットの順番を並び替え出来る
- 情報誌とかだと順番は管理できない
- 個人だと広報が難しい
- 福岡ローカルで放送してもらった総合のランキングに入った
人力で調査、反映してる
- マネタイズは難しい
- 採算性は全然あわない
「ショートムービーアプリ•メチカブーラ」@kaz_piro_piroさん
- デザイン
- 美容室を起業
動画アプリ
- スタンプを動画に貼れる感じ
- 15秒
- メインが2秒x6コマ
- ユーザーは後からコマを切り出すのが苦手
- 投稿の9割ぐらいは非公開になった
- リテラシー低い人はオフラインでアプリを教える
- その活性化する週末を以下に最大化するかについて
メモ : Markdown Life
懇談会はにんじんくんさんとiOSアプリのコードレビュー的な勉強会あると楽しそうだよねという話をした。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。