タグ

ブックマーク / shu223.hatenablog.com (38)

  • GitHub経由で海外から仕事が来た話 - その後のその後

    はじめて海外から(フリーランスとして)仕事をいただく、という貴重な経験ができたので、その経緯などを書いてみたいと思います。 きっかけ 7月末のある日、知らないメールアドレスから英語のメールが来ました。内容を一部だけ抜粋すると、 We are looking for someone to develop a very simple apple watch app and a companion apple phone app. というわけで、Apple Watch アプリをつくって欲しい、とのこと。内容を読むと加速度センサとジャイロを使いたいそうで、必然的に watchOS 2 案件になりそうです。 メールには明記されてませんでしたが、GitHub で公開している watchOS-2-Sampler を見て連絡くれたのかなと。(※もちろん面識はなく、共通の知り合いもいないので、これ以外にわざ

    GitHub経由で海外から仕事が来た話 - その後のその後
    efcl
    efcl 2015/08/15
    たまにあるGitHub経由で来る依頼に対する工数などの交渉事例
  • Xcode 6 時代のマルチデバイス対応 〜Size Classとベクター画像〜 - その後のその後

    とあるお仕事で、iPad をサポート(= Universal 化)してほしいという要望があり、せっかくなので iPhone 6 / 6 Plus (4.7 / 5.5 inch スクリーン)もサポートしようってことで、新しい Xcode 6 の新しい仕組みである Size Class を使って複数画面対応を行ないました。あと、同じく Xcode 6 から Asset Catalog でベクター形式がサポートされるようになったので、こちらもトライしてみました。 で、そのときに学んだ諸々の断片的なメモです。勘違いもあるかもしれないのでその際は優しくご指摘いただけますと幸いです。 ※ちなみに Size Class やベクター形式画像の使用は iOS 8 以上縛りではありません。単に Xcode 6 の新機能というだけなので。 Size Class の前提知識をつける 「Size Classsとは

    Xcode 6 時代のマルチデバイス対応 〜Size Classとベクター画像〜 - その後のその後
    efcl
    efcl 2014/10/02
    Interface BuilderとSize Classについて。 iPhone6に最適化される条件は起動画像の有無
  • 【iOS8】HealthKit の Apple 公式サンプルを実機で動作させようとすると出るエラーの対処方法 - その後のその後

    アップルが公開している HealthKit のサンプル をビルドして実機にインストールしようとすると、 The excutable was signed with invalid entitlements. というエラーが出てアプリが起動しません(2014年6月10日現在)。 この対処方法について、WWDCのラボで聞いてきました。 iOS Dev Center で プロファイルを作り直す Bundle IDを新しいプロファイルに合わせて変更する entitlements.plist の application-identifier の項を削除する 以上の手順で実機でも動作するようになりました。 プロファイルを作り直すときに、 使用する Identifier の HealthKit を Enabled にする のが最大のポイントです。

    【iOS8】HealthKit の Apple 公式サンプルを実機で動作させようとすると出るエラーの対処方法 - その後のその後
    efcl
    efcl 2014/06/12
    HealthKitのサンプルの動かし方
  • AV Foundationで120fpsスローモーション動画撮影を実装する - その後のその後

    iPhone5sだけのスペシャルな機能として、秒間120コマでの高速撮影 があり、標準カメラアプリではこれを利用した スローモーション動画撮影機能 が可能となっています。 これに類する機能をAVFoundationで実装できないかやってみたところ、うまくいったので、その方法を紹介します。 できたもの サンプルアプリをGitHubにアップしております。 GitHub - shu223/SlowMotionVideoRecorder: 120/240 fps SLO-MO video recorder using AVFoundation. Including convenient wrapper class. スクショ下部にあるように、 デフォルト / 60fps / 120fps を切り替えられるようになっています。 このアプリを使って撮ったものがこちら *1。 120fps Slow-M

    AV Foundationで120fpsスローモーション動画撮影を実装する - その後のその後
    efcl
    efcl 2013/12/17
    AV Foundationを使ってスローモーション動画を撮影する
  • iOS 7 の新機能のサンプルコード集『iOS7 Sampler』を公開しました。 - その後のその後

    iOS7にどんな新機能があるのかも把握しきれないままベータ期間が終わってしまい、せっかくのメジャーバージョンアップ祭に乗り遅れた感があったので、先週末に開催された『もくもく開発会@鎌倉 #2 by Qiita』にて、 iOS 7 で新たに加えられたAPI の使い方等を勉強しつつ、簡単なサンプルを集めたアプリをつくりました。 ソースコードは GitHub に置いてあります。 https://github.com/shu223/iOS7-Sampler 今のところ21個のサンプルが入っています。何か調べた折に随時追加していきます。 以下サンプルのリストです。 Dynamic Behaviors iOS7 では UIView サブクラスに簡単に物理演算を適用することができるようになりました。 サンプルでは、UIDynamicAnimator, UIGravityBehavior, UIColl

    iOS 7 の新機能のサンプルコード集『iOS7 Sampler』を公開しました。 - その後のその後
    efcl
    efcl 2013/09/24
    iOS7の見た目的な新機能のサンプルコード
  • Web コンテンツ内にネイティブ iOS アプリを埋め込めるサービス『app.io』の使い方 - その後のその後

    app.io は、『ブラウザ内でネイティブ iOS アプリを動かせるようにする』サービスです。 イメージとしてはiOSシミュレータをそのままWebコンテンツに埋め込める と考えるとわかりやすいかもしれません。タップ等のインタラクションが効いて、もちろん通信もします。アプリのランディングページや、ブログの紹介記事に埋め込んだりすると良さそうです。 で、「導入にはさぞ複雑な手順が。。」と思いきや、実際にアプリを動作させるまでの手順はめちゃくちゃ簡単です。 ファイルを1つアップするだけ。 以下で具体的に説明します。 導入手順 1. アプリをビルド いつもの普通のビルドです。Xcode でターゲットとして 「シミュレータ」を選択 し、ビルドします。 2. .appファイルをアップロード "Upload Your App" から、 下記パスにある .app ファイルを zip で固めて アップロード

    Web コンテンツ内にネイティブ iOS アプリを埋め込めるサービス『app.io』の使い方 - その後のその後
    efcl
    efcl 2013/08/18
    iOSシミュレーター埋め込みウェブサービス
  • フリーの iOS 向け音声認識/音声合成ライブラリ『OpenEars』の使い方 - その後のその後

    OpenEars は Politepix 社より提供されているフリーの iOS 向け音声認識音声合成Text to Speech, TTS)ライブラリです。 OpenEars 話した言葉を認識したり、入力した文字列を読み上げたり(mac の say コマンドみたいなもの)することができます。 試してみたところ超簡単に使えたので、自分のアプリに OpenEars を導入する方法を紹介します。 音声合成の導入方法 フレームワーク追加、ヘッダインポートといった一般的なライブラリの導入手順をのぞけば、基的にはメソッドを1つ呼ぶだけで導入できます。 1. フレームワークをプロジェクトに追加 解凍したフォルダ配下にあるFrameworkフォルダごとプロジェクトに追加します。フォルダには OpenEars.framework、Slt.framework ほか、言語モデルや辞書が入っています。 また

    フリーの iOS 向け音声認識/音声合成ライブラリ『OpenEars』の使い方 - その後のその後
    efcl
    efcl 2013/08/11
    音声合成
  • 『iOSアプリ開発 達人のレシピ100』という本を書きました - その後のその後

    2013年に入ってから4ヶ月間、無職のありあまる時間をつぎ込み執筆してきたが、ついに日発売となりました。 バルセロナで観光もせず執筆し、その後は鎌倉のコワーキングスペースに毛布を持ち込み半泊まり込みで執筆し、企画当初は230ページの予定だったところを大幅超過して370ページも書いてしまったほどに気合いを込めました。 タイトルには『達人のレシピ』とありますが、もちろん著者が達人というわけではなく、掲載しているレシピが達人レベルの難しさ、というわけでもなく、私が提案した『iOSアプリ開発に役立つTips』という地味なタイトルに対していろいろな大人の方々の意向が加わってこうなった、というものです(カッコイイので大変満足しております)。 の内容 ざっくり言うと、iOSアプリ開発まわりのTips集です。 概要紹介代わりに、『はじめに』に書いた内容を転載します。 iOS SDK がカバーしている

    efcl
    efcl 2013/05/28
    レシピ本
  • すれ違い通信アプリ開発で得たBluetoothの知見まとめ - その後のその後

    南東京iPhone開発者勉強会で話した際の資料です。 iPhoneBluetoothについての知見まとめ from Shuichi Tsutsumi すれ違い通信アプリ『EncountMe』の開発を通して得た iPhoneBluetoothまわりの諸々について、まとめています。 アジェンダだけ抜粋すると Bluetoothを利用するメリット(EncountMeでBTを選んだ理由) 実装方法 GKPeerPickerControllerを使う場合 GKPeerPickerControllerを使わない場合 できること/できないこと ユーザー操作なしでの接続確立 複数ピアとの同時接続 アプリ内でのOn/Of AndroidとのBluetooth通信 注意点 Wi-Fiとの干渉 といった内容になっております。 ※間違い、勘違いを含んでいる可能性が多分にありますので、 お気づきの点などあればご

    すれ違い通信アプリ開発で得たBluetoothの知見まとめ - その後のその後
    efcl
    efcl 2013/04/16
    GKPeerPickerControllerを使う/使わない方法. 複数ピアとの同時接続、WifiモードとBlueTooth、BlueToothがOFFの場合の動作
  • UILabel, UITextView, UITextFieldのテキストを NSAttributedString で装飾する - その後のその後

    iOS6から、UILabel, UITextView, UITextFieldに、 attributedText というNSAttributedString型のプロパティが追加されました。NSAttributedStringは文字列の属性を管理するクラスで、これを使用するとフォントや文字色、背景色、カーニング等の属性をテキスト内の指定範囲に対して適用することができるようになります。 基的な実装手順 基的な手順は次の通りです。 1. NSMutableAttributedStringオブジェクトを生成 initWithString: メソッドでオブジェクトを生成します。 NSString *str = @"NSAttributedString Sample"; NSMutableAttributedString *attrStr; attrStr = [[NSMutableAttribu

    UILabel, UITextView, UITextFieldのテキストを NSAttributedString で装飾する - その後のその後
    efcl
    efcl 2013/03/23
    NSAttributedStringの使い方
  • 自然言語のテキストを属性で区分する - その後のその後

    NSLinguisticTaggerを用いると、自然言語のテキストを品詞(名詞、動詞、代名詞)や「個人名」「地名」といった属性で区分(トークンに分解)することができます。日語の形態素解析も可能です。 使い方は非常にシンプルで、基的な手順は 1. スキームを引数に渡してNSLinguisticTaggerオブジェクトを生成 2. 処理対象テキストをセット 3. トークン分解開始 の3ステップです。 // スキーム NSArray *schemes = @[NSLinguisticTagSchemeLexicalClass]; // NSLinguisticTaggerオブジェクトを生成 NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:schemes options:0]; // 処理対

    自然言語のテキストを属性で区分する - その後のその後
    efcl
    efcl 2013/03/18
    トークナイズ。日本語の形態素解析
  • Core Image の遷移エフェクトを使う - その後のその後

    Core Image のフィルタ (CIFilter) には、CICategoryTransition というカテゴリーがあり、次のような遷移(トランジション)エフェクトが用意されています。 (2015.10.5更新) CIBarsSwipeTransition CICopyMachineTransition CIDisintegrateWithMaskTransition CIDissolveTransition CIFlashTransition CIModTransition CISwipeTransition CIAccordionFoldTransition(iOS 8) CIPageCurlTransition(iOS 9) CIPageCurlWithShadowTransition(iOS 9) CIRippleTransition(iOS 9) 次のような一風変わった遷移

    Core Image の遷移エフェクトを使う - その後のその後
    efcl
    efcl 2013/03/12
    遷移時のエフェクトをCore imageのマスクで行う
  • Core Image の全エフェクトを試せるサンプルコードを公開しました - その後のその後

    Core Image のフィルタ(画像にエフェクトをかけたり、色を調整したりするもの)を一通り試せるサンプルプロジェクトgithubに上げました。 というか、これ、1年以上前にアップしてこちらの記事に書いたのですが、ほとんど認知されることがなかったので、改めて紹介させていただきます。 こんな感じでフィルターを試せます。 (フィルタのパラメータはランダムに生成されるので、かける度に変わる場合もあります) プロジェクト一式、こちらからダウンロードできます。 https://github.com/shu223/FilterDemo 注意点として、選んでも何も起こらないフィルターがたくさんあります。 詳細は後述しますが、こちら、ApplePocketCoreImage というサンプルコードを数行いじっただけのものなので、あんまり多種多様なフィルタに対応したつくりになってはいないのです。。

    Core Image の全エフェクトを試せるサンプルコードを公開しました - その後のその後
    efcl
    efcl 2012/12/19
    Core Image のエフェクトを試せるサンプル
  • CALayer を用いた「影」の描画処理を軽くする - その後のその後

    CALayerを用いてUIViewを継承したクラスに影をつける方法は、下記のような感じで(CoreGraphicsで描画する方法などと比べて)わかりやすくお手軽で、質感もグッと増すので、ついつい多用したくなります。 self.layer.shadowOpacity = 0.5; self.layer.shadowRadius = 2.0; self.layer.shadowOffset = CGSizeMake(0.0, 0.0); ただ、影とか透過とかの処理はなかなか重いらしく、例えば UITableViewCell に置いた背景用画像に影をつけると、iPhone4ぐらいでも完全に体感できるぐらいに遅くなってしまいます。 で、このコードに下記の3行を付け加えてやると、体感でわかるぐらいに改善されます。 self.layer.shadowPath = [UIBezierPath bezie

    CALayer を用いた「影」の描画処理を軽くする - その後のその後
    efcl
    efcl 2012/12/17
    layerを使った影の描画を軽くする方法
  • シャッター音の鳴らないカメラアプリの実装方法 - Over&Out その後

    「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とか、カメラ機能をもっと自由にカスタマイズしたい場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使う必要があります。 先日、UIImagePickerController を使わないカメラアプリの実装方法という記事を書いたのですが、そこでは UIImagePickerController を使わず、AVFoundation を用いて静止画を撮影するところまで書きました。 今回は、シャッター音を鳴らさない、いわゆる「静音カメラ」「マナーカメラ」「無音カメラ」と呼ばれている機能を実装します。 静止画撮影はデフォルトの挙動としてシャッター音がなってしまうようになっていてそこは変えられないので、動画モードで撮影を開始し、必要

    シャッター音の鳴らないカメラアプリの実装方法 - Over&Out その後
    efcl
    efcl 2012/12/09
    AVFoundaionのキャプチャを画像として使う
  • たった1行でWebサービスと連携!UIActivity のまとめリポジトリをつくりました - その後のその後

    UIActivityとは? 地味だからかあまり話題になってない気がするのですが、iOS 6 の便利な新機能の1つに UIActivity というのがあります。これは、 こんな感じでメールとか写真アプリとかFacebook/Twitterとかに写真やテキストを渡すためのUIです。(超ざっくり) 実装も超簡単! 投稿も写真アルバムへの保存もこれ一つでOKかつ実装も超簡単なので、もうTwitter.frameworkとか、Social.frameworkとか、MessageUI.frameworkとかは使わなくなってしまいました。(※UIActivityViewControllerが内部的には使ってると思います) UIActivity (UIActivityViewController) の実装コードはこんな感じです。 - (IBAction)pressBtn { NSString *text

    たった1行でWebサービスと連携!UIActivity のまとめリポジトリをつくりました - その後のその後
    efcl
    efcl 2012/12/09
    UIActivityCollection. 色々ウェブサービス連携を集めたもの
  • シンプルで使いまわしやすいトゥイーンライブラリ "AHEasing" - その後のその後

    以前 gihyo.jp に『様々なアニメーションを実現するiOSアプリ用トゥイーンライブラリ3種を比較!』という記事を書かせていただいたのですが、そこで紹介した3つよりも良さげなトゥイーンライブラリがあったので、紹介します。 warrenm / AHEasing まだデモ動かしてソースをざっと見ただけなのですが、どこが良いと思ったかというと、 体は CAKeyframeAnimation+AHEasing カテゴリのみ easing.h / easing.c は、イージング関数の定義だけが切り出してあるので、カスタムイージング関数が作りやすい ソースが非常にシンプル CAKeyframeAnimation+AHEasing.m はコメント含め100行もない APIもシンプル。 デモがわかりやすい タップした場所に指定イージングでアニメーション移動する イージングカーブをグラフで表示してく

    シンプルで使いまわしやすいトゥイーンライブラリ "AHEasing" - その後のその後
    efcl
    efcl 2012/09/30
    アニメーション、イージング関数
  • iOS 6 新機能のサンプルコード/ライブラリのまとめ33個 - Over&Out その後

    英語のリファレンスだけじゃよくわからん、動くサンプルが欲しい!」という僕のために、NDA解禁されたてほやほやの iOS 6 関連のサンプルコード/オープンソースライブラリ等を集めてみました。 UICollectionView 1. iOS6-Playground iTunesから取得したムービーのカバー画像を、UICollectionView を用いて様々なレイアウトで表示するサンプルコードです。 UICollectionViewController, UICollectionViewCell, UICollectionViewLayout, UICollectionViewFlowLayout 等、UICollectionView 関連の新クラスは一通り使われています。 StoreKit に新たに追加された SKStoreProductViewController も使われていて、参考

    iOS 6 新機能のサンプルコード/ライブラリのまとめ33個 - Over&Out その後
    efcl
    efcl 2012/09/23
    iOS6で追加されたUICollectionView、MapKitの変更、Social Framework、UIActivity、CoreBluetoothのサンプル等
  • UITableViewController のreloadDataをコールするタイミング - その後のその後

    こちらのページで知ったのですが、下記のように書いておけばビューが表示されるたびにリロードされ、かつ初回表示時に二重にリロードされてしまうこともないらしいです。 - (void)viewWillAppear:(BOOL)animated { [self.tableView reloadData]; [super viewWillAppear:animated]; } なぜなら、 UITableViewControllerのviewWillAppear:メソッドでは、まだデータがロードされていない状態の時にだけ、reloadDataを呼び出すよう、実装されているようです。 とのこと。 これ知らなくてフラグ立てて管理してました・・・

    UITableViewController のreloadDataをコールするタイミング - その後のその後
    efcl
    efcl 2012/09/20
    "UITableViewControllerのviewWillAppear:メソッドでは、まだデータがロードされていない状態の時にだけ、reloadDataを呼び出すよう、実装されているようです。"
  • In-App Purchase で、プロダクトID が invalid になる場合の対処方法 - その後のその後

    たとえば下記のようなコードでプロダクト情報取得処理を行った場合に、 self.request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productId]]; self.request.delegate = self; [self.request start]; プロダクト情報の取得が完了すると productsRequest:didReceiveResponse: メソッドが呼ばるわけですが、そこで下記のように「無効なプロダクトID」をチェックすると - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { if ([resp

    In-App Purchase で、プロダクトID が invalid になる場合の対処方法 - その後のその後
    efcl
    efcl 2012/08/17
    アプリ内課金でproductsがinvalidになってしまう場合の確認事項。 JB端末は常にinvalidになる。