Archive for the 未分類 Category

小学生の漢字 – その字は習った?

icon_Icon-72 AppStore

「小学生の漢字 – その字は習った? 2.6.0」がリリースされました。

新しいバージョンでの改善点は以下のとおりです。

  • 手書き入力がよりスムーズになりました。
  • 常用漢字、人名漢字に含まれていないJIS第一水準漢字、JIS第二水準漢字に対応しました。

普段使いの漢字辞典としても十分にお使い頂けます。

Time Machineの障害対応 備忘録

開発用マシンのMacはTime Machineでバックアップしています。
ですが時々エラーが起こり、再度のフル・バックアップからやり直してくれと言ってきます。

これまでは諦めて支持通りに新規のフル・バックアップを行っていました。
(プロジェクト関連はTime Machineとは別に個別のバックアップは取っています)
しかしこのところ頻繁に起こるようになりましたので、何とか修復は出来ないかと試してみました。
フル・バックアップが始まるとMacにもかなりの負荷がかかり開発等も効率が悪くなりますので。

結論から言うとFix Time Machine Sparsebundle NAS Based Backup Errorsの記述通りに行うと修復出来たようです。

記述は全て英語なので、簡単に訳してみます。

  1. ターミナルを開き以下コマンドでrootになって下さい。

    sudo su -
  2. Verificationが既に実行されてsparsebundleがbadにマークされていますので、まずそれをnormalにする必要があります。
    コマンドラインから以下のコマンドを実行して下さい。

    chflags -R nouchg /Volumes/{name of your network share}/{name of}.sparsebundle

    このコマンドは少し時間が掛かります。
  3. 次に以下のコマンドを実行して下さい。

    hdiutil attach -nomount -noverify -noautofsck /Volumes/{name of your network share/{name of}.sparsebundle

    以下のような実行結果が表示されます。

    /dev/diskx Apple_partition_scheme
    /dev/diskxs1 Apple_partition_map
    /dev/diskxs2 Apple_HFSX

    x は外部ディスクのディスクIDです。
    Apple_HFSX または Apple_HFS と出力されたものが対象のディスクです。
  4. この時点でファイルシステム・チェックのプロセス(fsck)が既に起動されています。
    下記のコマンドでfsckの実行状況を追跡する事が出来ます。

    tail -f /var/log/fsck_hfs.log

    fsckが起動されていれば sparsebundleを修復するはずです。このコマンドは数時間かかります.
  5. fsckが終了すると以下のどちらかが表示されます。

    ‘The Volume was repaired successfully’


    ‘The Volume could not be repaired’
  6. もし後者の場合にはもう一度ディスク修復のために以下のコマンドをもう一度実行します。

    fsck_hfs -drfy /dev/diskxs2
    もし十分なRAMがある場合には以下のようにRAMキャッスを指定する事で高速かする事が出来ます。

    fsck_hfs -drfy -c 750 /dev/diskxs2

    上記の例では750MBのRAMを使用します。システム構成により変更して下さい。もしよく分からない場合には最初の例を使用してください。x は環境により置き換えて下さい。
  7. 1〜2時間かかります。
    もう一度下記のコマンドを実行して下さい。

    tail -f /var/log/fsck_hfs.log

    修復が成功していれば下記のように表示されます。

    ‘The Volume xxxxx was repaired successfully’
  8. 以下のコマンドを実行して下さい。

    hdiutil detach /dev/diskxs2
  9. 上記の処理を何度か実行して下さい。
  10. 上記処理が完了したら、バックアップの状態を記録している sparsebundle 内の plist ファイルを編集する必要があります。sparsebundle の直下にある com.apple.TimeMachine.MachineID.plist を編集します。
  11. 以下の2行を削除します

    <key>RecoveryBackupDeclinedDate</key>
    <date>{whatever-the-date}</date>

    (私の環境では上記の行はありませんでした)
  12. 以下の行を変更します。
    変更前

    <key>VerificationState</key>
    <integer>2</integer>

    変更後

    <key>VerificationState</key>
    <integer>0</integer>

上記の作業で無事、Time Machineを復旧する事が出来ました。
所要時間は約3時間。
過去のバックアップも見る事が出来ます。

自力でStoryboardをコンパイルしてアプリで読み込む 備忘録

1. ibtoolをカスタムで起動させる。

まず、 “Build Phases” -> “Copy Bundle Resource” から拡張子が “.storyboard” となっているファイルを外します。
次に ”Build Phases” -> “Run Script” に追加して以下のように書き込みます。

ibtool --errors --warnings --notices --minimum-deployment-target 5.0 
       --output-format human-readable-text --compile
        'Sample/Storyboard.storyboardc' 
        'Sample/Storyboard.storyboard'

このコマンドの出力ファイルは Storyboard.storyboardc です。最後に “c” が追加されています。
シュミレータでアプリがインストールされるディレクトリを参照して頂ければ、Storyboardのファイルはこのように最後に “c” の付いたファイルになっている事が確認出来ると思います。
Storyboard.storyboardc を追加します。

また念のために “Build Phases” -> “Copy Bundle Resource” でこのファイルがコピー対象になっている事も確認します。

2. AppMainAppDelegate.mを書き換えます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSString *reqSysVer = @"7.0";
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
    if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending) {
        // iOS 7.0 or later
        UIStoryboard* storyboard;
        NSString* storyboardFile;
        storyboardFile = @"Storyboard";
        storyboard = [UIStoryboard storyboardWithName:storyboardFile bundle:nil];

        self.tabBarController = [storyboard instantiateInitialViewController];

    }
    else {
        // Override point for customization after application launch.
        UIViewController *viewController1 = [[[AppMainFirstViewController alloc] initWithNibName:@"AppMainFirstViewController" bundle:nil] autorelease];
        UIViewController *viewController2 = [[[AppMainSecondViewController alloc] initWithNibName:@"AppMainSecondViewController" bundle:nil] autorelease];
        self.tabBarController = [[[UITabBarController alloc] init] autorelease];
        self.tabBarController.viewControllers = @[viewController1, viewController2];
    }

    _window = [UIWindow alloc];
    _window = [_window initWithFrame:[UIScreen mainScreen].bounds];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

    return YES;
}

この例ではxcodeのabBarのテンプレートから生成されるコードを元に追加変更しています。

3. iOS7への移行を考える

これを書いている時点ではまだWWDCも終わっていません。ですのでまだどんなサプライズがあるかはわかりません。しかし今の時点で出てきている部分だけを見てもUIに関しては大きな変更が加わっています。ある意味、総取っ替えの感もあります。もちろんUIButtonなどの今までのクラスは引き続き使う事は出来ます。ですが外観が大きく変わり、サイズも変わっています。全体の整合性を取るためにはiOS7以前と後ではUIを別の物として考えた方が良いのではないかとさえ思います。
XcodeもDeveloper Previewの段階ですのでまだ使い勝手が良くなるのかもしれません。
しかし既に幾つかのアプリをリリースしてしまっている側としてはマイグレーションの方法を早めに見つけておいた方が良いかと思います。

この例ではNIBを使った今までのコードにStoryboardを加えたわけですが、すでにStoryboardを使って開発しているアプリも、iOS7以前と以後のStoryboardを分けて実装する事も可能となります。

備忘録

何度も設定しているけど、毎回忘れてしまうので…

CoreDataを使っていてSQLiteがどのように動いているのかをモニターするには、「Edit Schema…」の画面で

Argumentとして-com.apple.CoreData.SQLDebug 1を設定してやる。


かたかなマスター アイウエオ 1.0

かたかなマスター アイウエオ 1.0 をリリースしました。

「ひらがなマスター あいうえお」の姉妹製品です。

 

え?ワールド・ビジネス・サテライトで?

昨日(11/18)のTV東京でやっているWBSを妻と一緒に見ていましたらスマフォ・アプリの開発者が足らないとかいう内容で、冒頭に何故かぽけっと定規が画面に!妻と一緒に目を疑ってしまいました。
ちょっと超えかけてよ。
そんでもって無料アプリじゃなくて、有料アプリの方を出してよ(^^;

ちなみにその時も広告にiAdは表示されていませんでした。
僕もまだ2回しか見た事が無い幻の広告。
しかしiAd Networkで確認すると日本でも毎日、そこそこの数の人がiAdの広告を見て、クリックしてくれている事になっています。

iPhone 4S from au

予約してあったiPhone 4Sを取りに行ってきました。

混雑を防ぐためにauショップの方からあらかじめ来店時間を聞かれていましたので、開店の10時ちょうどに行ってきました。

 

 

先に待っているお客さんもいませんでしたので1番乗りです。すぐにカウンターに案内されました。

料金プランやなんやらを聞かれ、担当者が端末入力したり何やらで、結局店を出たのは11時半頃です。

家に帰ってSyncしないと何も出来ないと思いきや、昨日のiOS 5.0のアップデートが功を奏し、Apple IDさえ入力してやればiCloudを使った同期でアドレス帳などもいつの間にか同期されていました。とはいえアプリはまだですので、使える物と言えば「設定」での入力の際にボタンが付いてダウンロードが直ぐに出来るTwitterくらいでしょうか。

まずは最寄りの喫茶店に入り、あれこれ設定を始めました。

最初に設定したのがezwebのメールアドレス。

今まではずっとドコモを使っていましたので新たにezwebのアドレスを取得する所から始まりました。

設定方法は店で簡

単な手順書をもらいましたのでそれに従って…

しかし困ったのが「メッセージ」(SMS)を使って登録用のURLを取得しなければならないという所でした。一見何でもない事なのですが、宛先に「#」を付けた番号を指定しなければなりません。

ところがソフトウェアキーボードのどこを押しても「#」が出て来ないのです。

「設定」でキーボードの設定をいろいろいじりましたが解決しません。

困った…と思ったとき、カーソルを本文の所に合わせるとキーボードが変わりました。当然ですが、ここでは何でも入力出来るのです。さっそく「#」を打ち込み、Copy & Pasteで宛先に注力。

後は返信で帰って来たURLをタップして新規にメールアドレスの取得です。

 

しかしここでまた…

普通のケイタイでしたらそのまま携帯用のメールアドレスが使えるのですが、iPhoneの場合には登録しなければなりません。

設定の「メール/連絡先/カレンダー」で登録です。

取得したメールアドレスやSMTPのサーバを入力し「さてこれでOK!」と思いきやユーザ名かパスワードが違いますと弾かれてしまいます。

よく手順書を見ると、ここで入力するべきユーザー名はメールアドレスではありませんでした。先ほどのアドレス登録処理を行った後に「メッセージ」でに帰って来た内容。そえを入力しなければなりません。

とはいえこのユーザ名とパスワード、ランダムに生成されたっぽいもので、簡単には覚えられません。「ん…」と考えていると「編集」ボタンというのが画面の右上に見え、それをタップしてやると、個々のメッセージをコピーする事が出来ました。とりあえずそれをメモ帳に張り付け、ユーザ名とパスワードをそれぞれ設定してやる事で何とかメール設定まで無事に完了しました。

そしてちょっとビックリしたのはiPhone 4SにはSiriが入っています。何かで初回出荷ではお預けとか言われていましたし、昨日iOS5.0を入れたiPod Touch 4には入っていませんでしたので。iPod Touch 4にもマイクはあるにはありますが、やはりちょっと違うのかもしれません。

日本語には対応していませんし、まだ試してもいませんので使い勝手等は何とも言えませんが楽しみです。

 

 

 

iOS対応状況

現在updateを申請している書きのアプリがAppStoreで承認がおり、新しいバージョンがリリース開始されています。

 

ひらがなマスター あいうえお

 

ぽけっと定規 プラス

iOS 5.0 対応

昨日、iOS 5.0のSDK GMがリリースされました。
それに伴ってプロダクトのコンパチビリティーをチェックし、アップデートしております。

下記のアプリ現在時点で互換性を確認出来たとともに必要に応じて修正を加えました。現在「Waiting for Review」です。

 

  •  「ぽけっと定規 プラス」
  •  「カロリー・マネージャ」
  • 「ひらがなマスター あいうえお」
その他のアプリについても早急に互換性の確認と修正を行います。
今回のUpdate、GM版をインストールしてみると、けっこう気に入っている既往がいっぱいあります。
そしてiPhone 4S がソフトバンク以外(au)でも発売になるというのは私にとってもとても喜ばしい事です。
また、スティーブン・ジョブス氏の訃報には驚かされました。
彼がもしいなければ…と考えるとPCやコンピュータ市場自体の成長や発展がどのようになっていたか…を考えると彼の偉業には敬服しかありません。
果敢に「一歩先」を見つめ続けた彼の精神がAppleの中に引き継がれている事を切に望みます。
残念ではありますが、ゆっくりとお休みください。

時計の学習 − 「いまなんじ?」

 時計の学習 − 「いまなんじ?」

ただいまリリースの準備中です。

最近はEducation系の開発にはまっています。

自分の子供の教育にも役立つ事を念頭においていますので、実践的(?)なのかもしれません。