タグ

ブックマーク / blog.fenrir-inc.com (49)

  • アプリケーションアイコンを作るときに参考になるサイトまとめ

    こんにちは!デザイン担当の福島です。 今日は、わたしがアイコンを作成する際に見る参考サイトの紹介をしたいと思います。 あの機能のシンボルってなんだっけ?ってときに見る。 あれ、この形って一般的なのかな?と、作っているときに不安になることはよくありますよね!心配になったときに検索すると一般的に連想される形がわかって捗ります(一般的なシンボルもプラットフォームによって多少違ってくるので、数が多い = 正解とはいいきれませんが) たとえば『タブ』ってどんな形で表すのが一般的なんだろう?というような疑問にすぐに答えてくれます。 FIND ICONS 色んな検索に対応しているので、がっつり調べたいときはここで検索します。 ICON FINDER さくっと見たいときはこちら!16/24/32/48/64/ 等の一般的なサイズで絞りこめるので 16px で作られた、あの複雑な形のアイコンがみてみたい!な

    アプリケーションアイコンを作るときに参考になるサイトまとめ
  • 【連載】Bluetooth LE (1) Bluetooth Low Energy の基礎

    こんにちは。共同開発部 開発担当の伊藤です。 フェンリルの共同開発部ではこれまで数多くの企業様と、iOS、AndroidWindows Phone、Windows 8 と多様なプラットフォームで、多種多様なアプリを共同開発してきました。 その中で得たものは、これまでもここ Developer’s Blog でもご紹介してきましたが、これだけ数多くの環境でアプリが作れる人がいるのだから、ある特定の事柄についてプラットフォームを横断して紹介できるのではないかと考えまして、今週からしばらく Bluetooth Low Energy について集中的にご紹介していきたいと思います。 最近 Bluetooth Low Energy 対応の機器もいろいろ増えてきており、これまで iOS だけだったのが Android 4.3、Windows 8.1 でも使用できるようになってきて話題になっている技術

    【連載】Bluetooth LE (1) Bluetooth Low Energy の基礎
  • NSProxy を使って UIWebView のイベントハンドリングをフックする

    こんにちは。開発担当の福井です。 突然ですが、みなさん NSProxy をご存じでしょうか? NSProxy は Foundation の中で唯一 NSObject を継承しないクラスです(NSProxy のサブクラスを除く)。 また、その実装はほとんどありません。 今回はその NSProxy を使って view に対するメソッド呼び出しをフックしてみようというお話です。 NSProxy の使い方 名前からも推測できるように、NSProxy は Proxy パターンを実現するためのクラスです。 メッセージの呼び出しが動的に解決される Objective-C において Proxy オブジェクトを実現するのは実に簡単です。 NSProxy は、ただ自身に送られたメッセージを、そのまま別のオブジェクトに受け流すことで Proxy としての機能を実現します。 Proxy オブジェクトを作ってみる

    NSProxy を使って UIWebView のイベントハンドリングをフックする
    Bowz13
    Bowz13 2014/01/17
    NSProxy を使って UIWebView のイベントハンドリングをフックする
  • 【iOS】XMLパースエラーNSXMLParserSpaceRequiredErrorの対策

    こんにちは、開発担当の常です。 通常、XMLデータを解析する場合、NSXMLParserを使って、NSData *dataを NSXMLParser* parser = [[NSXMLParser alloc] initWithData:data]; といった感じで渡してやれば大丈夫です。 でも、XMLデータの文字エンコードがShift_JISである場合、 <?xml version="1.0" encoding="Shift_JIS" ?> <Project> <project_name>★☆★最優先案件 プロジェクト★☆★</project_name> </Project> 非常に稀なケースですが、NSXMLParserSpaceRequiredErrorというパースエラーが発生します。 特に、iOS 6 において、発生頻度が高いようです。 iOSのドキュメントに、下記のような説明があ

    【iOS】XMLパースエラーNSXMLParserSpaceRequiredErrorの対策
  • 【iOSアプリ開発裏話】Sleipnir Mobile 1.3 で Hold And Go をどう改善したのか

    こんにちは。iOS アプリ開発担当の宮です。 Hold And Go はリンクを長押しした時に背面で新規タブしてくれる Sleipnir Mobile の便利機能です。以前のバージョンではリンクがハイライトするにも関わらず、背面でタブが開かれずに何も起きないことがありました。せっかくの便利な機能がもったいないので、バージョン1.3 で改善をしました。 今回は、なぜ Hold And Go がたまに失敗するのか、またそれをどうやって改善したのかについて説明しようと思います。 ■ Hold And Go の仕組み Hold And Go は次の流れで実行されます。 1. iOS でのタッチポイントを HTML 上の座標に変換する 2. JavaScript の elementFromPoint でその座標にある DOM の要素を取得する 3. 取得した要素にリンクがあれば、その URL を背

    【iOSアプリ開発裏話】Sleipnir Mobile 1.3 で Hold And Go をどう改善したのか
    Bowz13
    Bowz13 2013/07/17
    【iOSアプリ開発裏話】Sleipnir Mobile 1.3 で Hold And Go をどう改善したのか
  • 【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜

    こんにちは。 Sleipnir Mobile for iPhone / iPad 開発担当の宮です。 調べてみると、Sleipnir Mobile の最初のコミットは 2010年9月6日で、もう3年近く開発しているようです。最初はこんな貧弱な API でブラウザなんて作れるわけ無いと思っていましたが、なんとかなるものですね。今では多くのユーザーさんに使っていただけるプロダクトになりました。 今回は、この3年間で、使ってきた UIWebView の技を紹介したいと思います。詳細な方法については書きませんが、UIWebView で何ができて何ができないのかはわかるかと思います。それぞれの詳細なやり方については機会があれば書いていきたいです。 目次 長くなりそうなので、目次を用意しました。 余裕があればアップデートするので、ブックマークでもしておいてください。 UIWebView の API

    【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜
  • 【非デザイナー向け】フラットデザインに欠かせないピクトグラム的アイコンの作り方

    iOS 7 にもフラットデザインの波がやってきましたね…! フラットデザインには欠かせない、ピクトグラム的アイコンはリッチデザインなアイコンと比較して簡単に作れそう!作ってみよう!という方もいるのではないでしょうか。 ちなみにピクトグラムというのは記号や絵文字を指し、共通言語としての役割を持っています。 見かけは簡単そうですが奥は深いのです、、ただ、技術面での高度さはあまり必要ないと思います。表現方法が限られる分難しい部分も多いですが… 今回は興味があるけどどこから手を付ければいいの?という方向けにピクトグラム的アイコンの作り方を紹介したいと思います。 アイコンのモチーフを決める アイコン案はこんな感じで出しています。 例として「医療」アイコンで考えてみました。こういった図にして 考えると道筋が立てやすく、後で迷った際に復帰しやすいです。 その場で図が浮かぶ物は描き足しておきます。 決める

    【非デザイナー向け】フラットデザインに欠かせないピクトグラム的アイコンの作り方
  • Apple が公開しているオープンソースソフトウェアいろいろ

    こんにちは。Mac / iOS アプリ開発担当の金内(Emacs 派)です。 UNIX ベースである Mac OS X は、たくさんのオープンソースソフトウェアから成り立っています。基盤である Darwin はカーネルを含む OS そのものがオープンソースですし、 OS X の兄弟にあたる iOS や Xcode を中心とした開発環境もまた、オープンソースソフトウェアを多く含んでいます。 いろいろと秘密主義で有名な Apple ですが、ソースコードを公開・共有することでオープンソースの世界に多くの貢献をしているのも事実です。 WebKit Apple とオープンソースといったときに最もピンとくるのは WebKit プロジェクトではないでしょうか。 フェンリルのウェブブラウザ Sleipnir とも切っても切れない関係にある、ウェブコンテンツのレンダリングエンジンです。 KDE プロジェクト

    Apple が公開しているオープンソースソフトウェアいろいろ
  • 【iOS/Mac開発】GUI 開発の秘薬「あとで実行」でトラブル回避

    こんにちは。iOS / Mac アプリ開発担当の金内です。 今日は GUI アプリ開発で役立つのに、通常の学習フローにはなかなか登場してこないワザをご紹介します。 イベント駆動型プログラム iOS や Mac で使うような GUI アプリは一般に「イベント駆動型(イベント・ドリブン)」と呼ばれていて、ユーザーやシステムの動きがイベントとしてアプリケーションに通知され、処理が実行されるという作りになっています。 たとえば、スクロールバーをドラッグすると「スクロールしたよ」というイベントが発生して、そのウインドウの内容がスクロールしたり、ウェブブラウザのリンクをクリックすると「クリックしたよ」というイベントが発生してリンク先のページをロードしたりするわけです。 このところ「〇〇駆動」という言葉をよく見かけますが、この「イベント駆動」はソフトウェア関連では元祖といってもいいくらい古くから使われて

    【iOS/Mac開発】GUI 開発の秘薬「あとで実行」でトラブル回避
  • NSSharingService を使ってかっこいい共有を実装する

    こんにちは。Mac/iOS アプリケーションエンジニアの福井です。 Mountain Lion から OS X でもNSSharingServiceの導入により外部サービスとの連携が簡単にできるようになりました。NSSharingServiceは iOS の Social.framework とはひとあじ違い、OS X ならではのリッチなトランジションも実装することができます。今日はそんな NSSharingService の使い方をご紹介します。 NSSharingServiceとは? Sleipnir から Web サービス連携が使える Fenrir Pass Connect は便利ですが、中には Mountain Lion から追加された OS X の設定を使いたい人もいるでしょう。Mountain Lion から OS X に統合された共有機能を使うには、NSSharingServ

    NSSharingService を使ってかっこいい共有を実装する
  • iOS アプリのバイナリを少しのぞいてみる

    Mac / iOS 開発担当の松です。 皆さんご存知のように iOS アプリを作るのに欠かせない Objective-C は、メソッドの解決が動的なこともあり、C言語のファミリーでありながら強力なリフレクション機能を備えています。そのリフレクションの必要性等から、実行ファイルには様々な情報が埋め込まれていて、何気なくバイナリエディタで開いただけで、テンションが上がるバイナリに仕上がっています。のぞかずにはいられませんね。という訳で今日はこのバイナリを少しのぞいてみたいと思います。 まずはバイナリの概要を抑えておきましょう。iOS 上の実行ファイルは Mach-O という形式で(まーく・おーと読むらしい)、これは WindowsLinux でいうところの EXE や ELF にあたります。この Mach-O のフォーマットについては アップルからドキュメントが提供されていますね。 細

    iOS アプリのバイナリを少しのぞいてみる
  • 文字列を Objective-C っぽくクールに作る

    こんにちは。Sleipnir 3 for Mac 開発担当の福井です。 Mac/iOS エンジニアのみなさん、突然ですがコーディング中に文字列を作るとき、NSString の API はきちんと使えていますか?ちょっとした文字の追加に NSMutableString を作ったり、[NSString stringWithFormat:] を使って新しく文字列を作ったりしていませんか?できているけど少しむりやりでなにかダサい、そんなコード書いていませんか?多くのパターンでは Foundation の API を使うことでより簡潔に表現することができます。基API を的確に使って、ワンランク上のエンジニアを目指しましょう。 文字列の追加 冒頭でも触れましたが、ちょっと文字列を追加したいというケースはよくあると思います。しかし、いちいち編集用の NSMutableString を作ったり、[

    文字列を Objective-C っぽくクールに作る
  • 高品質な UI や Web のデザインが短時間で作れるおススメの Fireworks 拡張機能 4つ

    こんにちは、イメージ担当の長谷川です。 「品質を上げれば速度が落ちるし、速度を上げれば品質が…」 デザイナーにとってはこの品質と速度が非常に悩ましいですよね。 今回は UI や Web デザインのモックアップなどを、品質を保ったままサクっとデザインするときに役立つ Fireworks の拡張機能をご紹介します。 1. 作ったデザインを崩さずにまとめて縮小できる「Smart Resize」 Web ページのデザインデータを使ってスマートフォン用など異なったサイズのデザインを作りたいときなどに最適です。 【使い方】 インストールするとコマンドに「Smart Resize」が追加されます。 サイズ調整をしたいデザインを選択して コマンド> Smart Resize > Attach を選択します。 後は黄色のコントロールポイントでサイズを調整するだけでテキストの改行などデザインを保ったまま自動的

    高品質な UI や Web のデザインが短時間で作れるおススメの Fireworks 拡張機能 4つ
  • UIKit とスレッドのお約束

    アプリが小気味よく動くようにするために、メインスレッドでの重たい処理を避けて、適宜バックグラウンドスレッドに処理を回すことはよくあります。 このとき注意が必要なのは、バックグラウンドでの処理結果を画面に反映させる時の以下のお約束です。 UIKit のオブジェクトはメインスレッド以外からアクセスしてはいけない Apple のドキュメントとしては Cocoa Fundamentals Guide に “All UIKit objects should be used on the main thread only” と書いてあります。この制限は UIKit 特有ではなく、Java の Swing などでも共通の設計です。GUI のパフォーマンスを良くするために、スレッドセーフをあえて捨てて単純化しているのです。 ではどうすれば良いのかと言うと、バックグラウンドスレッドからメインスレッドに処理を

    UIKit とスレッドのお約束
  • クラッシュの原因にありがちなイージーミス

    アプリがクラッシュする原因はさまざまです。その中でも、解放(dealloc)済みオブジェクトへのアクセス (EXC_BAD_ACCESS) によるクラッシュの原因としてありがちなイージーミスを2つ挙げてみます。 インスタンス変数に autorelease なオブジェクトをそのまま代入 インスタンス変数は通常そのクラスのインスタンスがオーナーシップを持つ必要があります。この場合の典型的な書き方として次の2つが挙げられます。 retain で宣言されているプロパティ経由でオブジェクトを代入する場合(self.button = aButton;) インスタンス変数に代入するときに retain 等 retainCount を増やすメッセージを送っておく場合(button = [aButton retain];) この2つの書き方が混在していると次のような間違いが起こりがちです。 UIButton

    クラッシュの原因にありがちなイージーミス
  • メソッドの遅延実行

    あるメソッドを一定時間後に実行したい、ということはよくあります(これを、メソッドの遅延実行と呼ぶことにします)。そんなときにまず思いつくのは NSTimer を使う方法ではないでしょうか。 NSTimer を使う以外にも、NSObject にある次のメソッドで簡単に同じことができます。 NSObject - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay 例として、iPhone 標準搭載の写真アプリを見てみましょう。 写真アプリでは、写真を見ている間に一定時間ユーザの操作が無ければ、ツールバーとナビゲーションバーが消えます。 この処理は次のようなコードで実現できます。 // self は UIViewController … { … // 一定時間

    メソッドの遅延実行
  • Core Animation で画像を回す

    データのダウンロード中など待ち状態のときに、画像をくるくる回して読み込み中だということを表したいことってありますよね。アニメーション GIF や複数の画像の切り替えでも表現できますが、今回は1枚の画像を Core Animation の transform プロパティを使って回す方法を紹介したいと思います。 まず、アニメーションには CABasicAnimation を使います。作成するときに、animationWithKeyPath に transform をセットします。 つぎに、回転のはじめと終わりの角度を設定します。時計回りの場合は fromValue を 0、toValue を 2π にします。反時計回りと場合は fromValue と toValue の値を入れ替えてください。 そして、valueFunction で回転軸を決めます。今回は z 軸で回転させたいので、kCAVa

    Core Animation で画像を回す
  • UITableViewController を使わない設計

    iOS のアプリ開発における主役クラスの1つである UIViewController。中でも、実用系のアプリを作る際には UITableView を表示するための UITableViewController が活躍してくれます。Xcode の新規クラスのテンプレートにも含まれていますね。 UITableViewController は UIViewController のサブクラスで、UITableViewDataSource と UITableViewDelegate という、UITableView を扱うのに必要な2つのプロトコルに適合しています。UITableView を表示する画面なら、基的に UITableViewController クラスだけで事足りてしまいます。 とても便利なクラスである反面、複雑な処理をしようとすると、どんどん肥大化してしまうという欠点もあります。原因の

    UITableViewController を使わない設計
  • 画面レイアウトを行うときに便利なツール

    先週の荻野のブログエントリではアプリケーション上の各要素間の間隔について書かれていました。デザイナが導き出した各要素間の間隔を限りなく忠実にコーディングするための助けとなるツールを紹介したいと思います。 xScope Shareware $26.95 http://iconfactory.com/software/xscope マウスカーソルのある場所から上下左右の距離を自動ではかってくれる Dimensions 機能が大変便利です。シミュレータ上で動いているアプリの各要素間の距離を測りたい時にはマウスカーソルを動かしていくだけです。Dimenshions 機能以外にも Ruler 機能、Loupe 機能など盛りだくさんです。 Free Ruler Free http://www.pascal.com/software/freeruler/ Ruler 機能のみのシンプルなところと Fre

    画面レイアウトを行うときに便利なツール
  • UITableViewCell の accessoryView を使うと少し楽

    UITableViewCell の accessoryView というプロパティについてです。それほどマイナーなプロパティでもないので、実は当たり前なのかもしれませんが、最近便利さに気付いたので紹介します。 UITableViewCell には accessoryType というプロパティがあって、3種類のアクセサリが付けられます。 accessoryView は、これをカスタムな見た目にしたい時に使うぐらいのものだという認識でした。実際そうなのですが、よく考えたら UIView ならなんでも入れられるわけで、UISwitch だって入れられるんだなと。設定画面でスイッチがよく出てくるのですが、今まで contentView に addSubview していて、位置を合わせるのが面倒だと思っていました。でも accessoryView なら次のコードで終わりです。frame の origi

    UITableViewCell の accessoryView を使うと少し楽