[iOS] ブラウザのURL

iOS向けアプリでUIWebViewを利用したWebブラウザを作ったときに、AppleにRejectされましたので、その対応をメモしておきます。

開発5年目にしての初Rejectでした(笑)

さて、Webページの表示は、myWebViewという名前をつけたUIWebViewオブジェクトに対して、URLを渡すことによって簡単に実装できます。

    NSString *urlString = @"http://www.google.com/";
    NSURL *url = [NSURL URLWithString:urlString];
    [myWebView loadRequest:[NSURLRequest requestWithURL:url]];

URLはWikipediaによれば、「(スキーム名):(スキームごとに定められた何かの表現形式)」という形をしているとされています。

ところが、Appleのレビューアーはアドレスバーに「google.com」と入力してしまったので、myWebViewはこの文字列を適切に評価できず、次のようなエラーを吐き出しました。


これがバグに当たるということでRejectされたわけです。

URLではない文字列をアドレスバーに入れたのがバグというのかどうかは置いておいて、確かにSafariなんかは期待するWebページを開くことができるので、対応すべき問題であることは確かですね。

ということで、URLにスキーム名が含まれていなかった場合には、頭に「http://」を付加するように修正し、無事に審査を通ることができました。

    NSString *urlString = @"google.com";
    NSURL *url = [NSURL URLWithString:urlString];
    if ([url.scheme length] == 0) {
      url = [NSURL URLWithString:[@"http://" stringByAppendingString:urlString]];
    }
    [myWebView loadRequest:[NSURLRequest requestWithURL:url]];

以上です。

[iOS] HTMLからiBooksで読めるEPUBを作ってみる

iOSデバイスにiBooksというすばらしいアプリが入っているわけですが、日本語の電子書籍がなかなか出てこないので、いまいち使いこなしている気がしないわけです。

今回は、コンテンツをPDF形式ではなくEPUB形式で作成して、iBooksで読むチャレンジをしてみます。EPUB形式ですので、本のようにページがめくれたり、フォントサイズの変更が可能です。

このところWEB制作ではJavaScript全盛のようですので、基礎から勉強し直したいと思っていたところ、M. Haverbeke著の『Eloquent JavaScript』がいいよと教えていただいたので、それを利用します(ライセンスはCC BY 3.0です)。


[Rb] Real StudioでSource Code Proフォントを使う

Adobeが公開しているソースコード用に最適化したフォント、その名もSource Code ProをReal Studioで使ってみました。

フォントのダウンロードは、sourceforgeで可能です。

以下、Windows環境での説明になります。

ダウンロードしたフォント(zipファイル)を解凍して、適当なフォントを選び、コントロールパネル>フォントにコピーします。

Real Studioを起動したら、Edit>OptionsのCode Editorで先ほどコピーしたフォントを選択します。


これで、ソースコードはSource Cord Proフォントで表示されるようになります。


なお、日本語フォントは入っていないため、あまりSource Code Proフォントで太いものを選ぶと違和感があります。

私の場合には、SourceCodePro-Regular.otfがちょうどいいように思えました。

以上です。

[Rb] 入力フォームをEnterキーで快適に

Real Studioで入力フォームを作った時に、TextFieldなどのオブジェクトにタブオーダーを指定することができます。


普通に文字を入力する分には、キーボードのTabキーで移動することが苦ではないのですが、数字を主に使う入力フォームの場合には、テンキーにTabキーが付いていないので面倒です。

そこで、Enterキーでフォーカスを移動することを検討します。

Function KeyDown(Key As String) As Boolean
  If Asc(Key) = 13 Then
    TextField2.SetFocus
    TextField2.SelectAll
  End If
End Function

この例は、例えばTextField1というオブジェクトのKeyDownイベントで、Enterキーが押された時にTextField2に移動して全体を選択するというものです。

(Windowsで開発しているのですが、Macでも13でいいのかしら...)

全部のオブジェクトに書かなければならないので大変ですが、入力時のストレスが軽減されるはずです。

あ、フォームを開いた時にも最初のTextField全体を選択しておくとさらに良いですね。

Sub Open()
  TextField1.SelectAll
End Sub

以上です。

[Win] 通常使うプリンターの切り替え

普段、仕事で使っている業務アプリの中に、印刷時にプリンターを選択できないものがあります。

その都度、紙で出力したり、PDFで保存したり選びたいのに。

毎回、スタートメニュー>デバイスとプリンターを開いて、「通常使うプリンターに設定」をするのも面倒です。

そこで、簡単なバッチファイルを作って切り替えられるようにしています。

メモ帳を開いて、「rundll32 printui.dll,PrintUIEntry /y /n "プリンター名"」という1行を書き込み、保存して、ファイルの拡張子を「.bat」に変更します。


プリンター毎にファイルを作成した上で、どこかに適当なフォルダーを作っていれておきます。

タスクバーを右クリックして、ツール バー>新規ツール バーを選択し、先程作ったフォルダーを選択すると、ツールバーから通常使うプリンターを簡単に切り替えられるようになります。


とういうことで。

[Tax] 資産を購入したときのまとめ

仕事でパソコンなどの資産を購入した時に、確定申告でどのように扱われるかについてまとめてみます。

個人事業者も法人も共通です。

1.基本


1個当たりの取得価額が10万円以上かどうかによって判定します。


1個あたりの取得価額処理方法
10万円未満消耗品費などで費用処理
10万円以上20万円未満3年間で1/3ずつ費用処理
20万円以上資産として減価償却

減価償却は資産の種類・用途ごとに決められた耐用年数にわたって、決められた方法(個人は定額法、法人は定率法)で毎年少しずつ費用として処理していくものです。

年の中途で資産を取得した場合には、減価償却は月割計算になります。

また、取得価額が20万円以上のものは、固定資産税(償却資産)の課税対象になることがあります。

(タックスアンサー:少額の減価償却資産になるかどうかの判定の例示
(タックスアンサー:減価償却資産の償却限度額の計算方法

2.少額資産の特例


青色申告をしている個人や資本金が1億円以下の法人は、1個当たりの取得価額が30万円未満のものは、取得年度に全額を費用処理することができます。ただし、その合計額は年間300万円が上限です。

ただし、この特例を利用して費用処理したものは、取得価額が20万円未満であっても、固定資産税(償却資産)の課税対象になることがあります。

(タックスアンサー:中小企業者等の少額減価償却資産の取得価額の損金算入の特例

3.投資促進税制


青色申告をしている個人や資本金が1億円以下の法人が、一定の要件に当てはまる資産を取得した場合には、通常の減価償却に上乗せをして償却することができる特別償却や、所得税や法人税から一定額を控除する税額控除を受けることができます。

年間でパソコンを120万円以上購入した場合や、ソフトウェアを70万円以上購入した場合などに利用可能です。

(タックスアンサー:中小企業等投資促進税制


なお、本投稿は投稿日現在の一般的な処理を説明したものですので、詳しくは最寄りの税務署又は顧問税理士等にお尋ねください。

[iOS] iPhone 5の縦長ディスプレイへの対応

本日、iPhone 5や新しいiPod touchが発表され、アプリは従来の480×320又は960×640のディスプレイとは違った大きさの1136×640に対応しなければならなくなりました。

既存のアプリを新しい端末で表示すると、上下に黒い帯ができるようですので、できれば早めに対応したいですよね。

僕は基本的にInterface Builderを使って画面を設計していますので、iPadとのユニバーサルアプリの場合はxibファイルをiPhone/iPod touch用とiPad用の2つを作らなければなりませんでしたが、今回はいくつかの設定だけで対応することができました。

やったことは、
  1. Default-568h@2x.png というスプラッシュスクリーンを追加した(サイズは640×1136)
  2. MainWindow.xibの中のWindowのSizeを「Retina 4 Full Screen」にした
だけです。

画面にWebViewなどを設置していて、余白が気持ち悪いときには、そのオブジェクトのAutosizingを調整すれば良いですね。

とりあえず、iPhone 6.0 Simulator上では、問題なく動きました。

あとは、実機で確認...するために実機を買わなくちゃ!