potatotips #32 (iOS/Android開発Tips共有会) レポート
potatotips #32に行ってきました。
iOS関係だけの簡単なまとめです。
CocoaPods / Carthage by JPMartha
Carthage ≒ CocoaPods
- どちらもSwift2.3/3.0対応する見込みするらしい
- ちなみにCarthageコンパイル時間が短くなるメリットもあるそうです。
感想:そもそも知らなかったし情報収集を各所でしているのにただただ感心。
WWDC2016で話されたDependency Injectionを活用してリファクタリング by yoichitgy
Dependency Injectionを使って依存しないコードにしよう。
ちなみにSwinjectというSwift向けのフレームワークもあります。
- Good - 最低限必要なものにだけ依存
- Bad - AppDelegateに依存
- Protocolで処理を抜き出してAppDelegateに依存しないようにする
感想:Swinjectも初耳でした。触ってみよう
サンフランシスコで就活してみた話 by kitasuke
- SanFranciscoがEngineerにとって良い
- ただビザの取得が難しい
- 面接フロー
- 電話面談
- 技術面接
- LEET CODE / HACKING THE GOOGLE INTERVIEW など参考
- オファー
- 注意
- 日本で受けれないとこがある(面接などができない場合)
- ビザサポートが必要だと伝える
- Githubなど用意しておく
iOS枠でしたが海外就活の話。
iOSアプリのライブラリ依存管理ツールとしてSwift Package Managerを使うのはまだしばらく先かなと思った話 by mono
www.slideshare.net
- Swift Package Manager == ライブラリ依存管理マネージャー
- Swift3 * XCode8 で使えるか調査
- まだ未完成なのでまだ早い
- Carthagoの方がBuild早くなるしいいかな
- 対応ライブラリ多くない/情報が少ない
- しばらく様子見
- iOSBuild周りも対応予定(fastlaneとか)
しばらく先に使ってみよう。
OnBoardingを簡単に作れるライブラリをいじってみた by akatsuki174
概要
そもそもOnBoardingとは
IT用語辞書では「組織やサービスに新たに加入した人に手ほどきを行い、慣れさせること」。
要は、チュートリアル的なものです。
ライブラリ * paper-onboarding
なかなか綺麗なUIでよかった
プロジェクト内のURLをAssociated Valuesで管理してみる by marty-suzuki
APIで投げる際などのURLを管理 github.com
Git見ていただいたらわかるのですが、シンプルですごく勉強になる
Realm Centered Design by susieyy
realm中心設計
- realmNotification
- Data変更時にindexが通知される(CoreDataではindexは返ってこない)
- realm * RxSwift * MVVM
- Observerとしてrealmを使用する
realmNotificationなかなか便利そうなので触ってみよう
チーム開発にSwiftLintを導入してみた by ikamooon
- SwiftCodingStyleがない→Lint導入
- そのまま使うと厳しすぎた
- ymlで文字数とforce_castをいじって他は手で修正
- good
- コードレビュー前に気づける
- 宗教戦争がなくなる
面白そう!まず個人で試してみます。
まとめ
最新情報のキャッチアップがしきれていなかったので初耳のものが多かったし 設計周りの話もありすごく勉強になった。 とりあえず今回学んだものを試していこう。
出版記念!著者が語る『「少し先の未来」を予測する クックパッドのデータ分析力』 レポート
出版記念!著者が語る『「少し先の未来」を予測する クックパッドのデータ分析力』 http://eventdots.jp/event/575614
データの価値化と、食トレンドの把握 @クックパッド株式会社 中村 耕史氏
自己紹介
たべみる事業の責任者
書籍に関して
書いてあること サービス立ち上げ データの考え方
書いてないこと データ分析手法
書いてないことが書いてあるおすすめ書籍
- 考え方
ビッグデータビジネスの時代
- 手法
10年戦えるデータ分析入門(エンジニア/マーケより!?) イシューからはじめよ(コンサルより!?何を調べればいいかを教えてくれる本)
クックパッド利用状況
海外でも使われている。 US/インドネシア/スペイン/アラビア 5600万人利用/月
7割はSP(SP75% App25%) 利用時間 SP 16:00 PC 16:00 11:00
法人向け
データ分析したものを小売に連動 by たべみる
持っているデータ レシピ→傾向の変化 検索→ニーズ 保存→関心度
データ分析の仕組み
www.slideshare.net
www.slideshare.net
意思決定調査の起点
検索文言からフラグ+人力で材料orメニューor調味料を検索しているのかを判定
データの価値と適切な表現
データ自体がしょうもないと出来るものはしょうもない →適切な場作りが大事!!
良いデータ→表現→分析 が大事
データで作る新しいビジネスモデル 〜企業の未来を作るのはデータサイエンティスト〜 株式会社PKSHA Technology 神谷 勇樹氏
データサイエンティスト →データからユーザーにすする情報を選定する
about PKSHA
IT ビジネス データサイエンス を行う →社内全員全ての領域を担当する。
シンキングパス
トレンド解釈→課題のマトリクス化→課題の因数分解 どんな課題に対してどんな分析アプローチを取りか
スムーズにデータ活用する組織にする為に オイシックス株式会社 EC事業本部 戦略推進室 米島 和広氏
データが弱かった時代
単価6000円を達成したい →一個の単価あげる/複数商品を買ってもらう →うまくいかず・・・
システム部の課題 マーケからの依頼が大量に来る →雑な計画なので結果にならない →売り上げしか見ずに何がうまくいったかわからない
Tresure Dataでログを取得し改善を図った
結果と先行指標をリアルタイムに見るようにした CVR等の数字を見るようにした ダッシュボード(データが可視化された画面)が確認しやすい為よくデータを見るようになった →PDCAのCAが強化された
見るべき対象を事前に把握する 実験対象のみの早い事実確認ができるようにする
事例
高頻度のページ更新(下手しい毎日変更している) →ヒートマップを全ページに埋め込んでいる/特にLP フォームは重視
ヒートマップで重要なこと CVRあげることを目指さない →お客様を満足させたい/理解したい
新しいサービス時には、とことん知る アンケート 電話 ヒートマップ トラフィック変化 ご自宅訪問 追いかける
データドリブンサポート
施策対応前にレビューポイントを明確にする
パネルディスカッション
by モデレーター
トレジャーデータ 堀内氏 パネラー
クックパッド 中村氏 PKSHA Tachnology 神谷氏 オイシックス 米島氏
データ分析を取り入れる際の社内事例
クックパッド データにwelcomeな環境だがあまり売り上げにつながらないので難しかった
オイシックス 特になし→結果が出ていなかったので導入しかなかった GAで細かいトラフィック(主婦層のトラフィックを見たい)を見ていたが工数が大きい→Tresure導入
スカイラーク 小さな事例から、データ分析の結果がある事を証明してから説得 →+導入コストが低い+いつでも止められる+good/badの時のコスト比較を提示
Data 共有
Tresure data 内他社間で共有できる
トレジャーデータ 天気/トレンドデータと掛け合わせれるとgood
iOS 9 Bootcamp!エンジニアとデザインのあいだ レポート
iOS 9 週連続 Bootcamp!iOS 9で変わる体験とエンジニアとデザインのあいだのレポートです。
↓公式レポートとライブ配信していた実際の様子です
@dots
1.エンジニアとデザイナーのあいだ @クラスメソッドよこやまゆうだい
エンジニアのためのデザインの考え方や、実際にエンジニア、デザイナーを兼任してモバイルアプリケーションの開発に関わってきたなかで感じた課題などをお話しします。
エンジニア*デザイナーって少ない
@クラスメソッド mobile部の比率 70 エンジニア 10 デザイナー 10 PM.PL 10 どっちも
こんな感じでやってる
自分で
要件定義→デザイン→実装
複数人時はデザインを投げて最後にUI調整
エンジニアはCustomView職人
icon等素材はリポジトリにpush
WHY デザイン*エンジニア?
よりよいAPPを届ける為
あるある
@エンジニア
WHAT:
レイアウトのバランスが良くない→要素の間隔etc
Problem:
細かい修正が発生する、修正箇所が多すぎてそのままrelease
DO:
レイアウトの基礎を学ぶ
→要素のアウトラインを揃える(重複するものは揃える)
→上下左右の余白を揃える
→大きな要素をセルの真ん中に配置する
→オススメ本:なるほどデザイン
WHAT:
オートレイアウトが大変
Problem:
端末によって解像度の違いでUI崩れる
時間がかかる
簡単なレイアウトしか作れない
DO:
オートレイアウトから逃げない!
→ただaddmisingconstraintsは使わないで!!→理解せず使うと大変
→参考 http://www.slideshare.net/kakegawa-atsushi/devio-auto-layout
WHAT:
簡単な編集が出来ない
Problem:
特別のソフトが必要と思う
デザイナーとのやりとりの方が時間がかかる
DO:
画像編集のスキルを身につける
→macのプレビューを使用→画像見る+サイズ、カラー編集etcが出来るよ
@デザイナ
WHAT:
デザイン提案時に理由を聞かれる
Priblem:
説得力がない→根拠がない
意見をかわせない
デザインスキルが鍛えられない
DO:
UIと会話しよう
→なぜそこにあんの?とUIに聞くイメージ
WHAT:
WEBデザインっぽい。。。
Priblem:
UIコンポーネントの特性が考慮されていない
画面遷移が複雑で迷子になる
1つの画面に情報が多すぎる
DO:
アプリにはアプリのデザイン
デザイン決まったら人の意見を聞いて見る、動くようになったら使ってもらう
→feedbackもらう
WHAT:
自分で修正してPRちょうだい
Problem:
少しの修正でもコミュコストが大きい
作業の合間に修正依頼でたりして気がひける
DO:
InterfaceBuilderをマスターする(Xcodeでストリーボードをいじる)
まとめ
エンジニア
レイアウトの基礎を学ぶ
AutoLayoutから逃げない
簡単な画像編集スキルを身につける
デザイナー
デザインに明確な根拠を持つ
APPWEBデザインは違う
InterfaceBuilderをマスターする
どっちも
色々なAPPを見よう
デザインガイドラインを見る
https://developer.apple.com/jp/documentation/UserExperience/Conceptual/MobileHIG/DesigningForiOS7/DesigningForiOS7.html
参考書籍:モバイルデザインパターン
2.奥行きを意識したプロダクト-iOS9で変わる体験- @goodpatchUIdesigner
iOS 9のアップデートに伴いiPhone6sや最近ではiPad Proもリリースされました。
ハード、ソフト両面でのアップデートにより、どのように体験が変わるのかUI デザイナーの視点からNews App等標準アプリケーションを参考 に考察します。
@goodpatch
リサーチ→UI→プロトタイプ→実装
実装以外をデザイナーが行う
iOSのハードのupdate
Apple Pencil良い!→反応速度が他社に比べ早い!
3Dtouch/pop etc
appleTV
感じたこと
keynote見た
APPswitcher
QuickAction
APPLEtvのUXが良い!→奥行きを感じるUI
レイヤーの概念が強調されている!→奥行きを感じるUIを強調している
→QuickAction→他Appがボケる
設定アイコンも歯車ごとにレイヤー分けされている
ユーザーは迷わない!?
→結局ユーザーはその複雑性に慣れる
てスラーの〜論(インタラクションデザインの教科書)
iOS6以前 notFlat奥行きなし
→Flat
→奥行きあり
複雑性はユーザーが持っていた
@human interface guidelines
QuickAction
アプリの先にユーザーがしたい行動を呼び出す
spotright
App検索が出来る
ProactiveAssistant
イヤホンさすとmusicのショートカットが出るetc
→ユーザーに寄り添い行動をサポート
余談
Apple+IBMのAPPが作られており公共の施設の情報を公開?
高齢者向けAPPも作っている
デザイナーとエンジニアの関わり方
updateによる製作者側の負担が大きい
QuickAction等、紙ベースでプロトタイプ作りにくい
問題:
お互いのコミュニケーションロスは多い
今後の課題:
実際作ったらなんか違う
デバイスによって違う
解決策:
JSONデータをデザインに取り入れる
→SketchDataPopulatorというプラグインを使用し実データで確認を行う
FluidforSketch AutoLayoutのようなもの
実機を想定したプラグイン、ソフトが増えた
silver
スケッチ上で遷移やインタラクションをつけれる
Qwikly(まだreleaseされていない)
グラフィックを作ってXcodeに吐き出せるツール
デザイナーLarry teslarさん好きだそうです。
まとめ
奥行きを意識している
→ただ現在は複雑性をユーザーが学んでいる段階
制作環境の変化
→エンジニアとデザイナーの壁を少なくするような
OSから提供された機能を理解しユーザーに複雑さを感じさせない
3.質問タイム
現在はデザイナーにAutoLayout任せたりは出来ていない
- 工数としては微妙(出戻り、結局エンジニアがAutoLayoutいじる等あり)、よりもお互いの理解を深める為!?
AutoLayoutの勉強法
- やる!ドキュメント見る!
- http://dev.classmethod.jp/references/ios-7-xcode-5-auto-layout-1/
コミュロスを減らす工夫
- 共通言語を作る(セルetc)
エンジニア*デザイナーを行う理由
- コミュロスを防ぐ、お互い指摘できるようになり品質をあげる←技術の話がわかる為怠けられないw
- ただ学習コストは高い
4.memo
tips
SBのコンフリクトを防ぐ為にSB分割を作業毎に分割し作業する
PHPBLTレポート
php歴6ヶ月程ですが正直ほぼ理解できず、、、 下記ブログを参考にした方がいいと思いますw
1.phpのarrayを自作
SplFixedArrayの使用 →1/3の容量に出来た +アクセサ,count,iteratar(forEachをする為)をcustomArrayで実装 →1/100の容量に →ただ処理時間は約1.5倍にw PHP BLT だけど HTML5 の コンテンツモデルのお話 // Speaker Deck
2.openpearの素敵な終わらせ方
by keisuke sato @RIAF pear.php.netをオープンに
openpearは今日でサービス終了ですw
3.html5のコンテンツモデルについて
https://speakerdeck.com/fivestar/php-blt-dakedo-html5-false-kontentumoderufalseohua
ブロック要素、インライン要素を分けていた
→
コンテンツモデルとして定義された
→いろんなカテゴリーに分けられた
→Flow→主にbody内にあるもの
HTML5 PHP HTML Paragraphizerをオープンソース化した!!かったけど退職したのでしてませんw
4.BigMasterData
www.slideshare.net @mercari MasterDataとは DB内で他データの参照元となるデータ
5-10msec/2.0MB←遅い TSVにした 2MB→600kb 70msec→7msec
5.Symfony
Symfony 面倒だけど便利 DI使うとyamlで定義できる
LoggableTraitを使うとテストが書きやすくなるよ
6.phpでgolangのextension作ったよ
github.com/do_aki/gophp_sampleにあります phpはsegmentation falut がたまにおこる
7.swift2をphpで学ぶ
PHP7/swift2の比較
webApplicationをswiftで書いてみた
8.couchbase
竹澤さん couchbase -NoSQL でかいデータはstreamで流せる! couchbase4 N1QL(ニッケル) -SQL使えるようになったよ
トランザクションはなくてもCheck-and-set!?(CAS)でどうにかなる!?
9.phpbuildがいかに便利か力説します
http://www.slideshare.net/hnw/phpbuild phpbuild→ phpenvのプラグインとして使うと使いやすい phpenc updete コマンド
good 自分専用のPHPが作りやすい
参考:
10.phalcon
@arimo phalcon -闇多い -はやい!!
Phalcon2でDMM.eってアプリ作ったよ
11.whpってapp作ったよ
fuizbuzzをwhpで作った
14.current status
yui_tang PSRとは!? PHPのコーディング規約のこと
PSR-9,10 Securityに関してのPSRが出来たよ!
15.開発効率をあげる
Vargrant chefすみのものを作る boxがたまに壊れる マイグレートするchefの作成
projectのsetup sh(シェル)
16.application サーバーを作ろう
www.slideshare.net
phpいじれる人がサーバーいじれる problem ヘッダが読まれない!!
17.PHP7でnativeExtentionを作る
www.slideshare.net
@misumi_rize extensionが75%変わっててつらかったよ
18.たのしい独自フレームワーク
www.slideshare.net
pixiv フレームワーク使っていないよ →フレームワーク作る フレームワークのコアは小さく good 自分で作っているので対応が即できる
intern の提出課題でだしてるよ
19.phalconとメールとテンプレートと
www.slideshare.net
phalconにはmail送信機能がない Qdmail*Voltで作成 改行が出来ない →で出来る{{constant(PHP_EOL)}} Voltが変と思ったらPHPを確認しようj
他.PHPという概念が存在しない退屈な世界
補欠枠で発表出来なかったのですが 参考に資料だけ。
www.slideshare.net
iOS 9 週連続 Bootcamp!6週目 UIKitとXCode7 イベントレポート
iOS9 Xcode7のイベントレポートです。
導入
iOS 9 週連続 Bootcamp!6週目 UIKitとXCode7 @dots http://eventdots.jp/event/573156
1.UIKit 平屋さん クラスメソッド株式会社
UIStackView、NSLayoutAnchor、UILayoutGuide のサンプルコード https://github.com/hirayaCM/iOS9UIKitDemos/
UIStackView
概要
viewを縦横にレイアウトするクラス
good
- AutoLayoutの制約を設定する作業が減る
- メンテナンスしやすくなる →それぞれの要素に制約を
今まで:それぞれのviewにautoLayoutを使用していた
caution
- iOS9以降で使用可能
- UIStackViewを仕組み自体を知る事が必要
仕組み(内部)
- arrengeSubviews →管理するviewの配列
- axis →整列する方向(水平/垂直)
- distribution →軸方向にviewをどう並べるか
- alliment →軸に対し垂直方向にviewをどう並べるか
- spcing
→view間の感覚の設定
仕組み(外部)
UIStackViewの位置を指定する
NSLayoutAnchor
概要
NSLayoutConstraintを生成する為のクラス iOS9以降から 生成用メソッド6個のみ →他のviewのanchorと使用
good
制約を設定するコードが短くなる 読みやすい
参考
Reference
UILayoutGuide
概要
ホワイトスペースを定義する為のクラス (ホワイトスペース→コンテンツのない領域)
good
ホワイトスペースを軽く実装出来る 今まで:blankのviewを使用
プロパティ
Anchorを持っている →NSLayoutAnchorを使用できる UIViewではない →UIViewより軽量
caution
iOS9以降にて使用可能 SBでの追加は出来ない→見つかんない→コードで作成
memo
UILayoutGuideないときは等間隔にボタンを配置するとき結構面倒だったような。 ローカライズ対応で動的にボタンのサイズが変わる場合とか
2.XCode7
熊谷さん EZ-NET
Swift2
エラーハンドリング/foreach etc追加
呼出改装検索
機能がどこで使われているか検索出来る
インターフェイス定義の確認
@swift OBJ-c .hで使うとswiftで表示される 左上の四角→generete~で実行される interfaceのみ綺麗に表示される
無料のオンデバイス開発
developerにならなくても実機確認できるよ
ストリーボード参照
複数ののストリーボードを一枚で使用出来る http://dev.classmethod.jp/smartphone/iphone/storyboardreference/
オンデマンドリソース
AppStoreに画像等のデータを保持出来る
→ダウンロード時にソースのみ→随時画像等をAppStoreからDL が出来る
Resouce Tagsで設定
BuildSettingでデバッグ時のリソースサーバーを設定可能
UIテスト
画面操作を自動でテスト コードでアプリを操作 操作からコードを生成出来る
例:テキストフィールドに文字が入った時にボタンを押せるようになる
テストの登録
テストターゲットを登録 →UITestingbundle testで始まるメソッドを記載
テストコード書く
app/window/menubar/buttonのインスタンスをつくる button.click() AsserFalse(button.enabled)
操作からコードを生成出来る
左下のrecボタンで実際に動かした動作がコードに記載される
tips
ピンポイントに操作をコード化したい rec→一時停止→操作を進める→再実行→操作
結果
~で結果確認 lognavigatarで詳細確認→画面のスクショも見れる
caution
テスト中は実際に動作します! なので他動作は出来ない 時間がかかる →5.6個で10分くらい!?
コードカバレッジ
どのコードをどれだけ実行されたかを収集 使われた割合 メソッド/プロパティ毎に
good
テストの甘さが見れる
方法
Edit schem→test→gather coverge data でtestすればok
確認
lognaviで確認できる
エディタで直前にテストした時の呼出回数確認出来る editar→showcodecovergeで見れる
caution
テストの度に行われる
ドキュメントコメント
概要
コードの型/機能にコメント追加出来る
MarkDownっぽい!!
装飾/画像/リンクが追加可能
Swift専用
プレイグランド強化 →readme的な事が作りやすくなる
書き方
コメント行内にmarkup
リッチコメント
ファイルインスペクタで変更可能
kobitoっぽくしてくれる //: /: /
参考
http://ericasadun.com/2015/10/15/announcing-swift-documentation-markup/
公式レポート
swift ターミナルを使用した cocoapod インストール方法
すぐターミナルの使い方を忘れるのでめも
1、ファイルの場所まで移動
ls : 現在の場所を表示
cd : 移動
2、pod file作成
touch : ファイルの作成
3、pod を記載
vim : ファイルの編集
:wq : 終了
4、install
pod install : podをインストール
cd {プロジェクトのファイル} touch Podfile vim Podfile pod '{使用するpod名}' , '{podのバージョン}' :wq pod install
swift NSUserDefault で NSMutableArray が使えなくなった!
NSUserDefaultでのつまずきです。
NSUserDefaultにMutable(変更可)なインスタンスを保存し
取り出すとImmutable(変更不可)になり
下のようなエラーがでる
[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
対策としては、
取り出したインスタンスをmutableCopy()を行い
ImmutableからMutableなものに変換する
//保存される配列 var Array:NSMutableArray = [0] var ArrayImmutable:NSMutableArray = [0] var ArrayMutable:NSMutableArray = [0] //Arrayを保存 let defalts = NSUserDefaults.standardUserDefaults() defalts.setObject(Array, forKey: "testArray") //通常通りArrayを読み込む ArrayImmutable = defalts.objectForKey("testArray") as NSMutableArray! //変更不可の為 error ArrayImmutable.addObject(1) //mutableCopy()を使用し読み込む ArrayMutable = defalts.objectForKey("testArray")?.mutableCopy() as NSMutableArray //変更可 ArrayMutable.addObject(1)
参考
きみが思い出になる前に - NSUserDefaultsに保存したmutableなオブジェクトはmutableCopyを使って作り直す