Monthly Archives: May 2013

Developer:iPhone iPad iOSデバイスの画面サイズとApp Storeアイコンサイズ一覧(2013年最新版)

iOSの各デバイスの画面サイズや、アプリ制作・申請時に必要なアイコンサイズをリスト化しました。 iOSデバイスの画面サイズとApp Storeアイコンサイズ 青文字はRetinaディスプレイモデル、ならびにRetinaデバイス表示用のファイルで、単位は全てピクセル(px)です。 iOSデバイスの画面サイズ iPhone3GS 320 × 480 iPhone4 960 × 640 iPhone4S 960 × 640 iPhone5 1,136 × 640 iPad (1’st Generation) 1,024 x 768 iPad 2 1,024 x 768 iPad (3’rd Generation) 2,048 × 1,536 iPad (4’th Generation) 2,048 × 1,536 iPad mini 1,024 x 768 iPhoneアプリアイコンサイズ icon.png 57 × 57 (10) icon@2x.png 114 × 114 (20) icon-small.png 29 × 29 (5) icon-small@2x.png 58 × 58 (10) iTunesArtwork 512 × 512 (90) iTunesArtwork 1024 × 1024 (180) ※()は角丸の半径 iPadアプリアイコンサイズ icon.png 57 × 57 (10) icon@2x.png 114 × 114 (20) icon-72.png 72 × 72 (12) icon-72@2x.png 144 × 144 (25) icon-small-50.png 50 × 50 (9) icon-small-50@2x.png 100 × 100 (18) iTunesArtwork 512 × 512 (90) iTunesArtwork 1024 × 1024 (180) ※()は角丸の半径 まとめ Appleの新しいデバイスが登場するのはとてもエキサイティングなのですが、開発側としては、もうこれ以上画面やアイコンのサイズを増やさないで貰いたいものです。

iPhone App:SmartScope 制作ノート(2)> アプリの設計

前回はアプリを作ろうと思った動機について述べました。 今回は、知識も経験もゼロの状態から、どうやってアプリの設計を行ったかを説明したいと思います。 コンセプト設計 まず、何をやりたいか。どうしたいか。最も重要な部分がここだと思います。この力が大きければ大きいほど、目標達成までの時間は短縮され、出来上がる成果物の完成度は高くなります。 やりたいことの洗い出し こういった感情を計るものさしはありませんが、とりあえずやりたいことをリストアップすることで、第三者視点で冷静に判断することは可能です。ここには、自分に都合いいことばかり書くのではなく、くだらないと思うことや、人に見せるにはあまりに恥ずかしい事も全て書き出します。 先に言っておくと、この時、あまりに書き出す量が少ないようであれば、そもそも本当に自分がやりたいことなのかを、もう一度考え直すべきです。書けないという心理的な抵抗が出ている時点で、その目標は未達になる可能性が高いです。 自分の場合、要約すれば以下の様な感じだったと思います。 何でもいいからアプリが作りたい アプリを作れるようになりたい アプリを売りたい ライトのアプリでいいと思うものがないから作りたい アプリ開発に関する難易度設定は低くしたい グラフィックにこだわりたい 日本だけでなく、世界の人々に使ってもらいたい 3ヶ月で完成させる 無料アプリは作らない 内部課金アプリが作りたい Objective-Cの作法を習得したい 1回使うと消されるアプリは作りたくない アプリリリースまでの一連の手順を理解したい 見せるのが恥ずかしいくらい単純なことばかりです(笑) ちなみに、この時点での自分のObjective-Cの能力はゼロですが、技術的な部分は後回しです。目標がしっかりしていれば技術は後でいくらでも身につける事ができる、という自信だけはありました。 要素の分類 これらの要素を、アプリの仕様に影響するかどうかでグループ分けしてみます。 【アプリの仕様には影響のないグループ】 何でもいいからアプリが作りたい アプリを作れるようになりたい Objective-Cの作法を習得したい 1回使うと消されるアプリは作りたくない アプリリリースまでの一連の手順を理解したい 【アプリのコンセプトに関わるグループ】 アプリを売りたい ライトのアプリでいいと思うものがないから作りたい アプリ開発に関する難易度設定は低くしたい グラフィックにこだわりたい 日本だけでなく、世界の人々に使ってもらいたい 3ヶ月で完成させる 無料アプリは作らない 内部課金アプリが作りたい これらの事から自分は、「Objective-Cを習得しつつ」「ライトアプリ程度の難易度のアプリ」を「3ヶ月で制作」し「有料アプリ」として「リリースしたい」と言うことが分かりました。 無料? or 有料? 有料アプリにしたかった理由は、これから作るものに対して「お金」という責任を負うことで、初めて制作するアプリに対し、ある程度のクオリティを保証しなければいけない、というハードルを自身に課したかったからです。 アプリが無料であることを理由に気楽に制作し、結果として一瞬の価値すら出ないものだけは、1発目に通るべきではないと感じていたのでしょう。 また、ユーザー視点に立った場合、購入前には無料アプリ以上に内容を検討し、一度対価を払ったアプリはすぐに手放したりはしないはずです。このことは「1回使うと消されるアプリは作りたくない」という項目とリンクしています。 課金制の無料アプリはマネタイズの設計や、課金システムの実装等、初めてアプリを制作する自分には課題が多すぎるため、この時点では却下となりました。 高すぎるハードルを設定してしまうと、助走に入る前に競技を離脱しかねません。 目標設定のミス 通常ならば、このまま知識と技術を身につけ、開発を進めていけば3ヶ月で完成させリリースできるはずなのですが、このアプリのコンセプトに関しては、絶対に目標が達成できないというとんでもないものでした。 一見すると何がいけないのか分からないと思いますが、Appleのアプリ審査のガイドラインの2.11項にその答えがあります。 一度でもガイドラインに目を通した方であれば、事前にこの問題は回避できたのですが、当時の自分はそういった知識もなく、結局リリースができないアプリを完成させてしまうことになります。 まとめ 次回からは、アプリ開発開始から初めてのiPhoneアプリの完成までを、実際のソースコードを交えながら説明していきたいと思います。 App:SmartScope 制作ノート iPhone App:SmartScope 制作ノート(1)> アプリ制作の動機 iPhone App:SmartScope 制作ノート(2)> アプリの設計 iPhone App:SmartScope 制作ノート(3)> 最初のアプリ完成 iPhone App:SmartScope 制作ノート(4)> 再設計〜リリース iPhone App:SmartScope 制作ノート(5)> 成果とセールス

iPhone App:SmartScope 制作ノート(3)> 最初のアプリ完成

前回は、アイデア、スキルが全く無い状態から、アプリのコンセプトが決定するまでの流れを書きました。 前回の内容をまとめると、 「Objective-Cを習得しつつ」「ライトアプリ程度の難易度のアプリ」を「3ヶ月で制作」し「有料アプリ」として「リリースしたい」 ということでした。 今回は実際のソースをみながら、この最初のライトアプリが完成するまでの過程を説明していきたいと思います。 アプリ完成まで まず、ヘッダーファイル(ViewController.h)にAVFoundationフレームワークをインポートします。 AVFoundationフレームワークは、iOSデバイスからの画像や音声の入出力を行うために、必要なオブジェクトがまとめられているものです。 ここでライトなのに何故?と思う方もいるかもしれませんが、もともとiPhoneのLEDはライトとしてではなく、暗い場所での動画や静止画の撮影をサポートするための照明機能なので、そのLEDのON/OFFを行うための命令は AVFoundation に組み込まれている、という訳です。 そして、以下のコードを ViewController.m にペーストします。 最後にIB(インターフェースビルダー)でボタンオブジェクトを作成し、IBActionと接続します。そのボタンの IBAction から torchOnFunction を実行すればiPhone背面のLEDが点灯し、torchOffFunction を実行すればLEDが消灯します。 終わりです(笑) もちろん、これで実際に申請に出したアプリが完成と言うわけではなく、アイコンデザイン、UIデザイン、各種設定画面やアニメーション効果を作成し実装していくことになりますが、既存の無料ライトアプリの基本は、この程度のコーディングで実現できます。 アプリの問題点 しかし、前回でも少し触れましたが、そもそもこのライトアプリというものは、Appleのアプリ審査ガイドラインの2.11項にリジェクト対象となることが明確に定義されています。 App Storeで既に存在するアプリの複製、特に、おなら、げっぷ、懐中電灯、カーマスートラアプリのように多く存在するアプリの場合はリジェクトされます リジェクトされることがあります、ではなく、特に、懐中電灯アプリはリジェクトされます、とあります。特に〜と強調し、明確にそのジャンルまで定義されている項目はここだけです。それだけ手がつけやすいアプリだからでしょう。 この事実を知らないまま、せっせとこのライトアプリをブラッシュアップし、最初のアプリ「SmartLight」が完成し、初めての申請を行いました。 初のリジェクト その後、リジェクト通知が来るのは早かったです(笑)知らなかったとは言え、ダメなことをやったわけですから当たり前です。最初からうまくいくとは思っていなかったので、リジェクト自体にショックはありませんでしたが、リジェクトされた理由にショックを受けました。 この後すぐガイドライン全てに目を通したのは言うまでもありません。 ここで、自分の作ったアプリが明確にリジェクトの対象であることを知れば、別コンセプトのアプリに方向を切り替え、一旦仕切りなおすはずですが、この時思ったのが「どうにかしてこのライトアプリをリリースさせたい」というものでした。 ライトの機能にこだわる理由 何故そう思ったのか、それはリジェクトされた原因であるガイドライン2.11項を見た時でした。もう一度引用します。 App Storeで既に存在するアプリの複製、特に、おなら、げっぷ、懐中電灯、カーマスートラアプリのように多く存在するアプリの場合はリジェクトされます 前述したように「懐中電灯はリジェクトされます」は明確な表現ですが、「App Storeで既に存在するアプリの複製」に関しては遵守されていないと感じました。複製とまではいかないまでも、App Storeには既に似たようなアプリで溢れかえっているからです。 次の2.12項も気になりました。 ユニークではない、あまり有用でない、単にウェブサイトをバンドルしたもの、永続する娯楽価値を提供しないアプリケーションはリジェクトされます また、10.6項では Appleと当社の顧客は、シンプルで洗練された、創造的なインターフェイスを好みます。彼らはより多くの働きを求めるが、そこにはそれだけの価値があります。Appleは高いハードルを設定しています。あなたのユーザインタフェースが複雑、または非常に良いとされる条件を満たせていない場合、リジェクトされることがあります とあります。開発者にとってはありがた迷惑な基準ですが、この10.6項にAppleの全てが込められていると思います。ここは普段から自分自身がものづくりに関して一番意識している部分なので、個人的には好きな項目です。 ガイドラインの本当の意味 これらをみてみると、ガイドラインの特定の項目に関しては、非常に柔軟性のある定義であることに気づくはずです。そして、このことはAppleのレビュワーには、開発者が申請に出したアプリのリリースに対しての権限に、ある程度の裁量が与えられていると言うことを意味します。 一見するとガイドラインさえ守れば、何でもリリース出来るように思いがちですが、実際はそんなことだけではないように感じられました。それと同時に、アプリの審査に関してAppleのレビュワーの裁量がどういったものなのかを、今回制作したアプリである程度把握しておきたいと思った訳です。 まとめ 次回は、この無謀な考えを実現するために、リジェクト後にどのようにしてコンセプトを再構築し、SmartScopeが完成したかをサンプルコードを交えながら説明していきたいと思います。 最後に今回紹介したライトアプリが、コピペだけで動くようにしたアプリのサンプルコードを載せておきます。 アプリ制作の基本を知るという意味においては非常に有効な手段ですので、是非実機でテストしてみてください。 制作手順 Xcodeの新規プロジェクトからSingle View Applicationでスケルトンを作成します。 IBで UIButton を toggleBtn という名前で作成します。 以下のコードを該当ファイルにペーストし、オブジェクトとIBActionを toggleBtn にリンクします。 ビルドして完成。 サンプルコード ViewController.h ViewController.m App:SmartScope 制作ノート iPhone App:SmartScope 制作ノート(1)> アプリ制作の動機 iPhone App:SmartScope 制作ノート(2)> アプリの設計 iPhone App:SmartScope 制作ノート(3)> 最初のアプリ完成 iPhone App:SmartScope 制作ノート(4)> 再設計〜リリース iPhone App:SmartScope 制作ノート(5)> 成果とセールス

WordPress:リンクを表示する方法(WordPress3.5以降対応)

デフォルトでリンクが表示されていない場合のリンク表示方法をメモ。 リンクを表示する方法 やり方はすごく簡単。管理画面から プラグイン>新規追加>検索>「link manager」と入力し検索 Link Manager をインストールすればリンクが表示されます。 まとめ マルチサイト機能を使っている場合は別の方法があるのですが、デフォルトでWordPressサイトを構築している方はこの方法が確実ではないでしょうか。
eyecatch_image

Adobe:さよならCreative Suite。さよならFireworks。アップデート終了の話

Fireworksのユーザーには悲しいお知らせです。 米Adobe SystemsがWebページ向けグラフィックスツール「Adobe Fireworks」の「開発終了」→「アップデート終了」を発表しました。ソースはITmedia ニュースです。 Fireworksアップデート終了 MacromediaがAdobeに買収された時点で、FreeHandやFireworksの先行きはある程度予想できていたことなのですが、それが現実のものとなろうとしています。 FireworksやDreamweaverはWeb2.0ムーブメント時にお別れしたので、これで自分にとっての元Macromedia製品は、Flashのみとなってしまいました。 しかし、Web画像に特化した独自のインターフェースやユーザビリティは、IllustratorやPhotoshopの不完全な連携に比べ、Fireworksに一日の長があるのも事実です。Web制作現場ではFireworksでデザインをおこなっている人も多いと思います。特に非デザイナーの人たちにとっては、非常に生産性の高いツールなのではないでしょうか。 【Adobe Fireworks CS5の画面キャプチャ】 Creative Suite が Creative Cloudへ さらに、このタイミングでFireworksのみならず、Creative Suiteに関してもCS6を最後に機能追加は行われなくなり、Creative Cloudへ完全移行するようなので、考え方によっては既存CSユーザーのCS6へのアップグレードの駆け込み需要が発生するかもしれません。 サブスクリプション制はお得? パッケージ販売とサブスクリプション制(月額課金)を比べれば、後者の方がライトユーザー層の獲得に貢献しそうなものですが、もともとのアプリケーションの値段自体が高価なので、それをベースに考えてしまうとおかしなことになってくる訳です。 企業での導入事例にはメリットが感じられますが、個人でパソコンのソフトに月々5,000円、ちょっと写真を編集したり、画像を作るだけに月々3,000円前後の料金を払うでしょうか。 特にPhotoshopとIllustratorに関しては、CSバージョンから「必要以上に親切な機能」が次々と実装されています。この必要以上に親切な機能に対しアップグレード期限を設け、欲しくもないものを買わされて続けているユーザーの実状を考えれば、若者どころかクリエイターのAdobe離れが起こるかもしれません。 まとめ どこの誰が言ったのか定かではありませんが、AdobeはPhotoshopだけで、この先何十年と食いつなげていくことができる、と言われた時代がありました。まだそれから10数年しか経っていません。 Flashを手に入れるためMacromediaを買収したものの、AppleがFlashに見切りをつけ、HTML5が主流となってしまった現在、Adobeの主力アプリケーションたちは、これまで同様デファクトスタンダードであり続ける事ができるのでしょうか。 Creative Cloudに関してはしばらく様子をみようと思います。

WordPress:テンプレートフォルダの場所を取得する

URLを取得する関数が色々あるので、各関数の違いをメモ。 テンプレートフォルダの取得 テンプレートの場所をURLで返す テンプレートの場所をURLで返す(get_template_directory_uri()と同じ) テンプレートの場所をローカルパスで返す まとめ 通常は1番目か2番目の関数でいいですね。

Objective-C:リモートコントロールイベントを実装する

リモートコントロールイベントを実装するためには UIViewController クラスのサブクラスをファーストレスポンダーにし、リモートコントロールイベントの通知を受け取るための設定が必要。 リモートコントロールイベントを実装する UIResponderクラスのcanBecomeFirstResponderメソッドをオーバーライド リモートコントロールイベントの通知を受け取り、現在のViewをFirstResponderにする イベントメソッドをオーバーライド まとめ Viewをファーストレスポンダーにする、というのがポイントですね。 関連する項目 Objective-C:シェイクジェスチャーを実装する

WordPress:よく使うテンプレートタグ・条件分岐タグ・インクルードタグの一覧

よく使うタグや構文を自分用にまとめました。 WordPressタグ一覧 インデックス テンプレートタグ 現在の記事の投稿タイトルを表示 現在の記事の本文を表示 現在の記事の日時を表示 現在の記事の投稿時間を表示 現在の記事の現在の記事のURLを表示 現在の記事の投稿者名を表示 現在の記事のタグを表示 現在の記事のIDを表示 記事カテゴリーをリンク付きで表示 ブログタイトルを表示 ブログ説明文を表示 サイトURLを表示 メインCSSのURLを表示 テーマファイルのディレクトリURLを表示 インクルードタグ テーマ内の content-page.php を読み込む テーマ内の header.php を読み込む テーマ内の sidebar.php を読み込む テーマ内の footer.php を読み込む テーマ内の comments.php を読み込む 検索フォームを読み込む 条件分岐タグ メインページ(トップ)の表示判定 ページの表示判定 個別記事ページの表示判定 カテゴリーアーカイブページの表示判定 フロントページの表示判定 テンプレートタグ 現在の記事の投稿タイトルを表示 <?php the_title(); ?> 現在の記事の本文を表示 <?php the_content(); ?> 現在の記事の日時を表示 <?php the_date(); ?> 現在の記事の投稿時間を表示 <?php the_time(); ?> 現在の記事の現在の記事のURLを表示 <?php the_permalink(); ?> 現在の記事の投稿者名を表示 <?php the_author(); ?> 現在の記事のタグを表示 <?php the_tags(); ?> 現在の記事のIDを表示 <?php the_ID(); ?> 記事カテゴリーをリンク付きで表示 <?php the_category(); ?> ブログタイトルを表示 <?php broginfo(‘name’); ?> ブログ説明文を表示 <?php broginfo(‘description’); ?> サイトURLを表示 <?php broginfo(‘url’); ?> メインCSSのURLを表示 <?php broginfo(‘stylesheet_url’); ?> テーマファイルのディレクトリURLを表示 <?php broginfo(‘template_url’); ?> Page Top インクルードタグ テーマ内の content-page.php を読み込む <?php get_template_part(‘content’,’page’); ?> テーマ内の header.php を読み込む <?php get_header(); ?> テーマ内の sidebar.php を読み込む <?php get_sidebar(); ?> テーマ内の footer.php を読み込む <?php get_footer(); ?> テーマ内の comments.php を読み込む <?php comments_template(); ?> 検索フォームを読み込む <?php get_search_form(); ?> Page Top 条件分岐タグ メインページ(トップ)の表示判定 <?php is_home(); ?> ページの表示判定 <?php is_page(); ?> 個別記事ページの表示判定 <?php is_single(); ?> カテゴリーアーカイブページの表示判定 <?php is_category(); ?> フロントページの表示判定 <?php is_front_page(); ?> まとめ WordPressは慣れてくると、本当によく出来ていることが理解出来ますね。