タグ

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

  • iOS11 – DepthAPI と OpenGL ES を組み合わせて被写界深度エフェクトをかけてみた

    こんにちは。アプリケーション共同開発部エンジニアの浪花です。 iOS11 が提供されて5ヶ月が経過しようとしていますが、個人のアプリや日々の業務で新機能を使った開発が出来ていますでしょうか。 今回 iOS11 で提供されたものの中で Depth API に興味があり OpenGL ES と組み合わせて被写界深度エフェクトをかける簡単なアプリを作成したので紹介したいと思います。 Depth API iOS11 で追加された Depth API とはカメラから近い物体は白く、遠い物体は黒くといったように空間の深さ(深度情報)を可視化し、画像として出力できる機能になります。 現時点では2つのカメラを搭載した端末でしか試せることが出来ませんが、この機能は今までのカメラでは平面的なデータでしかフィルター処理などできませんでしたが、深度の情報が追加されたことにより、別のアプローチで様々な事ができそうで

    iOS11 – DepthAPI と OpenGL ES を組み合わせて被写界深度エフェクトをかけてみた
  • 【iOS 11】 Web認証用の新クラス「SFAuthenticationSession」

    こんにちは、アプリケーション共同開発部の中澤です。 先日、「iOS 11 で Safari View Controller の Cookie 等の共有機能が無くなる (予定)」という記事で、 Safari View Controller の仕様変更について「不便になるなぁ」などとボヤいておりましたが、あれから少し後、 SafariServices フレームワークに新しく SFAuthenticationSession というクラスが追加されました。これを使うことで、 Safari View Controller の当初の利便性をある程度保って Web 認証が出来るようになりました。🎉 以下、その詳細についてご紹介します。 SFAuthenticationSession とは? SFAuthenticationSession は対象の Web サービスの API トークン を取得するための

    【iOS 11】 Web認証用の新クラス「SFAuthenticationSession」
  • iOS ビルド環境を Jenkins と Docker と Ansible でコード化する(実際のコード付き)

    こんにちは。アプリケーション共同開発部の門多です。 昨年の終わり頃に、 Mac mini 増殖中!iOS アプリのビルドをマスター・スレーブ化して時間を短縮するという pixiv さんの記事がありましたが、フェンリルの共同開発事業アプリ開発でも、2012 年ごろから Jenkins を使ったビルドを行っています。 なるべく多くの人に使ってもらえるように、基的に制限しない運用を行なっていました。しかし数年経ってみると、OS やビルド環境の変化もありましたし、現在の構成が色々と問題を起こしていることもわかってきました。現在ビルド環境の改善を行っているので、ついでに Keychain 管理の自動化や Xcode 自動インストールなど、これまで経験した色々な問題とその対応方法をまとめました。かなり長い記事になってしまいましたが、実際に使っているプログラムをそのまま掲載していますので、そのうち一部

    iOS ビルド環境を Jenkins と Docker と Ansible でコード化する(実際のコード付き)
  • Jenkins はもうオワコン? Concourse CI で iOS 向けビルドをやってみた

    忙しい人向けのまとめ Concourse CI は Docker による構築が容易で、CLI による処理を自動化出来ますが、シンプルなUIしか持っていません。 そのため、Jenkins のように特定の個人に依存することなく、分散化した自動化のためのプラットフォームとして有望です。 モバイルアプリのビルドにも使えるので実際に試してみました。 Jenkins は最高! そう考えていた時期が俺にもありました こんにちは、普段は iOS 向けのアプリを作っている森です。 弊社では、以前よりアプリのビルドを始め定型作業の内、自動化出来るものを Jenkins で行うこととしております。 そもそもの導入の目的は、提供するアプリの品質を安定させるため、環境が変化しやすい個人の端末ではなく、特定のビルド専用機でビルドを行う必要があり、それを実施できる WebUI が欲しい、というところにありました。 導

    Jenkins はもうオワコン? Concourse CI で iOS 向けビルドをやってみた
  • iOS 11 で Safari View Controller の Cookie 等の共有機能が無くなる (予定)

    こんにちは、アプリケーション共同開発部の中澤です。 iOS 9 から登場した Safari View Controller (SFSafariViewController) は、 Cookie 等のデータが Safari と共有される Web ビューとして認知されています。 この仕様によって各種 Web サービスのログイン状態等も共有され、それによってユーザーはそれぞれのアプリで認証が容易になっていました。 しかし、 iOS 11 ではその仕様が変わり、 Safari や各 iOS アプリで表示される Safari View Controller は、Cookie やローカルストレージ等データをそれぞれ別の場所に保存するようになると、 WWDC 2017 にて発表されました。 以下、その発表があった What’s New in Safari View Controller からの引用です。

    iOS 11 で Safari View Controller の Cookie 等の共有機能が無くなる (予定)
  • Xamarin.iOS で始める iOS アプリ開発

    こんにちは。 アプリケーション共同開発部 名古屋開発課の辻です。 2016 年 2 月に、Microsoft 社が Xamarin を買収したことは大きな話題となりました。 しかしながら、Xamarin でモバイルアプリケーションを作ることのメリットは何なのか、Xcode での開発と比較して不自由な部分はないのかなど、実際に触ってみないと分からない部分が多いのではないかと思います。 そこで、Xcode を用いて Objective-C や Swift で開発してきた iOS 開発者が、Xamarin.iOS を導入することで感じたことをお話ししたいと思います。 クロスプラットフォーム開発の再興 クロスプラットフォーム開発は、iOS / Android など、個別のプラットフォームに向けて開発する工数を削減することを目的として、HTML5 の普及期に盛り上がりを見せましたが、WebView

    Xamarin.iOS で始める iOS アプリ開発
  • PDF.js の導入方法と苦労した話

    こんにちは。 島根支社の原田です。 JavaScriptPDF を表示する際にライブラリとして PDF.js が話題にあがると思います。 PDF.js は名前の通り JavaScript で実装されているライブラリです。 HTML5 の技術を使っているため、最新のブラウザであればほぼ問題無く使うことができます。 稿では、PDF.js を利用した PDF の表示までの導入部分と、実装で苦労した話をしていきます。 下準備 最初に、プロジェクトのディレクトリを作成し、npm init します。 $ mkdir fenrir-pdfjs $ cd fenrir-pdfjs $ npm init 次に、最低限必要なパッケージをインストールします。 $ npm install --save-dev browserify $ npm install --save-dev pdfjs-dist こ

    PDF.js の導入方法と苦労した話
  • 多解像度時代を生き抜くための Autolayout ウル技 3 選

    こんにちは。共同開発部 開発担当の伊藤です。 Fenrir Advent Calendar 2014、ついに最終日となりました。 ウル技という言葉をご存じの方、どれくらいいらっしゃいますでしょうか。いわゆる"裏ワザ"の別表記で、ファミコン/スーファミ全盛期に使われた言葉です。(ちなみに"ウルテク"と読むそうです) この時期を生き抜いた男子で、ウル技ときいてときめかない人は少ないはず!伊藤は大技林、出るたび毎回買っていました。 今年は iPhone 6 / 6 Plus の登場で、いよいよ iOS も多解像度に突入してしまいました。たぶんこの先ガンガン解像度が増える覚悟が必要になってくるはず。 iOS アプリエンジニアが多解像度時代を生き抜くために必要なスキルと言えば Autolayout。しかしながらこいつがなかなかくせ者で、うまく使いこなすにはいろいろなテクニックが必要になります。 そこ

  • 拡張性は無限大!Android の新コンポーネント RecyclerView の真価を探る

    こんにちは。共同開発部の北川です。 Fenrir Advent Calendar 2014 20日目です。 今年、もっともグッときた出来事といえば Android 5.0 Lollipop のリリースですよね! Lollipop では Material Design が採用され、色と重なりでアプリの世界観を表すようになりました。これまでの Android とは異なり、アニメーションやインタラクションを重視するデザインへと進化しています。 見た目の変化もさることながら、Lollipop では機能面も数多く強化されています。 その中の一つ、RecyclerView は非常に柔軟で表現力の高い UI コンポーネントです。 RecyclerView を使った新しい表現に挑戦してみました。 RecyclerView とは Android ではデータコレクション表現のために ListView と Ad

    拡張性は無限大!Android の新コンポーネント RecyclerView の真価を探る
  • Swift でもう一度 iOS/OS X アプリ開発に挑戦してみませんか?

    こんにちは。開発担当の木村です。 今年も毎年恒例の一大イベント WWDC が開催されました。 iOS 8 や OS X 10.10 とあわせて4000を超える API が発表され、 開発者のためのイベントとして、例年以上にふさわしい内容だったのではないでしょうか。 中でも私がビビッと来たトピックスは新言語「Swift」の発表です。 これまで Objective-C で開発してきた iOS / OS X アプリがどう変わっていくのか、楽しみで仕方ありません。 iOS / OS X アプリを開発しようと思ったけど、Objective-C がわかりづらくて諦めた。。。 そんな方々も Swift でもう一度  iOS/OS X アプリの開発に挑戦してみませんか。 変数 NSInteger,NSString…と Objective-C のクラスライブラリは独特の型を持っています。 いつも使っている型

  • 今最も注目されている設計手法!MVVM を Android アプリ開発に取り入れてみた

    こんにちは。共同開発部開発担当の北川です。 クロスプラットフォームなアプリ開発では Xamarin の使用はビジネスロジックの共通化が可能となり非常に効果的です。 すべてのアプリを単一の言語(C#)で実装することができる点だけでも魅力的ですが、MVVM 設計によりその再利用性を高めている点こそがその真価を発揮しているとも言えます。 私は Xamarin でのアプリ開発を通して MVVM 設計のすばらしさを経験してしまいました。もう後には戻れません。 Java や Objective-C でのアプリ開発でも MVVM 設計は開発スピードと品質確保を両立するために有効であるはずです。 今回は Android アプリ開発(Java)で MVVM を使うとどうなるか、紹介してみたいと思います。 MVVM 設計について MVVM 設計ではビジネスロジックを Model が担当し、ViewModel

    今最も注目されている設計手法!MVVM を Android アプリ開発に取り入れてみた
  • 【連載】Bluetooth LE (7) CoreBluetooth の落とし穴

    こんにちは。共同開発部 門多です。 BLE 連載の第7回は、iOS で CBCentralManager を使った開発において、 はまりやすいと思われるポイントを中心にまとめたいと思います。 連載の第2回を読まれて、 実際にアプリを作ってみた方には、もしかしたら頷かれるものもあるのではないでしょうか? 以下、個別にみていきましょう。 第1回 Bluetooth Low Energy の基礎 第2回 iOS デバイスで Bluetooth LE 機器を使う 第3回 iOS デバイスを Bluetooth LE 機器にする 第4回 Windows 8.1 の Windows ストアアプリで BLE を使う 第5回 Android 4.3 で Bluetooth LE 機器を使う 第6回 Bluetooth LE (6) iOS 7 での CoreBluetooth の変化 iOS 5 の落と

    【連載】Bluetooth LE (7) CoreBluetooth の落とし穴
  • NSProxy を使って UIWebView のイベントハンドリングをフックする

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

    NSProxy を使って UIWebView のイベントハンドリングをフックする
  • 【iOS】JavaScript を使って、UIWebView でページ内検索

    こんにちは! Sleipnir Mobile for iPhone / iPad 開発担当の宮です。 ちょっと前ですが、UIWebView についての記事を書きました。 【iOS】UIWebView Hacks 〜ブラウザ開発テクニック ページ内検索についての内容が抜けていたので、今回はその話です。 UIWebView にはページ内検索関連の API はありません。Objective-C で DOM をたどることもできないので、ほとんどを JavaScript を使って実装します。 実装するポイント ソースコードは一番最後にあります。まあまあ長いコードなので、ポイントとなる部分だけ紹介します。 全てのエレメントをたどる body から childNodes をたどっていっても、iframe 内の document にはアクセスできません。window.frames で frame 一覧が

    【iOS】JavaScript を使って、UIWebView でページ内検索
  • 【連載】Bluetooth LE (3) iOS デバイスを Bluetooth LE 機器にする

    こんにちは。共同開発部 門多です。 Bluetooth LE (以降 BLE)連載の第3回です。 今回は iOS デバイスを BLE 機器として使えるようにするために、簡単なアプリを実装していきたいと思います。 第2回で、Texas Instruments CC2541 SensorTag 開発キットを使ってアプリから BLE 通信を行いましたが、 SensorTag と同等の役割を iOS デバイス(のアプリ)にもたせることができます。 iOS デバイスが BLE 機器になりますので、たとえば iOS デバイス同士で通信を行ったり、 AndroidWindows からも iOS デバイスと通信することができるようになります。 この記事では簡単に通信ができる程度のサンプルを作って、説明していきたいと思います。 第1回 Bluetooth Low Energy の基礎 第2回 iOS

    【連載】Bluetooth LE (3) iOS デバイスを Bluetooth LE 機器にする
  • 【連載】Bluetooth LE (2) iOS デバイスで Bluetooth LE 機器を使う

    こんにちは。共同開発部 開発担当の図子です。 先週 からはじまりました Bluetooth LE (以降 BLE)の連載。今回は iOS デバイスで BLE 機器と通信できるようにするために簡単なアプリを作って説明していきたいと思います。 第1回 Bluetooth Low Energy の基礎 第2回 iOS デバイスで Bluetooth LE 機器を使う 第3回 iOS デバイスを Bluetooth LE 機器にする 第4回 Windows 8.1 の Windows ストアアプリで BLE を使う CoreBluetooth Framework iOS で BLE を通信をするためには CoreBluetooth.framework を使います。CoreBluetooth は iOS 5 から登場したフレームワークで BLE 通信を行うためのフレームワークです。登場当初は既存の

    【連載】Bluetooth LE (2) iOS デバイスで Bluetooth LE 機器を使う
  • 【連載】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 の基礎
  • Android のログ出力をスマートに

    こんにちは。東京で開発担当をしています志田です。 初のブログ執筆となりますが、 この度は私の知っているノウハウを少しでも共有できればと思い拙い筆を、もとい叩き慣れたキーボードを手に取って云々という次第です。 今日のテーマはずばり Android 開発における “スマートな” ログ出力について!! です。 基中の基と言える内容ではありますがそれ故に大事な部分でありますので、どうログを出力するのが最適かわからない、という場合に参考にしていただければと思います。 ありがちなログ出力 とりあえず何も考えずに android.util.Log クラスを使ってログを出力するとこんな感じになるかと思います。 public class BeforeActivity extends Activity { private static final String LOG_TAG = "Before"; pr

    Android のログ出力をスマートに
  • 【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜

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

    【iOS】UIWebView Hacks 〜ブラウザ開発テクニック〜
  • Apple が公開しているオープンソースソフトウェアいろいろ

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

    Apple が公開しているオープンソースソフトウェアいろいろ
    s_ryuuki
    s_ryuuki 2013/05/14