iOSDC2018の感想

感想

  • トーク数が多く、色んなトークを楽しめた
  • 環境 (席やWi-Fiなど) が良かった
  • 久々の再開が楽しかった
  • 新しい出会いが楽しかった

・ものを色々もらった

無線充電器もらった

会場にいるdeploygateさんのメンバーに声をかけてツイートすると無線充電器がもらえる企画があり、少しフライング気味だったが、オープニングパーティでメンバーを見つけて、無線充電器をもらった

ボトルもらった

cookpadさんのブースで、このカンファレンスのために作ったゲームが体験できて、高得点がでると景品がもらえる企画をやっていた。319点でボトルをもらった

トーク以外の企画もおもしろかった

気になったトークのAsk The Speakerに遊びに行ったり、Storyboard/AutoLayout相談会を覗きに行ったり、hakさんが来るとのことでアンカンファレンスに行ったりと。トーク以外の企画も充実していて楽しめた

Ask The Speaker

IRT

アンカンファレンス

・食べたり飲んだり満足した

ソフトドリンクやコーヒーは常に提供され、朝の軽食やランチも提供される。夕方になるとビールの提供が開始。移動に時間が取られず、色んな人と話す機会がつくれた

軽食 ドーナツは間に合わなかった

ランチ ずっしり重い。美味しかった

コーヒー 無限コーヒー

ビール カンファレンス後半、LT会に移行するころにビールが配布される

LINEスタンプ素材からSticker Packを作った

概要

  • LINEスタンプを作ったので、そのイラストを使ってSticker Packをリリースする

リンク

環境

制作の流れ

  • この動画をみるとだいたいの流れがつかめる (4:45)

ステッカー素材の修正

  • LINEスタンプを、300 x 300 pxに修正
  • 背景は透過のまま

素材の作成

管理画面から登録

Xcode

  • File > New > Project...から、Sticker Pack Applicationを選択
  • Stickers.xcstickersiMessage App Iconにアイコンを登録
  • Stickers.xcstickersSticker Pack
    • ステッカーを登録
    • Sticker Sizeで一覧表示されるサイズを決める
    • Accessibilityに代替テキストを設定 ※今回は設定していない
  • TARGETSDisplay Nameにアプリ名をいれるStickerPacEXtension側が反映される
  • ビルドしてアップロード

iTunes Connect

  • 申請

LINEスタンプをSticker Packにする場合、必要になること

  • Developer登録 (維持費もかかる)
  • スタンプ画像修正
  • イコン画像作成
  • スクリーンショット画像作成
  • 検索用キーワードの登録
  • サポートURLの登録
  • (メイン画像、タブ画像は使わない)

その他

ステッカーについて

  • フォーマット: PNG, APNG, JPEG, or GIF
  • ファイルサイズ: 500 KB以下
  • サイズ: 300〜618 px (推奨)

アイコンサイズ一覧 (名前は適当、単位: px)

スクリーンショットサイズ一覧 (単位: px)

  • iPhone用: 1242 × 2208 (1〜5枚) ※必須サイズのみ掲載
  • iPad用: 2048 × 2732 (1〜5枚) ※必須サイズのみ掲載

Sticker Sizeについて

  • ステッカーが一覧表示される時のサイズを決める
  • Sticker Sizeは3種類ある。iPhone7の場合、
    • Smallだと、横に4つ並ぶ (300 x 300 px)
    • Mediumだと、横に3つ並ぶ (408 x 408 px)
    • Largeだと、横に2つ並ぶ (618 x 618 px)
  • ここの値を変えてもステッカーのサイズが変わるわけではない

ステッカーの大きさ

  • ユーザーは大きさを変えたり、回転させたりできる
  • スタンプのように使うのと貼り付けて使うのは基本同サイズ

解決できていないこと/不明点

Simulatorがエラーになる

  • SimulatorでiPad RetinaiPhone5を選んだ場合、以下のエラーが出て確認ができなかった
  • iPad Retina: Could not attach to pid : “10699”
  • iPhone5: Could not attach to pid : “10849”

透過のビット数について

  • PNGのSupports transparencyが8-bit transparencyとなっている部分が理解できていない
  • PNG-8でもPNG-24でも透過は問題なさそう (書き出しに使ったソフト: Illustrator CC)
  • PNG-24がNGってこととは違うのか?

ステッカーの最低数、最高数

  • LINEスタンプは40個のみだが、Sticker Packは数の決まりがわからなかった

ローカライズ

  • 多言語対応は未調査

参考サイト

雑感

  • Xcodeをさわったことがないと少し戸惑うかもしれない
  • LINEスタンプの素材があれば比較的かんたんにリリース出来る

Apple Pencilを使ってLINEスタンプを作った

リリースまでの流れについて

  • こちらの記事が申請までの一連の作業内容が紹介されていてわかりやすかった
  • そのほかこちらも参考にさせていただいた

まずはLINE CREATORS MARKETに登録

  • ここから登録を完了させる

スタンプ作成

使ったもの

作成の流れ

Drawにてイラストを描く

  • CCはほとんど使ったことがなく、Drawで着色まで完了させて、CC側では書き出しのみを行う予定で進めた
  • スタンプ画像はだいたい以下のようなルールがある
    • W 370 × H 320 (最大)
    • 画像の余白(10px程度)が必要
    • サイズは偶数
    • 1MB以下
    • 背景は透過
    • 詳細は、制作ガイドラインを確認してください
  • Drawはグリッド表示が可能なので、160 ptsに設定し、4マスを超えないような大きさでイラストを書いていった (下の画像は少し小さ目) f:id:ichigoro:20160917123221j:plain
  • レイヤーは『キャラクター』と『セリフ』に分けて書いた
  • 最終的にセリフはCCにて作成したので、セリフ部分をレイヤー分けしたことは便利だったが、書いている途中にレイヤー違いで書き直したりしたので、これくらいだったらわざわざレイヤー分けしなくても良かったかもしれない
  • Drawは『取り消し』『やり直し』や『範囲内の塗りつぶし』などタッチジェスチャーが充実しているで、おおむね気持ちよくイラストを書いていけた
  • 特にDrawからボタン1つでCC上にファイルが送信できるのは便利だった
  • 使いづらかった点は以下の通り
  • 手のひらに誤反応して、点や線を書いてしまったり、アプリが切り替えられたりした
  • オブジェクト単位でのコピーができない? プロジェクト単位、キャンパス単位、レイヤー単位ではコピー可能
  • オブジェクト単位で移動が出来ない?キャンパス上もレイヤーの移動も出来なそうだった

CCで書き出し処理を行う

  • 当初の予定を変えて、セリフはCCで作成することにした
  • 文字はこちらの手書き風フォントを利用させていただいた。子供が書いたような丸みを帯びたフォントがかわいい
  • キャラクターに沿ってセリフを入れたかったので、以下のように進めたがもっといいやり方がありそうだった
  • ペンツールでキャラクターの近くにパスを書く
  • パス上文字 (縦) ツールで文字を追加する
  • ファイルの書き出しはこちらのテンプレートを利用させていただいた
  • Drawから受信したファイルからコピペでイラストをテンプレートにペーストしていく
  • メイン画像とタブ画像は画像サイズが固定なので特にやることはなかったが、スタンプ画像はスタンプ毎にアートボードのサイズ (=画像サイズ)がかわるので修正方法が大変だった
  • スタンプをひとつ選択してから、メニューバーのオブジェクト > アートボード > 選択オブジェクトにあわせるとすると、透過の余白部分をトリミングしてくれる
  • ここから上下左右に10 Pxが必要になるので、メニューバーのウィンドウ > アートボードからアートボードウィンドウを表示させて、幅高さをプラス20していった (このとき、サイズが奇数になるようだったら偶数に調整)
  • 最後に書き出し作業。メニューバーのファイル > 書き出し > 書き出し形式...から書き出すと、『アートボードごとに作成』のチェック項目があり、全画像を一度に書き出せるのだが、なぜかアートボードサイズが微妙にずれて奇数値になってしまった
  • ので、各アートボードを個別に選択してから、メニューバーのファイル > 書き出し > Web用に保存 (従来)...からひとつひとつ書き出した
  • ここらへんの作業はもう少し効率良く出来そうな気がする

LINE CREATORS MARKETにてスタンプを登録

  • 各画像をアップロードし、諸情報を入力して申請した
  • LINE CREATORS MARKETではストアのプレビュー以外に、シュミレータもあるので画像のそこから画像の確認ができる

その他、CCで困ったこと

  • 文字を傾けたからかアウトラインを作成すると文字が若干汚くなった
  • パス上文字 (縦) ツールで、パスに文字をのせてから文字/パスを修正する方法がわからなかった
    • 文字の始点を移動する
    • パスを変形させる
    • パスを短くさせる

NCMBのプッシュ通知 (開封率、インクリメント) について (iOS)

開封率

開封状態にするには

  • ドキュメント: 開封率
  • リファレンス: NCMBAnalytics Class Reference
  • ドキュメントやリファレンスをみるとNCMBAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)またはNCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)が呼び出されると開封扱いになるようだ
  • launchOptionsnilだった場合には開封扱いにはならない
  • それぞれapplication(_:didFinishLaunchingWithOptions:)application(_didReceiveNotification:)内にて呼び出すこととなっている
  • 以前の記事では以下のように実装していたが、
func application(application: UIApplication, didReceiveRemoteNotification userInfo:[NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void){
        
    // 以下の行を追加
    if application.applicationState == .Active {
        NCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
    }
}
  • Background Modes > Remote notificationsの利用がなければ、メソッドはapplication(_didReceiveNotification:)が呼ばれる
  • さらに上記ではapplication.applicationState == .Activeとの条件をいれていたので、.Inactive.Backgroundが呼ばれた時に開封が取得出来ていなかった
  • こちらの記事を参考にすると、application(_didReceiveNotification:)は、必ず呼ばれるとなっているが、アプリが未起動の場合は呼ばれないような気がした (application(_didReceiveNotification:)NCMBAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)を呼び出すだけでは、アプリ未起動時の開封が取得できなかった)
  • [ObjC] AppDelegate 通知分岐処理テンプレート

  • Background Modes > Remote notificationsがオンの場合は、application(_didReceiveNotification:fetchCompletionHandler:)が呼び出されるようだ

  • この場合は、アプリ未起動時にも呼ばれているようだった (application(_:didFinishLaunchingWithOptions:)内のNCMBAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)も呼びだされて開封率200%になった)
  • Background Modes > Remote notificationsは、Silent Remote Push Notificationなどに使える
  • NCMBから使う場合はcontent-availableを有効にしてプッシュを送る
  • mBaaSからSilent Remote Push Notificationを送ってみよう

インクリメント

バッジをインクリメントする

  • バッジ件数 > インクリメントするにするとデータストア上のbadgeに+1された数値がバッジに表示される(通知を受信するとbadge数があがる)

インクリメントがリセットされるとき

  • バッジ件数 > インクリメントするにした通知を開封すると、badgeが0になる

Sketch3で透過部分をトリミングしないでエクスポートする

内容

  • Sketch3で上下左右に余白(透過)がある画像を書き出す場合、透過部分がトリミングされてしまう
  • トリミングしないで画像を書き出したい

現状

  • 余白を含めた画像サイズは360 x 360 f:id:ichigoro:20160718125826p:plain
  • この画像を選択しMake Exportable > ナイフボタンを押すと、Trim Transparent Pixcelsといったオプションがあるのだが、このオプションがオフでもトリミングされてしまう
  • このまま書き出すと、画像サイズが316 x 316になってしまう f:id:ichigoro:20160718125846p:plain

    解決策 その1

  • 該当画像を選択
  • option + Aを押し、右上のAround Selectionをクリック f:id:ichigoro:20160718125908p:plain
  • Artboardが追加されるので (必要であればArtboard名を変更する)
  • Artboardを選択し、Make Exportableをクリック
  • 書き出す f:id:ichigoro:20160718125914p:plain

解決策 その2

  • option + RなどからRectangleを作成し、サイズを書き出しサイズにする
  • Rectangleの色を透過にする
  • 該当画像とRectangleの位置をあわせcommand + Gでグループ化する
  • Group配下のRectangleを選択し、Make Exportableをクリック (注意: Groupを選択ではない) f:id:ichigoro:20160718125919p:plain
  • 右下にあるナイフボタンを押す f:id:ichigoro:20160718125923p:plain
  • Rectangleと同サイズの書き出しエリアが作成される
  • 書き出す f:id:ichigoro:20160718125928p:plain

.gitignoreの作り方 (iOSアプリ開発)

giboを使って.gitignoreを作成する

やり方

準備

Homebrewのインストール

  • $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Homebrewがインストールされてない場合に実行

giboのインストール

  • $ brew install gibo
  • giboがインストールされていない場合に実行

作成

.gitgnoreの作成

  • $ gibo Swift >> .gitignore
  • Swift用のテンプレートで.gitignoreを作成

テンプレートのアップデート

  • $ gibo -u
  • テンプレートは自動でアップデートされないので手動で行う

参考

『プログラマ脳を鍛える数学パズル』を解く (Swift)

本の紹介

今日やった問題

Q01: 10進数で回文

使ったメソッド

  • 2進数や8進数に変換する
  • String(num, radix: 2)String(num, radix: 8)とするとnumが2進数や8進数に変換される
  • 文字列を逆順にする
  • String(String(num).characters.reverse())とするとnumが逆順になる