mattak's blog

人生を1ミリ進める

potatotips #19 いってきた

ただのメモ

Potatochips #19


@gfx

  • RxAndroidの先行きが不透明
  • RxJavaユーティリティを突っ込みたい

AndroidSchedulers

  • RxAndroidと同じ

Schedulers

  • ベストプラクティスあんまりわかんない
  • とりあえずthread2つでよさそう

AndroidCompositeSubscription

  • 同じinstanceをfinalで持ってる. 再利用可能

OperatorFilterLite

  • もうすこし軽く. objectを作り過ぎないようにしたい

RxAndroid/RxBindingの動向をみまもりたい


@yuseinishiyama

静的にもっと書きたい話

UIViewController

  • 例えばStoryboardとのヒモ付け、同じ情報を何箇所にも書かないといけない
  • 1Storyboard / 1ViewControllerがオススメ
  • global funcでstoryboard instantiateする関数

型名の抽出

  • 一般的な方法、nest classには使えない
  • mirror typeつかう
  • swift 2.0では selfのdescritionでおk

IndexPath

  • enum in enum で定義するとよさそう

UITableCell

  • class name == nib == class identifier

@futaboo

push通知周り

GCM

  • registoration idを保存
  • 送信

注意

  • 再起動するとregistration idが変わることがある

RECEIVE_BOOT_COMPLETED

  • GooglePlayの自動アップデートが効かなくなるのが問題

GCM診断

  • idを入力すると過去に届いたかどうか、その一覧がでる

問題

  • Dozeモード
  • 省電力

@kitasuke

  • fastlane meetupにいったよ
  • 日本語ガイドに紹介されてうれしい
  • Clipper = suika
  • Meetupいくといいよ

メソッドを外部から叩く技

  • c88 tech boosterに寄稿したよ
  • Method Http Exporter: つくったよ
  • 開発用のバックドア

仕組み

デバック

  • センサ系の操作に便利ですよ

Core Graphics

  • @shu22

watchOS2

  • 線、UIBezierPath、円、gradationのかける
  • 手書きできない

JS native間のmessage

htlm5 web messaging

  • 送信用ポート、受信用ポート
  • mWebView.postMessage()

  • html5標準なのでよさそう

  • いまはpreview 段階. M Preview

New Library for CoreData

  • Hiroshi Kimura

新しいデータストアライブラリつくってる

  • CoreStore

よいところ

  • swift
  • thread管理
  • mainthreadはread only / 書き込みはbackground
  • sqlite fileが複数使用可能. configでわけられる
  • sqlが結構シンプルに書ける
  • fetchの記述がシンプル
  • VCとの連携が簡単
  • migrationが充実

swift2.0対応中


はじめよう Data Binding

  • @sys1yagi

Android開発の課題

  • View周りが煩雑

View Binding

  • RoboGuice / ButterKnife
  • 助かるんだけど、全然足りない

Google IO Data Binding Library

  • com.android.databinding:dataBinder:1.0-rc0
  • minSdkVersion 2.1-

Layout XMLの記法を拡張してくれる

  • root要素にlayout書くだけ
  • compileの時にコードを吐いてくれる
  • view with idsでview holder
  • automatic setter
  • observable...

View With IDs

ViewHolderいらずに・・・

layout書くとViewHolderが出来上がる

実際に試すと超楽しい

  • ViewHolderの代わりにくらいからやると良さそう

夏コミ

Cookpadではすでにリリース済み


iOSの画面遷移と私

  • @tokorom

  • 紀元前: Storyboard登場まえ

  • 紀元後: Storyboard登場

self.presentViewControllerでやる

storyboard時代の遷移

  • prepareForSegue
  • 超嫌だ

watch kitの contextがよい

  • 疎結合 anyobject
  • 遷移後・遷移前で依存関係ができてない
  • interfaceで何でも渡せる

ライブラリつくった

  • SegueContext

NavigationController/TabController挟んでもへっちゃら


Breaking changes for Foundation API in iOS9

  • @kishikawa
  • Relm
  • meetup T-shirtくばるよ

NSMutableDictionary

- (void)setObject:(nullable ObjetType)obj forKeyedSubscript:(KeyType <NSCopying>)key

破壊的な変更なので要注意

  • nilを渡すと要素が削除される => xcode7
  • xcode6.x時代は NSInvalidArgumentException

GCM Topic Message

  • @mochicon
  • KAYAC inc
  • Lobi
  • C88 東A-39a

GCM Topic Messagin

  • グループユーザに送信
  • Topicに登録した100万件までに送信
  • ニュース配信とかに使える

GCMのGoogle APIsの利用方法が変わった

  • google-services.jsonというconfiguration fileを取るように変更された
  • project_number: sender_idに相当
  • 複数のアプリで使いまわせる

新しい方式

  • app/直下にconfigファイルをおいておくと、勝手にpluginがidを生成してくれる

UTI

  • hatena

extension / mime / uti

UTI

  • Uniform Type Identifier

mime type -> extensionを作れる

  • ライブラリある
  • UTI(mimetype: "image/jpeg").extension

DeepLinkDispatch

  • wasabeef
  • CA
  • ameba tv

DeepLinkDispatch

  • airbnb
  • deeplink schema 起動が楽
  • simple
  • anotation base

Activity

@DeepLinks({"wasabeef://deeplink/{id}"}) public class MainActivity extends Activity {}

  • Bundleにidが入ってる

Method Annotationも使える

  • static, returnでintent

ApplicationにDeepLinkCallbackをimplementするとエラーがくる

Test

  • adb shell am start -W -a android.intent.action.View -d "wasabeef://"

iPad Multi Tasking

  • @mpon
  • 参加レポートを1日づつかいた

Picture in Picture

  • 動画を再生しつつ操作できる
  • Youtubeとか

Slide Drawer

  • 引っ張ってくとSplitViewになる
  • Device Orientationを全部対応すればできる

iPadアプリ

  • safariが対応してる
  • ipadなのにiphoneサイズで閲覧されることがある

Flow, Mortar, Dagger2 Tips

  • @tai2

Fragmentのライフライクル問題

  • IllegalStateException

Flow

Mortar

  • getSystemServiceを拡張
  • Viewの永続化がBundleでできる

Dagger2

画面ごとにObjectGraphを作る

  • @WithComponent、画面に対応するobject graphを指定する

サンプル作った

  • github.com/tai2/flowmortardagger2demo

CookPadはRoboGuice使ってる


Teitenってアプリをつくった

  • @nakajijapan
  • pepabo
  • NKJxxx をたくさん作ってるよ

teiten

  • 自分を10秒毎に撮り続けるアプリ
  • osxあぷり

previewをdrag&drop -> LGTMできるようにしたい

  • NSTableView -> drag&dropに必要
  • NSDragOperation
  • NSPasteboardWriting

github / qiitaでclipboardにcopy&pasteできるのいいよね


APT

  • @izumin5210

Annotation Processing Tool

  • aptはjava7でdeprecated
  • もとはコマンド
  • Pluggable Annotaion Processing API

構成

javacのための入り口

  • autoservice

あがめよう

  • JavaPoetで生成するとよい
  • testはGoogleのCompile Testingをつかうとよい

小並感

  • cookpad 良いオフィスだ
  • dataBinderおもしろそう、導入しようか
  • DeepLinkDispatchもよさそう

kotlinことはじめ

kotlinでアプリを書き出すようになったので、勉強がてらメモ。

static method

kotlin.hatenablog.jp

基本staticは無いらしい。class objectで記述するみたい。

いつものアレをconvertしたらこうなった

public class SomeFragment : Fragment() {
    companion object {
        public fun getInstance(): Fragment {
            return Fragment()
        }
    }
}

val var

swiftのletにvalが相当する。変更不可能な値。 varは変更可能な値。

getBytes()

Stringに生えているgetBytes()はdeprecatedになっていた。 代わりにtoByteArray()をつかえとのこと

ByteArray

Basic types - Kotlin - Confluence

Arrayで配列を表現するみたい。 primitive型も対応する型が用意されているみたい。

Test

androidjvmテストを書く

src/test/kotlin/PKG/HogeTest.kt

package hoge

import kotlin.test.assertTrue
import org.junit.Test

public class HogeTest {
    Test fun hoge() {
        assertTrue(true)
    }
}

Annotationは@を外してつかうっぽい

butterknife

kotterknifeがあるっぽい

repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
    compile 'com.jakewharton:kotterknife:0.1.0-SNAPSHOT'
}
import butterknife.bindView

public class MapFragment : Fragment() {
    val mMapView: MapView by bindView(R.id.map)
}

Parameter specified as non-null is null

Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState

というエラーがちょくちょく発生する。コレはoverrideしたjavaの関数にて、optionalを気にせずoverrideしてると呼び出し元の関数からnullが渡ってきてエラーが起きる。 java関数をoverride するときには、optionalかどうかを厳密に考えよう・・・。

traitはdeprecated

かわりにinterfaceをつかう。

data class

data public class Hoge(val name: String, val createdAt: String) みたいな感じでデータ宣言できる。

Signleton

taro.hatenablog.jp

object Singleton {  
  fun hello() {
    println("Hello")
  }
}

object declarationで簡単にかけるっぽい。

Game Graphics Groove #3 いってきたメモ

connpass.com

『パズクエにおけるUXテストとその結果&対応』

  • 細川奈々恵

UX Testの実施について

  • 9回くらいリリースまでに実施している

3つ決める

  • テスト目的 : 理解できるか?面白いか? 操作しやすいか?
  • テストスコープ: 初回起動、プレイ時間
  • 被験者要件: 誰にやってもらうか?

社内UXテストで観察した例

  • バトル画面 / フィーバー画面にすんなり入れるか?
  • 非開発系の部署 3人 (1人課金層, 2人無課金層)
  • ダメポイントがたくさんあった

発生頻度高い&重要

  • 召喚方法、フィーバータイムの条件、..
  • 負けた理由がわからない

観察

  • 敗北して初めてルールを考えだす
  • 負けたときにやり方を教えるのが有効っぽい

チュートリアルの分割

  • 必要なときに必要な要素を表示する
  • 敵の弱点など考えなくても進めてられるように

まとめ

  • testerは少なくてもいい
  • test目的が大事

ちょっと早口でわかりずらかったかも...

『Spineメッシュアニメーション応用編』

  • 二宮大輔

Spine

  • Cocos2d / Unityに対応してる Boneアニメーションツール
  • Meshアニメーションもできる
  • 動作が意外に軽い

不満点

  • パースごとのループができない
  • マスクが未対応
  • Scriptが打てない

うねる柔らかさ

  • Meshいいかんじだ
  • 先端から末端に伝わるときに遅延させるとよい

3Dっぽいこと

  • 3dの各頂点に対応するMeshポイントを中につくる.
  • 鍵マークをつけると移動できる

丸くても揺れるよ

まとめ

  • 柔らかさの表現できるよ
  • 3Dの表現も出来るよ
  • Live2Dを越える表現も

『ハコスコとUIとご飯』

  • 鈴木 匠太
  • 矢羽田 和徳

VR市場は1500億ドル?

バーチャルボーイうれなかった

  • ハードウェア価格高い
  • 一人でしか遊べなかった
  • コンテンツでない

VRの問題..

  • エロで攻めすぎ

ハコスコのいいところ

  • 安い
  • ケーブル不要でどこでも
  • いろんなスマホサイズに対応
  • デザイン自由。ファッションにできる
  • 開発難易度が下がった VRはUnityで開発できる
  • ARも可能
  • 普及している

未来

  • 女子高生 「今日スコッとく?」

個人的にはCardboard派だ...

www.amazon.co.jp

操作

  • 首振る
  • 視点移動
  • 上下にふることで歩く操作
  • ponと叩いて写真を撮る
  • Vufolia SDKでARで撫でる、触る

新しい操作方法が必要

  • チャンスかも知れない

SPAJAM

  • 寂しい食卓: 幻想飯
  • ご飯を容易
  • ARカード (和、洋、中、...)
  • ちゃんと画面が曇る、かなり豪華感ある演出

GDC

  • みんなVR発表してた。EpicはLoad of the Ringとか?
  • 期待感ある

『乖離したことから始まった、本質への回帰』

  • 窪 洋一

パネルディスカッション

UIデザイナについて

  • アニメーションはあんまりつくってない.
  • 内製のエフェクトツール使うことが多い.

企画ってどうやって決めてる?

  • 企画コンペやってるよ. 出した人がオーナーになる (クロスサマナー)
  • プロデューサーが何つくろっかーって決める
  • IPものは天上人が多い

クリエイティブ周りの決定権、誰が持っている?

  • プロデューサー.
  • ...

作りたいもの作れてる?

テストから見えてくるGoogleのソフトウェア開発

読了したのでFBした。

久々のプレゼン資料、作成がつらい。。 3ヶ月くらいダラダラと発表を避けてきたけど、なんとか形にできてよかったー。

本の感想

本の内容は面白かった。 のだけれど図とか絵がもっとあってもいいのになーとところどころ思う。(活字疲労が・・ インタビューやらテストエンジニアの職種の内容が本の中ではメインコンテンツになっいるんだけど、 退屈だったのでFBの資料からはバッサリ省きました。 それでも話し足りない量の内容がつまっているので、気になったらぜひ買って読んでみるのが良いと思います。

最後に。 本のプレゼントしてくれた @masasuzu さん、ありがとうございます!

CAOS 2015 Summer メモ

CAOS 2015 Summer 〜開発効率のツール開発とオープンソース活動〜 のめも

Webponizeの紹介

Author

  • @1000ch

WebP

webpに変換してくれるくんをつくったよ

STF

Smartphone Test Farm

詳細

  • c/c++で非公開APIをつかってSocket通信している
  • framebufferを使っている。(いろいろ問題あり)
  • まともにやると0.5fpsしかでない
  • screenrecordのbackend apiは4.2から
  • minicapをAOSPから取ってきてビルド、全ターゲットで動くようにsharedlibrary作る
  • 2.3 - 4.1 : ComposerService::getComposerService()->captureScreen()
  • 4.2 - : SufaceComposerClient::createDisplay()
  • jpgでencodeしてclientに送信してる
  • 170 device / 3 device segmentation fault => メーカが非公開APIをカスタマイズしてるから
  • 40fpsくらいはでる
  • x264 をつかってhardware encodeすればもっとパフォーマンスでる

管理者モード

  • 上上下下右左右左EnterEnterで管理者になれる

duck

グルーピングしてリアルタイム通信したい & platform化したい

  • ゲームアプリからの需要
  • すごい早く通信したい (10msくらいのオーダーで)
  • Server: Linux/MacOSX/BSD
  • Client: go, node, unity ...

運用

  • 2ヶ月前から運用してる
  • 2game
  • c4.2xlarge x 3 instance on AWS
  • 今同時接続2000人くらい
  • 1.2 billion message / month
  • まだ数すくない

TBC

ImageHayabusa

psd をおいたまま配信できるサービス

  • http://hayabusa.io/
  • 作業時間: 1day -> 30minに
  • workflowが早くなる
  • デザインの確認すぐできる

input

output

  • webp, png, jpg, ...
  • /image.png?quality=80
  • /images/image.jpg?layer=Name
  • /assets/image.w480.x2.png

初期リクエストで変換 -> そのあとキャッシュされる

  • urlはデフォルトパラメータが設定されてる
  • 差分情報のみurlに反映する

食戟のソーマのレシピ再現がんばった 04-06

最近料理のレパートリーが広がらず悩んでいる。 やっぱり意識的に新しい料理にチャレンジしていかないと・・・! というわけで今季は食戟のソーマの料理を頑張った。

以上16品。1-3刊は制覇。あとは難しい料理をおいてまちまちという感じ。

振りかえり

16品なので毎週何かは作れていたかなという感じ。 かなり見た目が下手くそなのもあるが(ローストポーク、ベネディクト...)、ひと通りレシピ試せたのは楽しかった。

美味しさの順で言うと、

  1. シャリアピンステーキ
  2. さわらの山椒焼き春キャベツのピューレ添え
  3. 田所特製3種のおにぎり

シャリアピンステーキの梅醤ごはんはうまいので超おすすめ。 さわらの山椒焼きはどくどくの風味が出て美味しかった。 田所ちゃんのおにぎりは、豚肉のにんにくはちみつ味噌漬けがご飯のススム美味しさだった。

難しさの順で言うと

  1. シューファルシ (ねっとりソースにならなかった)
  2. エッグベネディクト (ポーチドエッグをつくるのにコツがいる)
  3. ローストポーク(肉をケチってはダメ)

シューファルシは茹で過ぎ中が硬くなって肉々しくなってしまうので、レギュムの魔術師感を出すには調理時間をきちんと守ったり、🍖詰め過ぎないようにしたり、キャベツを甘みの出る品種にしてみるとかちょっと工夫しないとダメかも。

エッグベネディクトは1人前でケチってオーランドソースを少なくしたり、湯煎しすぎたりすると失敗する。あと新鮮な玉子で水溶性卵白を少なめにしないとポーチドエッグがうまくできないかも。

ローストポークはベーコンをケチったり、焼き過ぎたりしちゃダメ。 思ったよりエリンギでカサが増すので分量注意が必要。

暗殺教室の122話の図形

体心立方構造が無限遠に広がっている空間の各点において、 体心立方構造の各頂点との距離が一番近い点に属するとした時、点の集合の体積を求めよ。

っていう問題が暗殺教室の122話にあったのだけれど、その中に出てくる立体図形の形がどうしてもイメージできず腑に落ちなかった。 ので実際に計算してみた。

f:id:mattaclj:20150602233914p:plain

なるほど納得。