jQueryサイト:使用例追加

使用例に追加

年内の更新は本日でおしまい。また使用例に3件追加しました。
使用例のページ
最近はタブレットを意識したレイアウトが増えてきましたね。
来年の最初の記事はjQuery問題集の紹介ページの報告になると思います。
 
 
 

来年はjavaScriptを学習できるサイトを

googleでjQueryを検索するとjQuery入門講座は4ページ目(たまに3ページ目)
にやっと登場。もう少しメジャーになりたいです。
 
で、検索の2ページ目に面白そうな本の紹介がありました。
→参考:jQuery 最高の教科書(SHIFTBRAIN Inc.)
 
デザイナーの方が興味を持てるサンプルが掲載されており、とても良さそうなのですが
amazonのレビューはちょっと微妙?
↓↓↓↓↓

話しがそれてしまいました…。
 
jQueryのみの検索では4ページ目ですが、「jQuery 初心者」で検索すると1ページ目
しかも3番目くらいに表示されます。ということで、来年は初心者向けのコンテンツを
増やしていく予定です。
→参考:このサイトについての「今後の野望」
 
とりあえずサブドメインに開設する予定(現在は仮ページが1枚)。
http://javascript.jquerystudy.info
 
 

良いお年を

そんなこんなで、本年は色々ありがとうございます。
そして、来年も色々と宜しくお願いします。
 
 
 

iOS:なるべくhtml側で完結させる & duns numberのその後

なるべくhtml側で完結させる

javaScriptとobjective-cの連携を学びましたが、ソースが少しややこしくなるので
データの保存やサウンドの管理もhtml側でできないか調べたのでメモ。
 
特にHTML5ではクッキー以外にもデータを保存する手段があることを知ったのは嬉しい。
→参考:Misc様「localStorageを使いこなすための覚え書き
 
サウンドは連続再生が可能なコーディングを覚えましょう(以下の2つとも同じ手法)。
→参考:informarcLAB様「Android/iOSでAudio要素の連続再生対策
→参考:TM Life様「JavaScript で HTML5 Audio を使ってサウンド再生…
 
 
 

duns numberのその後

本日、duns numberが受け入れて貰えました!
しかし、申請した住所ではなく移転する前の住所(以下画像)
dduns
 
移転前の住所が表示されていると言うことは、すでにduns numberが申請されていた
ということ?…。変更を依頼するにも年末年始ですし、まだまだ時間が掛かりそうです…。
 
以下、関連するサイトをメモ。
以下のページでは、最後の方で会社名を変更するため
D&Bとのやり取りがしるされています。
→参考:pirosapの備忘録
 
日本でdunsNumberを管理している東京商工リサーチでも申請ができる?
→参考:東京商工リサーチ様「自社DUNS情報修正
 
 
 

iOS:iOS6と7のステータスバーの差異を修正

iOS6とiOS7のステータスバーの差異を無くす手順

以前の記事でステータスバーの扱いがiOS6とiOS7で異なることを書きましたが、
もう一度、同じ事をしようと思ったらできませんでした(細かいところを忘れて…)。
 
ということで、もう一度調べ直しました。でもって、今度は忘れないように
動画でメモすることにしました。以前の方法とはすこし異なり
「topLayoutGuide」を利用する方法をとっています。
以下のサイトがとても参考になりました。
→参考:iOS7ステータスバー対策まとめ「 AutoLayoutでStatsuBarに対する余白を変更する
 
独学xcode:iOS7のステータスバー問題

720pなのでフルスクリーンで見ると文字も読めると思います。
 
字幕付けるのが面倒だったので、アノテーションだけ付けました。
気になるところは動画を止めて確認してください。
 
 
 

iOS:お試し版

アプリリリースに向けて色々調べていたら、iOSでは「お試し版」や「体験版」は
リリースできないと分かりました。
→参考:fladdict様「iPhoneアプリ審査での111の禁止項目(意訳)」の2.9項
 
しかし機能制限や試用期間が設定されていない「無料版」や「LITE(ライト)版」などは
許されるようです。
→参考:中村智武のCTO記様「有料iPhoneアプリの無料版を安易に出してはいけない>」
 
試しに「iOS アプリ ライト版」で検索すると、確かに色々リリースされています。
ということで「お試し版」という表現はやめて「Lite版」にしようと思います。
 
でも検索にかかるアプリを調べると、ゲームの1面だけプレイ可能とか事実上の
機能制限版なのですよね…審査基準って結構いい加減?
→参考:虫姫さまふたりLITE版(無料版)配信開始
 
ちなみにLite版は無料でリリースし、通常版は300円位で販売する予定です。
しかし、2末くらいまではリリース記念で200円位での販売になる予定です。
 
 
 

jQueryサイト:使用例追加

いまjQuery問題集の説明ページを作成しているのですが、まだ完成していないので
今週も使用例に3件追加しました。
使用例のページ
 
 
 

jQuery問題集アプリの進捗

月曜日にやっとD-U-N-S Numbersが発行されました。
————————————————————
Your D-U-N-S Number request/update submitted on 12/9/2013 with
ID Number ■■■■■■-■■■■■ has been completed.
You may start using your number in 14 days.
D-U-N-S Number: ■■■■■■■■■
Resolution Description: Match by Inv-Customer record indicates current address
以下、登録内容なので省略
————————————————————
しかし文中に気になる言葉が(太字の部分)…
「14日内には利用できるようになります」と。
 
そして金曜日の今日も、未だにD-U-N-S Numberが使えません。
アップルのサイトでは以下の様に弾かれてしまいます…。
duns
※リンクで拡大
 
おとなしく14日は待とうと思うのですが、googleで調べると
会社名が登録できないケースもあるようです…。
→参考:ブログ「iOS プログラミングメモ」様

その他、参考になりそうなサイトをメモ
→参考:今さら聞けないAppStoreにiPhoneアプリを登録する手順
 
どうなることやら…
年内のアプリリリースは無理っぽいです。
 
 

jQueryサイト:使用例追加

今週は忙しかったので、使用例でお茶を濁すことに..。
いつものように3件追加してみました。
使用例のページ
 
 
 

jQuery問題集アプリの進捗

先週の記事では、今週は実機テストをしているハズでしたが…。
実際は、いまだに「apple developer program」に参加できていません。
→参考:apple developer programs
 
法人で、これに参加するためには「D-U-N-S Numbers」が必要なのですが
これが、まだ登録できていません。他の方のブログでは3日で登録された
なんてあるのですが…。
→参考:ブログ「D-U-N-S Number
 
返信自体は3日で届き「早いなぁ」と思ったのですが、いざ数字を入れようとすると
桁があいません。よくメールを読むと、ただの「お問い合わせ番号」でした…。
————————————————————
Thank you for submitting your D-U-N-S Number request / update to D&B. It should be completed by 12/18/2013, or sooner.
Your request id is: ■■■■■■-■■■■■.
A D&B representative may be contacting you directly. Your cooperation will help to expedite the resolution of this request.
Please contact applecs@dnb.com if you have any questions.
————————————————————
まぁ18日までには処理してくれるそうなので、もう少し待ちたいと思います。
 
 
 

iOS:問題集アプリの途中経過(2)

今週はメールに復習データを送る仕組みと、サウンドの処理、そしてアイコンの作成が
完了しました。でもってxcode5/iOS7への移植も完了しました。
動画の後で、今回躓いた部分をメモしています。
独学xcode:問題集アプリ(BGM/メール/iOS7)

問題数を50問に減らした「お試し版」を先行リリースする予定です。
 
 
 

連続してiOSへ情報を送れないのはネック!

前回もメモしていますが、jQueryからiOSへデータを送るにはURLを擬似的に変更
することで行っています。そのため連続した処理はできません。
作成しているアプリがシンプルなこともあり、今回は余り問題にならないと
思っていたのですが、SEをつけるとなると事情が変わりました…。
 
iOSへ情報を送るのは、大抵のボタン操作によります。そしてSEも
ボタン操作に合わせて処理するので、当然のようにバッティング。
SEが再生されません…。
 
で前回と同じ対応、つまりsetTimeOutで0.1秒SEの再生を遅らせる
0.1秒の遅延は不自然かな?と思ったのですが、動画で確認できるように
違和感はありませんでした。

メモ:

iOS7ではJavaScriptCore Frameworkなるものが登場、今回のアプリはiOS6にも対応
なので利用できませんが、より高度な連携が可能になるそうです。
→google検索「objective-c JavaScriptCore
 
 
 

touchendとmouseUp

xcodeに組み込む前はブラウザ上で動作確認していたので,jQueryのイベントは以下の様に
ブラウザ用のmouseUpと、iOS用のtouchedを併用していました。
———————————————————————-
$(“#intro”).on(“touchend mouseUp“,”.button_active”,function(){
———————————————————————-
私は、この様な記述がされた場合、ブラウザではmouseUpのみを取得し
iOS上ではtouchendのみを取得すると考えていたのですが、iOSシミュレータでは
両方ともイベントを取得しました。結果としてSEが2回再生される自体に…。
なので、xcodeに組み込んだ現在はmouseUpの方を削除するようにしました。
 
というか、この結果って前述の「連続して処理できない」に矛盾しています。
連続してiOSに処理を遅れないのであれば、最初のSEはキャンセルされてSEは1回しか
再生されないはずですから…。
 
これはsetTimeoutの仕様かな?例えば以下の様に記述されると
1秒後に音を鳴らし、その1秒後に音が鳴る?
———————————————————————-
setTimeout(“音を鳴らす処理”,1000);
setTimeout(“音を鳴らす処理”,1000);
———————————————————————-
しかし検証すると、そうはならず1秒後に音が2回鳴りました!。
もしかしてsetTimeoutを利用すると連続した処理も可能なのかも!
現在もsetTimeoutのお世話になっているので、結局は同じなのかもしれませんが
これは要チェックかもしれません。なぜなら下記のように問題を避けられるからです。
 
メモ:setTimeoutを必ず経由
jQueryとiOSの連携を密にするような複雑なプログラムでは、意図せず連続して
iOSに指示を出してしまい、片方の処理がキャンセルされる危険性があります。
そのような事態を避けるため、iOSにデータを送る時は必ずsetTImeoutを経由する
ようにします。そうすれば処理がキャンセルされることを防げるのでは!
ということでメモ。
 
 
 

iOS7のステータスバー問題

iOS7ではステータスバーの扱いが異なるため、iOS6用に作成したアプリで
レイアウトが崩れてしまう。
→参考:google検索「xcode5 ios7 ステータスバー
 
対応方法は色々あるようなのですが、多くのサイトで紹介していた
Storybordの設定と簡単なコードで対応する方法を試してみました。
→参考:ios7のnavigationbarをios6以前のデザインに合わせる方法
 
しかし私の環境では機能しません..。他のサイトでも同じ方法が説明され不具合など
の報告はありません…。なぜ?…。4時間くらい試行錯誤して、この方法は諦めました。
 
次に簡単そうなのはオートレイアウトで設定する方法でした。しかし、これは
汎用性が高く、私のケースにあった解説が見つからなかったので試行錯誤に
時間が掛かりました。結局は以下の様に上からのマージンを20pxに設定するだけ
で対応できました。めでたし、めでたし。
オートレイアウト
※クリックで拡大
 
 
 

ステータスバーをプログラムで操作するには

前述の問題を調べていく過程でメモすべきことがあったのでメモ。
xcode5ではプログラムでステータスバーの設定を変更することができません。
プログラムで変更するためには、以下のサイトで紹介しているように
infoの設定を変更する必要があります。
→参考:Xcode5でステータスバーを非表示にする方法
 
 
来週はdeveloper programに加入して実機テストをして、あわよくば
審査用にデータを送るところまで行きたいです。
 
 
 
 
 
 

iOS:問題集アプリの途中経過

今週はjQueryとiOS間のデータのやり取りを完成させました。
アプリで保存するのは、サウンドの設定/正解した問題リスト/復習用データ/クリア回数
の4つです。以下の動画でデータが保存されているのが確認できます。
あと悩んだ部分が3つあったので、動画の後にメモしています。
 
独学xcode:問題集アプリの経過報告

 
 

データ保存のタイミング

iOSのアプリは通常、終了ボタンをつけません。これはアプリの管理をOSが一元管理
するためです。終了ボタンがあるのであれば、データの記憶は終了する直前に実行す
れば良いのですが、そうでない場合は何時するのか?
悩んだのですが、結局データが変更される度に、こまめに保存するようにしました。
 
アプリ制作の参考にするため、幾つかのアプリを使ってみたのですが、その中の
「テトリスモンスター」というゲームが私のiPodで、よくクラッシュ(強制終了)
するのですが、再起動すると戦いの直前で記憶されており、結構頻繁に保存されている
と感じたからです。
 
 
 

文字データを保存する時の注意

データの保存処理で「復習データ」だけ機能しない問題に悩みました。
このデータだけ「文字列」が入った配列で、文字列の部分が問題の原因でした。
jQueryからiOSにデータを送るためには以下の様にURLを経由し、
データは#以下に添付して送っています。
——————————————————-
window.location = “webview://saveReview#” + reviewData;
——————————————————-
javaScriptでは配列を文字列に足すと、以下の様に[]が外れたカンマ区切りの
文字列に変換されます。
——————————————————-
[“aaa”,”bbb”,”ccc”]

“aaa,bbb,ccc”
——————————————————-
この文字列をiOSで文字列として保存します。
そして、iOSからjQueryにデータを送る時はjavaScriptのevalと同じように
文字列を実行させます。そこで以下の様に処理しました。
——————————————————-
“testFunc([” + 保存したデータ + “])”

“testFunc([aaa,bbb,ccc])”
——————————————————-
しかし、この処理が機能しませんでした。
気付けば当たり前だったのですが、長く悩んでしまいました…
——————————————————-
“testFunc([aaa,bbb,ccc])”
——————————————————-
上記の処理では配列の要素にクォートがないため、変数aaa、変数bbb、変数ccc
と扱われてしまうのです。悩んだあげく、iOSにデータを送る際に各要素を
以下の様にシングルクォートで囲むようにしました。
——————————————————-
[“‘aaa'”,”‘bbb'”,”‘ccc'”]

“‘aaa’,’bbb’,’ccc'”
——————————————————-
以下は実際の処理。意外とシンプル。
——————————————————-
var modReviewData = [];
for (var i=0; i連続した処理

jQueryからiOSへ連続してデータを送ると、必ず最初の処理が機能しません。
具体的には以下のような処理です。
——————————————————-
window.location = “webview://saveScore#” + saveData;
window.location = “webview://saveClearTimes#” + clearTimes;
——————————————————-
問題集では全問正解したら、回答情報をリセットし、クリア回数を1足すように
しています。そこで上記のような処理をしたのですが、必ず1行目の処理が
キャンセルされます。これはURLが変更される前に、別のURL変更リクエストが
入ったため最初の処理がキャンセルされるからでしょう。
 
ということで、2行目の処理はsetTimeoutを利用して0.1秒後に実行するように
しました(0.01秒でも機能しましたが念のため)。
結果として正常に機能するようになりました。
クリア回数の更新頻度はとても低いので0.1秒の遅延は問題になりませんが
更新頻度が非常に短いケースでは利用できないでしょう…。
 
 
 

これからの作業

phase1(練習)
・復習データをメールで送信できるようにする。
・BGMの処理を追加する
・アイコンとか起動画面を作成する
・説明ページを作成する

phase2(本番)
・xcode5をインストールして、同じようにアプリを作成
・developer登録をする
・実機でのテスト