[iOS] アプリ開発日記 2

2016/06/20

こんにちは。きんくまです。

以前にもちょろっと書いたのですが、新しいアプリをコツコツ作ってます。
>> [iOS] アプリ開発日記

あれからもうすぐ2ヶ月。そろそろ完成しそうです。途中くじけそうになった、、。
メインの機能はほぼ作り終わったので、設定画面や広告、課金まわりを作成できれば完成です。
日課アプリの前に軽めのアプリを作ろう!とかいいながら、結構機能を盛り込んでしまった、、。
来月リリースできたらいいな。

ジッピー電卓は、最初機能の4割ぐらいでリリースして、その後継続的にアップデートしてました。
まあ、そのやり方もありだと思うのだけど、もうちょっと作りこんでからリリースすれば良かったかなといまは反省しています。
やっぱり、なるべくだったら最初からこういうものだ!と見せられた方がいいと思うし、興味をもってくれる場合は、アップデートよりも、新規リリースの方なんじゃないかと。
他にあまり例がないようなアプリだったら、すぐリリースした方がいいと思うのですが、似たようなアプリがたくさんある場合は難しいですね、、。

今回はアプリの紹介ページも作ろうかと思ってます。
Habit Keeperのときは作りました。
>> 日課/習慣/ルーチンワークをサクサク記録!- HabitKeeper

どこからアクセスされているのかわからないのだけど、いまアクセスログを見るとひと月で170ぐらいページビューがありました。サポートしてないなんていいながらもこのぐらいのアクセスがある。たった170ととるのか、いまだに170ととるのか。自分としてはこういうところを大事にしていった方が良いと思ってます。
Habit Keeperをちょっと前に無料版のみストアに戻したんだけど、こっちの方がジッピー電卓よりダウンロードされているという、、。うーん、なんともいえないです。

ジッピーさんは、アプリ紹介ページを作っていないし、他に電卓アプリはたくさんあるので、そういうところで差が出るのかどうか、、。
使ってくれたユーザーの方のレビューはおおむね好評なので、もう少しダウンロードされて、もっと多くの人に使ってもらえたらうれしいなと。
そうはいいつつも、おかげ様でもうすぐ1万ダウンロードに行きそうです。いま9300なので、このペースでいけば来月くらい?
どうもありがとうございます!

おまけ

昨日、本屋にいったらたまたまこんな本を見つけて買っちゃいました。

著者は、くまモンとかの水野 学氏。ずっと前にたまたま見てた情熱大陸に出てたところを見たことがあります。

内容は、「売る」より「売れる」ものをどうやって育てていくかということ。なんていうか、今の自分がすごく知りたい内容でした。今はいいものを作れば、勝手に売れるわけじゃないです。機能だって、そこまで差があるわけじゃない。じゃあどうするのか?と。

すごく地に足のついた内容で、派手さとか奇をてらわないやり方でどうやっていくのかというところに、とても共感しました。
「ブランドとは河原で石を積み上げていくようにしてつくられるもの」

自分も「きんくまデザイン」というブランドを育てていけたらなーと思いました。


[AS3] Google Chromeで Flash Player の デバッグ版を使いたい

2016/05/23

こんにちは。きんくまです。

世間じゃFlash終わったってことになっているのですが、まだお仕事はありまして。
それで ブラウザでFlash Player のデバッグ版を使うメモです。

ブラウザは mac 版の Google Chromeです。

以前はこのページを開いて、2種類あるうちの1つをDisableにすることでデバッグ版が起動してました。

chrome://plugins/

で、いつのまにかそれが変わっていました。
今回は下の公式ページのまんまなので、そっちを見た方がよいかもしれません。

>> Enable Flash Player Content Debugger in Google Chrome

この投稿の続きを読む »


[Windows 10] タッチスクリーンの右端、左端からのエッジスワイプを無効にしてアクションセンターとタスクビューを表示しないようにしたい

2016/05/18

こんにちは。きんくまです。

とある案件で、Windows10のタブレット端末(Surface 4)を使うことになり、その設定を調査することになりました。
その端末は、納品後は場所を固定して置かれて、1つのアプリだけを起動したまま不特定多数に使われます。
アプリはフルスクリーンになっていて、ユーザーにはアプリを終了したり、デスクトップを表示できないようにしたいです。

アプリを立ち上げる前のデスクトップ表示について。施設の人が簡単にアプリを立ち上げられるように、ログイン画面や、ロック画面については、設定をしたり、レジストリをいじることでそれらを表示しないで直接デスクトップが表示できるようにすることができました。

最後に問題になったのが、タッチスクリーンの右端、左端から中央に向けてのエッジスワイプです。
これをするとそれぞれ、アクションセンターとタスクビューというのが表示されます。
アプリ自体はフルスクリーンで作ってあるのですが、その状態でも左右のエッジスワイプは有効なため、アプリを終了させることが可能になってしまいます。
これは非常にやっかいです。

それで最近のWindowsにはキオスクモードというのがあり、それが適してそうなのですが、Windowsのエディションによっては使えません。
>> 第8回 単一アプリの実行だけを許可するキオスクモード

また調査中マイクロソフトのコミュニティでも質問があったのを見つけたのですが、「無理っぽいから要望だしてちょ」という感じの結論になっていました。
>> Windows10 マルチタッチ画面 右スワイプでのアクションセンターの表示制御について

それで、今回はこのエッジスワイプをなんとか無効にしようというメモです。

※注意! ここから先の設定を変えるのは、必ず自己責任でお願いします!!!

この投稿の続きを読む »


[iPhone iPad] ジッピー電卓がURLスキームに対応しました

2016/05/11

こんにちは。きんくまです。

ユーザーの方よりご要望があり、ジッピー電卓の有料版がアップデートしましてURLスキームに対応しました。

zippy_calc_pro_icon120

>> ジッピー電卓 かんたん!消費税と割引計算

URLスキームは以下となります。

zippycalc://

今回は審査がすごく早かったです。2日ぐらい?かな。いつもは1週間ぐらいだったから驚きました。

ところでURLスキームって何?

URLスキームというのは、あるアプリから別のアプリを立ち上げたり、立ち上げる時に文字列やファイルの場所を引数として教えることができる機能です。

例えば、別のアプリへのショートカットをたくさんつくれるランチャーアプリなどで利用することができます。
あとは、たぶんDropboxとかMailへ何かを渡すときもこれで情報やりとりしてるんじゃないかな。たぶん。

ずっと前に買ってあったこのランチャーアプリからも立ち上げられました。

>> Launch Center Pro – Shortcut launcher and Today widget

おまけ。アプリの表記変更とか

今回はURLスキームに対応するというアップデートでした。それで、それ自体は実はInfo.plistに何行か足すだけで実装できます。(アプリを立ち上げるというだけなら。引数つけて何かを渡すとなると別)

ですが、例のswift3用に移行するという方が時間がかかってしまいました、、。うは!

そうだ、前回のアップデートからの報告で、「zippy電卓」から「ジッピー電卓」に名前を変更したり、仕事効率化からファイナンスにカテゴリを戻したりしてました。

名前変更は、zippyという日本人にはなじみなさそうな英単語よりもジッピーというカタカナの方が親しみやすいかなと思ってやりました。
これにはきっかけがありまして、コクヨとかキングジムとかのサイトを見ていたんです。自分の作っているのはツール系アプリなので、文具もそれに近いかなと思っております。道具として使うという意味で。

>> コクヨ
>> キングジム

それで、あることに気がつきました。カタカナの商品名が多い。というかほとんどそれ。IT業界の人って英語表記のままのことが多いと思います。GoogleとかAppleとかFacebookとか。でも、日本ではカタカナでグーグル、アップル、フェイスブックって表記されることもあります。
個人的に少し英語を勉強したこともあって(できるとはいっていないw)、カタカナ英語ってどうなの?って思ったりしてました。
けれどもここは日本で、大多数の日本人はカタカナ英語でも問題がなく、むしろカタカナ英語の方が親しみやすいのではないかと思っています。Coca Colaよりコカコーラです!

この投稿の続きを読む »


[iOS swift] swift3 の for ループでインデックスをループ内でインクリメントしたいとき

2016/05/9

こんにちは。きんくまです。

Xcodeの7.3からswift3に向けての警告が出るようになりました。
だいたいこちらに書かれている通りに変更するとうまくいきました。

>> 既存アプリの Xcode 7.3 + Swift 2.2 対応

それで、こういう感じにループのインデックスをループの中でインクリメントしたいことがありまして。

for var i:Int = 0; i < 10; i++ {
    print("c style: \(i)")
    if i % 2 == 0 {
        i++ //こういうやつ
    }
}

出力はこうなります。

c style: 0
c style: 2
c style: 4
c style: 6
c style: 8

ただ、これだとCスタイルのforループだからダメだよと警告が出ます。(えー!)
これをswfit3に沿って書き直すとこうなるかなとやってみたのですが、、。

for var i:Int in 0 ..< 10 {
    print("for in: \(i)")
    if i % 2 == 0 {
        i += 1
    }
}

出力はこうなります。

for in: 0
for in: 1
for in: 2
for in: 3
for in: 4
for in: 5
for in: 6
for in: 7
for in: 8
for in: 9

for in スタイルだとあくまでも 0 ..< 10 の配列というか範囲Rangeに対してのループになるみたいで、ループの中でインデックスを変更しても関係ないみたいです。 なので、仕方がないのでこうやって書きました。なんだかCスタイルの方がスマートな気がしますが、きっとswift3では中でインデックスを変更するというのは想定していないのだと思います。むー

var i:Int = -1
let len:Int = 10
for j in 0 ..< len {
    if i < j {
        i = j
    }else{
        continue
    }
    if i >= len {
        break
    }
    print("for in ver2:  \(i)")
    if i % 2 == 0 {
        i += 1
    }
}

出力はこうなります。

for in ver2:  0
for in ver2:  2
for in ver2:  4
for in ver2:  6
for in ver2:  8

というメモでした。


[iOS] アプリ開発日記

2016/05/1

こんにちは。きんくまです。

以前に次のアプリ作りますとかって、ブログにちらっと書きました
>> [iOS] Zippy電卓アップデート予告とか中間報告とか次回作とか

それから2ヶ月。何もしていなかったかと思いきや、珍しく少しずつ進めております。

・アプリ名を決めた
・アプリアイコン作った(けど、もう一回作り直すかも)
・機能の仕様を固めた
・画面のワイヤー、遷移方法などを固めた
・UI上作れるか部分的なモックを作ってテスト
・アプリ内課金やったことなかったのでテスト
・データベース(SQLite)まわりのモデルのプログラム作成
・DBまわりのユニットテストも同時に通した

「軽めのアプリにしてサクッと出そう!」としてたんですが、「せっかくやるならこの機能入れたいなー」とかやってたら思ったより時間がかかっちゃいましたw

モデルまわり

一番肝心かなめのモデルまわりのプログラムがしっかり作れたので、あとはなんとかなるかなと。(なるといいな)
ずっと前に読んだアルゴリズムとデータ構造の本に書いてあったんだけど、

・アルゴリズムをいくら改良しても、悪いデータ構造だとうまくいかない
・逆に良いデータ構造ならば、多少アルゴリズムが悪くても問題ない

みたいなことが書いてあって、それ以来何かプログラムを書くときは、コアになるデータ構造だけはしっかり作るように心がけています。
画面の見た目や操作方法はあとから変えやすいけど、データ部分は後からだとどうしても変更が難しいですしね。

それでこれから、ユーザーが直接さわる画面操作部分(UI)のプログラムを書いていくところです。

プログラムの進め方

他の人がどうやってアプリを作っているのかわからないのだけれど、自分の場合はこんな感じに進めてます。

1. とにかく動作するアプリを常においておく(各画面は空でもOK)
2. 各機能ごとに別プロジェクトを作る。(gitでbranch切るとかじゃなくて完全に別プロジェクト)
  実験したり、実際に機能を作り込む
3. 別プロジェクトでうまくいったら、それを本体に移植
4. 2と3を繰り返して本体に機能が追加されていく

1回やったことのあるUIだったり機能の場合は、2と3はとばして直接本体のコードに書いていきます。

この進め方のメリットとしては、
・本体はきれいなソースを保ちやすい(実験したりしたときの後が残らない)
・別の案件で、ある機能が必要になったときに機能別プロジェクトとして保存してあるので移植しやすい

私の場合、記憶力が悪いのですぐ忘れてしまうんですよね、、。で、このやり方ってどうやるんだっけ?といって単体機能のプロジェクトを見てやり方を思い出す感じです。

というわけで、新しいアプリがもう少し進んだらどんなアプリかお知らせできそうです。
よろしくお願いします m(_ _)m


[Terminal] Macでターミナルから複数サイズのアイコン画像を一括変換して作成するシェルスクリプト

2016/04/26

こんにちは。きんくまです。

iOSアプリだとアイコン画像を作るのにIconKitを使っています。
ただ、いまAIRアプリ用にアイコンを作成したくなりました。IconKitはAIR用でないので、なんとかしないといけません。

以前にどこかのブログでmacだとコマンドから画像処理をできると書いてあったことを思い出しました。
調べてみると、こんな感じにsipsコマンドで変更できるようです。
便利ですね。

>> Batch Resize Images Quickly in the OS X Terminal
>> 画像ファイルを操作する(sips)

シェルスクリプト

一括変換するシェルスクリプトを作成しました。

#!/bin/sh

# settings ============

ICON_FILE="sample_icon"
ICON_FORMAT="png"
OUTPUT_ICON_DIR="icons"
OUTPUT_ICON_NAME="icon"
ICON_SIZES=(16 32 48 128)

# ====================

if [ -d "./${OUTPUT_ICON_DIR}" ]
    then
        echo ""
    else
        mkdir "./${OUTPUT_ICON_DIR}"
fi

for size in ${ICON_SIZES[@]}
do
    sips -Z ${size} "${ICON_FILE}.${ICON_FORMAT}" --out "./${OUTPUT_ICON_DIR}/${OUTPUT_ICON_NAME}${size}.${ICON_FORMAT}"
done

設定の説明

元のアイコンファイル名(拡張子前)
ICON_FILE=”sample_icon”

元のアイコン拡張子
ICON_FORMAT=”png”

出力先ディレクトリ名(なければ1つ下の階層に新規作成)
OUTPUT_ICON_DIR=”icons”

出力ファイル名
OUTPUT_ICON_NAME=”icon”

出力サイズ(スペースでサイズを区切る。例の場合は 16px, 32px, 48px, 128px を作成)
ICON_SIZES=(16 32 48 128)

この投稿の続きを読む »


ページトップへ戻る