アーカイブ

Posts Tagged ‘Objective-C’

bookwormのソースコードを公開します

以前、プライベートでiOSの書籍アプリを開発していた頃があり、単独の書籍タイトル向けにライセンス販売したりしておりました。例えばコレとか。

所がAppleの方針変更があり、書籍はストアアプリと課金で購入できる書籍データに分離しろというお達しが出て単品の書籍アプリは禁止されてしまい、開発は長続きする事なく終わってしまいました。

製品寿命も尽きてますし、当時の関係者の了承も得られたので、ソースを公開する事にします。

https://github.com/marvelph/OpenBookworm

独自のマークアップ形式のテキストコンテンツを、縦書きでリフローするタイプの書籍アプリになってます。iPhoneやiPadのポートレートでも動作しますが、iPadでランドスケープ動作させると見開きになります。シークバーでページを移動させると、トランジションがちょっと面白いかもしれません。

製品のコンテンツを抜いて著作権切れの童話に差し替えたりしたので、開発中の試行錯誤の履歴は残っていない状態です。

Xcode8でビルドして動かしてみましたが、検索とかフォントサイズ変更とか、動かなくなっている機能もあるようです。

広告
カテゴリー:開発 タグ: ,

Mangaoにrarファイル対応をコミットしました

OS X用のコミックビューア、Mangaoにrarファイル対応をコミットしました。
http://ryotaminami93.appspot.com/mangao.html

中の人からtwitter経由で「Mangaoにgithubで公開しているzipファイルのライブラリを使ったよ」という連絡があったので使ってみたのですが、

  • シンプルなのでストレスが少ない
  • キーボードの操作方法がDOSのコンソールアプリみたいで好み
  • OS X 10.8で安定している(Simple ComicやcooViewerの問題点)

事が解りました。

ソースコードも公開されていますし、ちょっと手伝いたい気持ちになったのでrarファイルの対応を行って、中の人にコードレビューして頂きました。
幸い気に入って頂けたようなので、無事マージされたバージョンがリリースされています。
rar対応の部分のライブラリは切り出して、別途githubでも公開しています。
https://github.com/marvelph/RarFile

カテゴリー:開発 タグ: ,

PoiCa Sensorについて発表してきました

Cocoa勉強会で、PoiCa Sensorについて発表してきました。

コードがほとんど出てこないアレな発表ではありましたが、退屈はされなかったようなのでほっとしました。

カテゴリー:開発 タグ:

CocoaSQLMapperについて発表してきました

2013年1月26日 1件のコメント

Cocoa勉強会で、CocoaSQLMapperについて発表してきました。

「NSDecimalNumberをサポートしないの?」という話と、「外部結合でツリー状の親子オブジェクトを取得したいよね」という突っ込みがありまして、とりあえず前者はなんとかしようと思います。
後者は、上手いインターフェースを思いつかないです。

カテゴリー:開発 タグ: , ,

Objective-C++で型推論が使える件について

Xcode 4.3のclang 3.1で、下記のコードがコンパイルできて正常に動作する事を確認しました。
Objective-C++なので、ファイル名はmain.mmです。

#import <Foundation/Foundation.h>

@interface Foo : NSObject

@end

@implementation Foo

- (void)dealloc
{
    NSLog(@"dealloc");
}

@end

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        auto foo = [[Foo alloc] init];
        NSLog([foo className]);
    }
    return 0;
}

標準出力を見る限り、ARCもきっちり動いているご様子です。

2012-03-03 02:16:12.972 Test2[28693:403] Foo
2012-03-03 02:16:12.974 Test2[28693:403] dealloc

C++11の新機能を精査すれば、Objective-Cに美味しい機能がまだあるかもしれません。

カテゴリー:開発 タグ:

CocoaSQLMapperでレコードの数を数える

英語圏のエンジニアからメールで、「CocoaSQLMapperを使って”select count(*) from foo”はどーするんだよ?」と質問があり、サンプルを更新した後にその三倍の時間を使って英文の返事を書きました_| ̄|○

さてSQLの集約関数ですが、下記のようなコードを書きます。

@interface Count : NSObject
@property (nonatomic) int value;
@end

NSError *error = nil;
Count *count = [database selectObjectBySQL:@"SELECT COUNT(*) AS value FROM Person" parameter:parameter resultClass:[Count class] error:&error];
if (count) {
    NSLog(@"%i", count.value);
}

ポイントはSQLの「AS句」ですが、それ以前に整数型の値を一個受け取る為に新しいクラス定義を行っているあたりが、大変残念な気持ちを誘っています。
CocoaSQLMapperは本業でも用いていて、この残念感には以前から気がついていたのですが、忙しくて放置プレイになっていました。

今の所、二つのプランがあります。

  • 整数、文字列、日付を一つ受け取る為のクラスを、予めライブラリに含める。
  • 結果セットの列が一つの場合に、resultClassにNSNumberなどの指定を許す。

どうした物でしょうね。
http://github.com/marvelph/CocoaSQLMapper

カテゴリー:開発 タグ: , ,

「CocoaSQLMapper」でNSNumberをサポートしました

パラメータ及びリザルトにおいて、整数・浮動小数・論理値のNULLを表現したい場合に、NSNumberを使う事ができるようになりました。
http://github.com/marvelph/CocoaSQLMapper

リザルトにおいてビット幅を仮定する事はできないので、NSNumberの内部表現はBOOLとintはlong long intになり、floatはdoubleになります。
しかし使用時には、boolValueやintValue、あるいはfloatValueを呼び出した時点で適切に変換されます。

カテゴリー:開発 タグ: , ,