もっとラクにできたのに

アプリケーションを開発する過程で、作った後になってから「もっとラクにできたのに」という点を書き記していく所 魅了屋という零細デベロッパーが書くよ https://www.miryoya.com


↑広告

続・ちょいとしたチャレンジをしてみたかったんだ

 リジェクトを喰らった

moreeasily.hatenablog.com

 

以前見事にリジェクトを喰らったこのアプリ。本来であればこれでお蔵入りのはずだった。しかし、広告の設定をしてくれた広告配信会社の中の人たちの労力の事を考えると、このままお蔵入りにするのは申し訳ないという気持ちが芽生えてきた。少しばかし考え、覚悟を決めた。

 

「やはりこのアプリをストアに配信しよう」

 

・変更点

と言ってもこのままでは審査を通過するわけがない。改良が必要だ。具体的には以下の点を改良した。

  •  積上ボタンを3種類用意。
  •  以前は百段積上げないとTweet出来なかったが、そうでなくても結果をTweetできるようにした
  •  積上げた石の総数をタイトル画面に表示させた

 

多少なりとも便利になったと思う。これでアプリを提出して審査を待とう。

 

・しかし次の日

f:id:waspossible:20170125161239p:plain

リジェクト、リジェクト、リジェクトである(写真は使い回し)。今回は役に立たないとか有用性が無いという理由では無い。リジェクト理由を読む(実際はGoogle翻訳に入れてから読む)と、機内モードで何かしら問題が発生したようだ。コワーキングスペースに出勤して更に原因を調査すると、機内モード時にアプリを起動し、一定の時間が経過するとアプリがクラッシュすると事が分かった。過去に作った物や、ネット検索を駆使して問題の原因を探るが、中々解決策が思い付かない。どうすればいいんだ。

 

・問題はひらめきで解決した。

 

「広告が悪さしてんじゃないの?」

 

具体的には、機内モード、つまりインターネットに接続されていない状態で広告のデーターを読み込もうとし、タイムアウトしてクラッシュするのではないかという仮説を組み立てた。ネット検索などを駆使し、インターネットに接続されていない状態では広告を読み込まないようにコードを書き換えた。すると、アプリはクラッシュしなくなった。ついでに、インターネットに接続されていない状態では、Tweetボタンを表示しないようにした。これも少し工夫をして実装した。結果は良好だった。

 

これで審査に出せる。早速審査提出を済ませた。結果を待つだけである。ちなみにだが、提出した後にまた不具合を見つけたが、ゲームには大きな影響が無いと判断して、次回のアップデート時に解決する事にしたのは別の話である。

 

2017/02/03追記

完結編、アップしました。こちらも良かったらどうぞ。

moreeasily.hatenablog.com

 

 

2017年01月30日(月)に調べた事

アプリ開発で躓いて、Google先生のお世話になった所をまとめていく。

 

・UserDefault

記憶の中では「NSUserDefault」だと思っていたが、Swift3で「UserDefault」に名前が変わっていた。Swift3になってから関数名の頭にある「NS」が無くなる物が多くなった印象である。

dev.classmethod.jp

ここが役に立った。ありがとう、ありがとう。

 

バイブレーションさせる

理想としては0.1秒だけバイブレーションさせたかったのだが、出来ないようだ。ちなみに、普通にバイブレーションをさせるには、AudioToolBoxをインポートした上で

 

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 

 

と打ち込めば震える。会いたくても会いたくなくても震える。Timerと一緒に組み合わせると、○秒後にバイブレーションさせるといった事も可能である。理想を言えばキャリアメールとPCメールでバイブレーションの仕方が違うように、アプリを作る側でもバイブレーションの仕方が違う設定が出来れば、アプリの幅が広がる気がするのだが、そう簡単にAPIは開放してくれないようだ。

 

・画面遷移時に値を引き渡す

画面Aから画面Bに遷移する時に、値も一緒に連れてきてくれる方法を探した。自分が考えているアプリでは良く使う(はず)テクニックである。

qiita.com

ここが役に立った。ちなみにStoryBoard上でも設定が必要なので忘れないようにしたい。とか書いてあるといざ使う時になって忘れるんだろうなぁ。

 

リンクを張っただけで終わったのは、ソースコードの貼り付けが上手くいかなかったである。何故か言う通りにやっても上手くいかないのだ。Swift対応してない?

help.hatenablog.com

ちょいとしたチャレンジをしてみたかったんだ

ふと思い付いて一日でアプリが出来るか試してみた

今作っているアプリの進捗が良くない。具体的には、仕様変更をしなければならず、面倒臭いと言うオーラが身体を包んでいて離れない状況である。何となく別の事をしたいと思っていた1月20日の午前であった。そこで、気分転換も兼ねて、一日以内でアプリを完成させ、審査手続きまでステータスを進める事が出来るかやってみた。

 

まず企画

「賽の河原」という言葉を思い出した。幼くして亡くなった子供がひたすらに石を積む。目標の数まで積み上がると救われるのだが、あと少しの所で鬼に壊され、最初からやり直すというのを永遠と繰り返す、無駄な事の例えに良く使われる言葉である。これをテーマにして、石を積んでも積んでもリセットされるゲームアプリにした。

 

グラフィック

余りグラフィックにかける時間と技量が無いのと、あえて不気味さを出すために、文字だけで構成する事とした。アイコンも文字だけである。クオリティの高いアプリが全盛のこの時代には逆に目立つかも知れないが、それは実際にストアに並んでみないと分からない。

 

ゲームシステム

play.google.com

100万のタマゴというクリックゲームがあるが、これを参考にしてクリックすると石を積まれていき、あと少しの所でリセットされるという仕様にした。積む石の数は100に設定し、100個石を積めるとゲームクリアという目標も設定した。

 

プログラミング言語

言語はSwiftを使用し、対象OSはiOSのみとした。使用IDEXcodeAndroidはやった事ないので今回はiOSに一点集中トライという作戦を採用する。

 

画面構成

画面はタイトル画面、ゲーム画面、info画面の三画面で構成する。クリア回数やハイスコアは今回のバージョンでは採用せず、審査通ったら今後のアップデートをで対応する事にした。最初はUILabelとUIButtonの二つで画面を構成しようとしたが、AutoLayoutの調整に時間が掛かるため、タイトル画面などの一部はImageViewを利用し、画像を採用した。しかし画像と言っても手順はテキストエディタで文字打ってキャプチャしてはい出来上がりという方法なので、文字だけと言う世界観は崩れていない(誰も求めてないと思うけど)。

 

コーティング

石は数で表し、見た目はカウンタアプリの様にしようと思った。しかし、英数字で表示では能が無いと思ったので、漢数字で石の数を表示するようにした。仕組みは簡単で、数字の位ををそれぞれ10で割った数(10の位)と余りの数(1の位)をSwitch文で仕分け、それぞれ当てはまる漢数字をLabelで再結合して漢数字を表示させた。鬼に石の山を崩される仕組みは、一定の石の数からランダム関数で数字を呼び、ある条件に合致したら石を崩しリセットする。

 

仕上げ

iOSには、AndroidOS対応機種ほどでは無いにしても、幾つかの画面サイズがあり、それぞれに対応する必要がある。iOSの場合はまず大きな括りとしてiPhoneiPadというのがあるのだが、今回はiPhoneのみに対応させ、iPhoneの中でも4、4.7、5.5インチの画面に対応させる設定とした。相変わらずAutoLayoutの調整に手間取る。ここに半分近く時間を費やしたと思われる。イライラしながらも泣き言は言っていられない。とにかくゴールへ進むのだ。他にもスプラッシュ画面が出なかったりもしたのだが、色々と設定をいじっていたら表示されるようになった。

 

審査提出へ

1月20日の17時過ぎに一旦審査を出そうとしたのだが、すぐに表示の不具合に気付き修正を余儀なくされた。この日は18時までしか開発が出来なかったので、この日の審査提出は諦めた。次の日の午前から作業を再開した。相変わらずAutoLayoutの調整に難航したが、14時前に審査提出が出来た。1月20日10時から作業を開始し、同日18時に作業打ち切り、次の日の10時半から14時前まで作業をしたのでトータル12時間位で審査提出へ持ち込めた。

 

完成品 

f:id:waspossible:20170125160638p:plainf:id:waspossible:20170125160705p:plain

f:id:waspossible:20170125160746p:plain

この作業量であれば、半分から三分の二位の時間で仕上げなければいけないのかなと感じた。プログラミングで詰まった所は無かったが、AutoLayoutの調整や、細かい所が目に付いたら修正しないと気が済まず、先に進めない性格によって時間をロスしてしまった。この点は今後修正していかないと、規模が大きなアプリケーションの場合、より手順と時間の回り道をしてしまう事になる。中々難しいが、クリアしなければならない課題である。とにかく企画を立てて、数を作って慣れていくしかないんだろうなと思ったチャレンジだった。

 

その後

f:id:waspossible:20170125161239p:plain

審査落ちた。

この規模のアプリケーションが審査を通過したらそら他の人は怒りますよ。おそらく数年前なら通過する可能性もあったかもしれませんが、今は時代が違うし、クオリティやアプリの有用性が明確である事が求められるようになっていると思われる。ちなみにだが審査を待っている間、謎の高熱に浮かされ、医者に行って「インフルでは無いと思いますが一応検査しますね」と言われて検査をし、結果が出るまで1〜2分掛かる検査キットでわずか10秒でインフル陽性の反応が出てお互い気まずくなった経験をした。何となく審査側の「こんなアプリ審査させやがって、呪うぞ」という声が届いたのかも知れないし、そうでないかも知れない。

 

とにかく今言える事は、インフルを治して本命のアプリを早く作ろう。という当たり前の事を当たり前に言うしかないと言った所だろうか。

 

平熱になって二日目の16時半前

縦向きディスプレイは意外と便利だったと言う話

完成形だと思っていた 

moreeasily.hatenablog.com

 

この記事にもある通り、モバイル液晶モニタを使って、出先での開発をより便利にしようと言う企み。MacBookProにモバイル液晶モニタを横にしてセッティングすれば、それはもう便利便利うっはうっはうっはっは、というはずだった。

 

しかし、お世話になっているコワーキングスペースの机の幅は思ったより狭かった。モバイル液晶モニタを横に置くには幅が無い。仮に置いたとしてもMacBookProが端に寄ってしまってキーボードやトラックパッドの操作がしづらい。出来なくは無いが、多分続けていると骨格がゆがむ。根性がひん曲がっているのにこれ以上曲がっている物が増えても生きていく上では大変である(処世術及び治療費的な意味で)。

 

さてどうしようと思ったが、縦向きにしてみたらどだろうと考えてみた。考えたからには即実行がポリシーである(簡単な物だけ)。やってみた。MacBookProにXcode、モバイル液晶モニタにはブラウザを表示させる。いや、見くびっていた。便利すぎる。一画面だったらXcodeとブラウザをいちいち切り替える必要があるが、二画面だとその必要は無い。更に、縦向きにする事により、ブラウザのスクロールの回数が減るし、一画面で多くの情報を目にする事が出来る。たまにモニタを縦向きにして開発をしている光景をテレビで観たりした事はあったが、理由はこういうことだったのかと感心した。目から鱗と言うべきか。コロンブスの卵的な発想というのか。とにかく凄い、凄いのだ。ベリーベリー凄いのだ。これでブラウザでプログラミングの分からない所を調べて参考にしながらコードを打つと言う事が可能になるのだ。何か学習サイトの講義ビデオを観ながらコードを打つ事も出来る。Kindleアプリで参考書を表示させながらコードを打つ事も出来る。やっぱりベリーベリー凄い。WhiteBerryBerryz工房、支払いは任せろ!ベリベリーである(veryで統一しろよ)。

 

ひとまずコワーキングスペースでの開発スタイルはこれで確定しただろう。さぁ開発だ。さぁ仕事だ。さぁ力の見せ所だ。あとはやるだけだ。風向きはこちらに来ているのだ。チャンスは今だ。

 

ちなみに、縦向きのモバイル液晶モニタにブラウザを映してこの文章を書いているが、首が右に向いたままだったので、若干首がツライ。やはり物事には少なからず弱点と言う物があるのだな。あとこの文章を書くまでに、実際縦向きのモニタで表示させて利用したのはTwitterのTL、Yahooファイナンスポートフォリオである事をお伝えしたい。実際コード書いたりして利用してないじゃねぇかと思われるかも知れないが、しなくても想像しただけでウキウキする事もあるじゃん!

 

何とかやる気を出したい午前11時前

 

2017/1/26追記

現場を再現してみた

f:id:waspossible:20170126101438j:plain

実際便利。

一時は諦めなければならなかった

これに行きたい

www.tryswift.co

 

Swiftという開発言語のカンファレンスが東京で行われる。滅多に無い(と言っても去年もやってた)機会なので是非とも参加したい。プログラムを読んでみると、表題だけで興味を魅かれるものもある。行きたい。とにかく行きたい。

 

しかしこれには参加費がかかる。スーパー早割りというものは既に終了していた。しかしSwift早割りと言うのがある。これも割引率は低くなるものの、お得に参加出来るのである。だが、お得といってもトータルで308.49ドル(税込み)。約35000円である。去年の収益が1000円にも満たない弱小デベロッパーにはキツイ額である。ここ数日ドル円が円高に進んでいるとはいえ、結構な出費になる。

 

じゃぁどう稼ぐか。何故か競馬に走ってしまった。Swiftにちなんで三連単で3-12-10(す・いふ・と)と買ってみたりもした。全滅だった。バカだ。その金を参加費の足しにした方がよかった。バカだバカだバカだと自分を呪いつつ、昨日寝た。Swift早割りの締切は昨日いっぱいだ。諦めなければいけないと落ち込みつつ、眠りについた。

 

そして今日、5時に起きた。しかし気分の落ち込みや後悔の念が強く、もやもやした気持ちを抱いたまま今日を過ごさなければいけないのかと思うと絶望しかなかった。しばらくして、いつの間にか寝ていた。次に起きたのは11時半頃だった。もうずっと寝て過ごすつもりであったが、母に起きろと言われて無理矢理起きた。コワーキングスペースにも行きそびれた。もうダメだ。今日は終わりだ、全て終わりだ、と思った。せめてしっかり諦めをつけようと思い。trySwiftのページを覗いてみた。Swift早割りが締め切られている画面を見て、自分の行いを反省をするつもりであった。しかしここで意外な事が起きる。Swift早割りの締切がもう一日延びていた。まだチャンスはあったのだ。何とか用意しなければ。そこで自分持っている証券会社の口座を見てみた。ある株の値段が上がっていた。一部を売れば参加費を賄えるだけの上がり具合だった。すぐに一部を利確し、証券口座から自分のメインバンクの口座に移す。そしてtrySwiftの申込を済ます。よかった。無事に予約出来た。ありがとう、ありがとう。ありがとう。

 

このチャンスをフイにしない為に、健康管理などをしっかりしよう、Swiftをより勉強しよう、そしてギャンブルは余裕のある人間の遊びなのだと肝に銘じよう。そう思った。思ったじゃない。そうしろ。

 

ちなみに、決済通知のメールで知ったのだが、参加費は日本円に直すと36830円だった。35000円台で済むと思っていたのだが、手数料の事を完全に忘れていた。バカは死ななきゃ直らないという言葉があるが、今までの行いも含めると、バカは死んでも直らないし永遠に続くとういのが事実ではなかろうか。

更に快適を目指す

便利だと思った・・・しかし・・・

 

 

f:id:waspossible:20170113202310j:plain

付属のカバーがスタンド代わりになるのだが、いかんせん場所を取る。幅約80cmの机のコワーキングスペースではかなり致命的なのだ。

 

というわけで道具で解決

Anker® タブレット用スタンド 角度調整可能 iPad・iPad mini・Nexus 7等に最適

Anker® タブレット用スタンド 角度調整可能 iPad・iPad mini・Nexus 7等に最適

 

 

f:id:waspossible:20170113202653j:plain

f:id:waspossible:20170113202724j:plain

意外とズッシリ。

 

f:id:waspossible:20170113202808j:plain

ててーん!!(俺が写っているけど気にしない)

 

これでコワーキングスペースでスマートな開発ライフが送れる!その前にちゃんとやる気用意してねって話ではあるんだけど。

私の不注意のせいで

買って3日のMacBookProが傷だらけに

f:id:waspossible:20170113105802j:plain

 

傷アップ

f:id:waspossible:20170113105858j:plain

 

買って3日で傷だらけにしてしまった。採れて3日以内の卵もマヨネーズにされてしまう昨今、3日というのは最近の鬼門のブームなのかもしれない。早急に対策を練らねばいけない。

 

f:id:waspossible:20170113110152j:plain

 

 

f:id:waspossible:20170113110232j:plain

何か小さいのも付いてる。お得。

 

f:id:waspossible:20170113110440j:plain

勿論入る。これ以上傷を増やす事も無いだろう。

 

f:id:waspossible:20170113110536j:plain

小さい方には電源アダプタを入れる。

 

f:id:waspossible:20170113110629j:plain

入った。短いケーブルだったらあと数本入るかもしれない。

 

これで安心して持ち運び出来ると、心穏やかになった吉宗であった・・・。

 

 

 

ちなみに・・・

今回の事故の被疑者

f:id:waspossible:20170113110827j:plain

名刺入れやペン、定規などを纏めて入れている袋。フックとかの金属部がこすれて出来た傷だと思われる。敵は身内にいた(お前の不注意だろ)。