タグ

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

  • 【正式リリース】watchOS 2 の新機能のサンプルコード集『watchOS-2-Sampler』を公開しました - その後のその後

    昨日、ついに watchOS 2 が正式リリースされました。開発者待望のネイティブ動作するウォッチアプリ対応バージョンです。このアップデートに伴い、WatchKit には多くの機能が追加され、ClockKit や WatchConnectivity 等の新しいフレームワークも登場しました。さらに、iOSでは従来から使えたフレームワーク群(記事末尾にまとめました)もウォッチ側で使えるようになったことから、これらもwatchOSにとっては新APIであるといえます。 新しいAPIはどう実装するのか、実際に何がどこまでできるのか、快適に動作するのか、といった具体的なところを実際にコードを書いて動かして理解すべく、watchOS 2 の新機能のサンプルコード寄せ集めアプリ watchOS-2-Sampler をつくりました。ソースコードは GitHub に置いてあります。 https://githu

    【正式リリース】watchOS 2 の新機能のサンプルコード集『watchOS-2-Sampler』を公開しました - その後のその後
  • フリーランスiOSエンジニアの海外武者修行その1:ドイツ編 - その後のその後

    フリーの仕事をいったんお休みして、ドイツはベルリンに17泊19日の旅程で行ってきました。いよいよ今日が最終日なので、諸々ふりかえりたいと思います。 そもそもの目的 ドイツ行きを決めた動機は、「Hacker Paradise への参加」です。Hacker Paradise というのは「旅をしながら働く」人たちのコミュニティで、世界の国々を4週間ごとに移りながら活動しています。 http://www.hackerparadise.org/ もくもく会@ベルリン - その後のその後 で、そもそもの Hacker Paradise 参加の目的は、以下のようなものでした。 1. 仕事ではできない技術的な勉強をする時間を確保する iOS 9 や watchOS 2 の新機能について調べ、iOS-9-Sampler *1 / watchOS-2-Sampler に実装する 音声処理や画像処理等、今後強み

  • WatchKit もろもろ実機検証 - その後のその後

    Apple Watch をたまたま発売日当日ゲットできたので、いろいろと WatchKit アプリ開発に携わってきた 中で、「実機でやってみないと確信が持てないな。。」と思っていた諸々について検証してみました。 Xcodeからの実機インストール Parent App をインストールして、Apple Watch アプリからインストールするのか、どうなのか・・・? というところがよくわかってなかったのですが、やってみると何のことはない、Xcode から WatchKit App の Scheme を選び、Apple Watchとペアリングした iPhone を選択して Runするだけでした。 ちなみに親アプリを実機インストールするだけでもいけました。(ペアリング済みのWatchにアプリが自動的にインストールされる) あと実機デバッグ時も普通にブレークポイントで止まってくれました。 親アプリから

    WatchKit もろもろ実機検証 - その後のその後
  • WatchKitを実際にさわってみてわかったこと@iOSオールスターズ勉強会 #dotsios - その後のその後

    日開催された「iOSオールスターズ勉強会」という勉強会に登壇させていただいた際の資料です。 WatchKitを実際にさわってみてわかったこと ※Keynoteでつくってpdfで書きだしてアップしたので、残念ながら埋め込んでいた動画が見れなくなってます 概要 スライドを見るのが面倒な方々のために、ざっくり概要を書いておきます。 1. アニメーション編 WatchKit App 側に入れてある「Staticな」リソースを使用するアニメーションは `setImageNamed:` と `startAnimatingWithImagesInRange〜` を使えば高速にアニメーションできるのですが、WatchKit App の Asset Catalog にない「Dynamicな」リソースを使用する場合はどうアニメーションを実装すべきか?という話。 フレームごとの UIImage オブジェクトを

    WatchKitを実際にさわってみてわかったこと@iOSオールスターズ勉強会 #dotsios - その後のその後
  • iOSと機械学習 - その後のその後

    ビッグデータとかの機械学習隆盛の背景にある文脈や、その拠り所となるコンピュータの処理性能から考えても「モバイルデバイス向けOSと機械学習を紐付けて考えようとする」ことはそもそもあまり筋がよろしくない・・・とは思うのですが、やはり長くiOSだけにコミットしてきた身としては、新たに興味を持っている機械学習という分野と、勝手知ったるiOSという分野の交差点はないのかなと考えずにはいられないわけでして。。 そんなわけで、「iOS と機械学習」について雑多な切り口から調べてみました。 iOSで使える機械学習ライブラリ DeepBeliefSDK コンボリューショナルニューラルネットワークを用いた画像認識ライブラリ。iOSとかのモバイルデバイスで処理できるよう、高度に最適化してある、OpenCVと一緒に使うのも簡単、とのこと。 https://github.com/jetpacapp/DeepBeli

    iOSと機械学習 - その後のその後
  • 【iOS8】App Extension の実装方法 その1:Action - その後のその後

    App Extension とは? App Extension (Extensions) は、iOS 8 から導入される、新しいアプリ間連携のしくみです。 iOS では、以下の 6種類の Extension point *1を利用することができます。 Today Share Action Photo Editing Storage Provider Custom keyboard 大まかな仕組みは同じなのですが、見た目/機能は Extension point によって色々と違いがあり、実装方法も違ってくる(部分もある)ので、個別に説明していきたいと思います。 まずは一番説明しやすい "Action" から。 1. ターゲットを作成する Xcode の [File] > [New] > [Target] から、[Application Extension] > [Action Extensi

    【iOS8】App Extension の実装方法 その1:Action - その後のその後
  • 評判のいいiOSアプリ開発のTips ベスト20 - その後のその後

    『iOSアプリ開発に役立つTips』という Facebook ページをやっておりまして、そこで評判が良かった投稿(※)を 20 個ほど紹介します。 (※) Facebook ページの insights にある「クチコミ度」で判断しました アプリ実行中にコードを修正してそのまま実行中のアプリに反映させる アプリ実行中にコードを修正してそのまま実行中のアプリに反映させることができるXcodeプラグイン。 実機でもシミュレータでも使用可能とのこと。実機での動作検証中に修正して再インストールは時間かかるので、超ありがたいかも。 Injection for Xcode 投稿:2013/2/4 「PCのwebブラウザからiPhoneのカメラロールにアクセスできるようにするアプリ」のしくみ アプリ側でURLを発行している画面キャプチャがあるので、アプリにHTTPサーバ機能をもたせて(古いけどCocoaH

  • 【WatchKit】Apple Watch アプリのつくり方 & 全API解説 - その後のその後

    Apple Watch の SDK である『WatchKit』がリリースされてたので、さっそくさわってみました。 以下、サンプル実行方法、AppleWatchアプリの実装方法(所要時間1分、プログラミング不要!)、全クラス解説の順に書いていきます。 ※記事は、Appleによる公開ドキュメント(ログイン不要領域にあるもの)の範囲で書いています。 サンプル実行方法 何はともあれまずはサンプル実行。 iPhone6 シミュレータとかの並びに Apple Watch とかが来るのかなと思ってたので、一瞬サンプルをどう実行してよいのか面らいましたが、シミュレータメニューから [Hardware] > [External Displays] > [Apple Watch - 38mm] または [Apple Watch - 42mm] を選択 で、Apple Watch サイズの外部ディスプレイシ

    【WatchKit】Apple Watch アプリのつくり方 & 全API解説 - その後のその後
  • パフォーマンスチューニングに関するアップルのドキュメント - その後のその後

    アップルの『 iOSアプリケーションプログラミングガイド(英語版)』に、『パフォーマンスと応答性のチューニング』という章があって、これが今読むとかなり参考になったので、引用します。 個人的には、「リソースをあらかじめロードしておくと高速化になりそうだけど、メモリの無駄遣いになって結果的に遅くなるので絶対にやるな」というのが一番ささりました。 画像ファイルはUIImage化しておくと使うときに速そうだなーとか考えてたところだったので。 他にも個人的にためになった部分を太字にしてあります。 メインスレッドを妨害しない アプリケーションのメインスレッド上で実行する処理のタイプを必ず制限します。メインスレッドは、アプリケーションがタッチイベントやその他のユーザ入力を処理する場所です。 アプリケーションが常にユーザに応答することを保証するには、時間のかかるタスクの実行や際限なく続く可能性のあるタスク

    パフォーマンスチューニングに関するアップルのドキュメント - その後のその後
  • 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とベクター画像〜 - その後のその後
  • iOS 7 で使えるフォント名一覧 - その後のその後

    『iOS 7 の隠しフォント, ヒラギノ角ゴ W1/W2 を CSS で指定する』という記事を読んで、「あれ、これってPrivate APIにあたるんじゃない?」と思いフォント名一覧を出力してみたので、そのついでにその一覧をここに掲載しておきます。 (追記2013/10/17その1) iOS7で追加されたフォント、iOS6で追加されたフォントがわかるよう色分けしました。 (追記2013/10/17その2) iOS7の新機能のサンプルコード集、『iOS7 Sampler』 で新フォントを確認できるようにしました。 サンプルコードを提供されてもビルドできない!というデザイナーやディレクターの方は、ぜひお近くの開発者に実機インストールしてもらってみてください。 (追記ここまで) 何に使うのか? self.hogeLabel.font = [UIFont fontWithName:@"Helvet

    iOS 7 で使えるフォント名一覧 - その後のその後
  • iOS 8 の新機能のサンプルコード集『iOS8-Sampler』を公開しました - その後のその後

    WWDCでのアップルの発表によると、iOS 8 では4000以上もの API が追加されたとのことですが、新しいAPIはどう使うのか、実際に何がどこまでできるのか、といった具体的なところが、英語のドキュメントや動画をながめているだけだと正直あまりよくわかりません。やはり実際にコード書いて動かしてみるのが一番わかりやすい、ということで今年もつくりました、 iOS 8 新機能のサンプルコード寄せ集めアプリ『iOS8-Sampler』 ソースコードは GitHub に置いてあります。 https://github.com/shu223/iOS8-Sampler ※使い方は Xcode 6 でビルドするだけ なので、デザイナーさんやディレクターさんもぜひ最寄りのエンジニアにビルドしてもらってください。 中身について 今回はデザイナー okazu 氏の協力により立派なアイコンやスプラッシュ画像が最初

    iOS 8 の新機能のサンプルコード集『iOS8-Sampler』を公開しました - その後のその後
  • とあるシングルスタックエンジニアの生存戦略 - その後のその後

    昨日『好きなことで生きるエンジニアを知る(Part2)』というイベントで登壇してきました。「どうやったらおもしろく働き続けられるか?」みたいなテーマなので記事タイトルにある「生存戦略」とはちょっと違う印象を持たれるかもしれませんが、おもしろくないと生きていてつらいので、僕としては合ってるかなと。 もともとはスライドとか用意する必要なくて、聴講者含めてのディスカッション形式でやりましょうと主催の方には言っていただいてたのですが、僕の場合は準備なしでしゃべるとグダグダになるので、一応自分の考えぐらいは整理しとこう、ということでスライドを用意しました。 で、ここまで20分ぐらいで、あとは撤収までエンドレスで参加者の方々からの質問に答えていきつつ内容を補完する形式でした。 Q&Aのメモ 参考までに、参加者の方はフリーランスと会社員が半々ぐらい、エンジニア/非エンジニアの割合も半々ぐらいでした。

    とあるシングルスタックエンジニアの生存戦略 - その後のその後
  • リファクタリング講座メモ - その後のその後

    5/29にRainbowApps卒業生の方が主催された合宿に参加した際、そこでバスケさんが話されていた「公開リファクタリング講座」が非常にためになる内容だったので、そのときのメモを公開しておきます。 メモリまわりのデバッグ/リファクタリング leaksが有名なのでそればかり使いがちだが、memory allocationやzombiesでも見てみること live bytesが使用中のメモリ量 1.5Mぐらいなら画像使用してるアプリなら多くない 13Mになると、初代ipadなら落ちる可能性ある live bytesでソートすると、今一番メモリくってるオブジェクトタイプがわかる breakpointを右クリックでエディットできる アクションの設定・・・10回通った後で止まる、とか。 バンドルからplistを読み込む動作は重い(一時オブジェクトが生成されるのでメモリ空間も汚れる)ので基的には1

    リファクタリング講座メモ - その後のその後
  • デバイスにインストールされているアプリ一覧を取得する - その後のその後

    自分のiPhone(やiPad)に入っているアプリ一覧って当然取れないものと思っていたら、Bumpにアプリ一覧を表示する機能があって、どうやってるんだろうってことで検討してみました。 方法としては、次の2つが考えられます。 アプリのプロセス名一覧を持っておいて、そのプロセスが存在すればインストールされていると判断する アプリのカスタムURLスキーム一覧を持っておいて、そのカスタムURLスキームが使用可能であればインストールされていると判断する 1の方法の長所は、どんなアプリでも適用可能なこと。ただし、起動中もしくはバックグラウンドでタスクが生きているアプリしかとれない。 2の方法はタスクが生きていないアプリでもとれる代わりに、カスタムURLスキームをもっているアプリしかとれない。 で、どちらの方法も、あらかじめアプリのプロセス名、あるいはURLスキームを知っている必要がある、という大きな欠

    デバイスにインストールされているアプリ一覧を取得する - その後のその後
  • BLEデバイスと連携するiOSアプリ開発での「落とし穴」についてWWDCラボで聞いてみました - その後のその後

    Core Bluetooth / Bluetooth Low Energy で iOS アプリと連携する新規ハードウェアを開発したことのある人にとってはあるあるな話だと思うのですが、開発途中でペリフェラル側(外部デバイス)で GATT の内容を変更すると、iPhone の Settings から Bluetooth を Off/On しないと変更が反映されない、というのがあります。 このことを知らないと、 キャラクタリスティックの `value` が取れない -> BLE の接続状態を疑う -> Central / Peripheral 間での UUIDい違いを疑う etc... と、無駄なデバッグ作業をしてしまいかねません。 下記スライドでも最後の方のページで「ハマりどころ」として紹介されています。 BLEデバイス製作とIPHONEからのコントロールの基 しかし例えばデバイス側の

    BLEデバイスと連携するiOSアプリ開発での「落とし穴」についてWWDCラボで聞いてみました - その後のその後
  • 【iOS7】AsyncImageView が arm64 でクラッシュする件 - その後のその後

    AsyncImageView を arm64 で動かすと EXC_BAD_ACCESS でクラッシュする件の対処法です。 結論から言うと、objc_msgSend をキャストするよう修正すればOKです。 たとえばこれを、 objc_msgSend(connection.target, connection.success, image, connection.URL); こうします *1。 ((void(*)(id, SEL, id, id))objc_msgSend)(connection.target, connection.success, image, connection.URL); 情報ソース objc_msgSend 関数の修正方法については、公式ドキュメントの『64ビット移行ガイド』で説明されています。 An exception to the casting rule de

    【iOS7】AsyncImageView が arm64 でクラッシュする件 - その後のその後
  • 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』を公開しました。 - その後のその後
  • Push Notification おさらい - その後のその後

    プッシュ通知を実装するときに、「バックグラウンドで通知受けたときはapplication:didFinishLaunchingWithOptions:とapplication:didReceiveRemoteNotification:、どっちが呼ばれるんだっけ?」とかなんだかいつも自信なくなってきてドキュメントを見返したりしてしまうので、ドキュメントと、実際の動作を確認した内容をまとめておきます。 (参考ドキュメント) Local Notification および Push Notification プログラミングガイド(日語) (英語・最新版) アプリがバックグラウンドで動作中に通知が配信された場合の挙動 この場合、システムは、警告の表示、アイコンのバッジの表示、また、サウンドの再生を行う ことで通知を提示します。 アクションボタンがタップされると、システムはアプリケーションを起動しま

    Push Notification おさらい - その後のその後
  • 1