SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発(AD)

Firefox OSでCamera APIを利用したカメラアプリを作ろう ~カメラ関連APIの解説から実装、アプリの申請フローまで

Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 WebベースのOSであるFirefox OSでは、カメラなどのハードウェア関連APIが気軽に使えることも大きな魅力の一つです。本稿では、Firefox OS 2.0から利用できるCamera APIを利用した簡単なカメラアプリの作り方を、実際にソースコードを交えながら解説していきたいと思います。また、作ったアプリの申請フローやレビュープロセス、Camera APIの利用に必須であるFirefox OS 2.0搭載のスマートフォン「Fx0」の紹介もあわせて行います。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本稿で作成するカメラアプリのサンプルは、GitHubにて公開しています。

作成するサンプルアプリ

 本稿では、HTML5と、Firefox OSのCamera APIを利用して、簡単なエフェクトつきのカメラアプリを作成します。

 今回作成するカメラアプリは一画面のシンプルなアプリです。撮影ボタンのほか、左右の切替ボタンによって、様々なエフェクトを施した画像を撮影できます。下の画像は、アプリ上でエフェクトなし、エンボス加工、セピア風のエフェクトをそれぞれ表示したものです。

3つのエフェクトキャプチャ
3つのエフェクトキャプチャ

 カメラアプリの各機能はそれぞれ以下のAPIを利用します。

カメラアプリ実装に必要なAPI
機能 API名称 簡単な実装方針
カメラにアクセスする CameraManager CameraManager.getCamera() を利用し、カメラにアクセスします
カメラを操作する CameraControl CameraControlの各メソッドで、フォーカスや撮影画像の取得を制御します
カメラのデバイス情報を得る CameraCapabilities デバイスによって異なるカメラの情報はここから取得します
カメラの映像にエフェクトをつける CameraControl.effect CameraCapabilities.effectsで取得できるエフェクトを指定することで、セピアやエンボスなどの画像効果をつけます
撮影した写真をストレージに保存する DeviceStorage 撮影した写真は、デバイスの写真フォルダに格納します

Firefox OSのアプリの種類

 Firefox OSのアプリには、大きく分けて、Webから配信されるホスト型アプリと、デバイスにインストールされるパッケージ型アプリがあります。今回作成するカメラアプリはパッケージ型アプリです。

 パッケージ型アプリは、権限によってさらに以下の3種類に分かれ、利用できるAPIが異なります。詳しくは、ドキュメントのパッケージ型アプリのページをご覧ください。

特権アプリ(Privileged App)

 特権アプリは、特別なレビュープロセスを経てFirefox Marketplaceにより承認されたアプリです。アプリはFirefox Marketplaceに審査され、デジタル署名をされることで、デバイスの重要なAPIを利用することができるようになります。

認定アプリ(Certified App)

 認定アプリは、電話やシステム設定など、Firefox OS端末上の重要な機能に使用されるものです。APIをユーザの明示的な承認なく利用できますが、OEMあるいはキャリアによって端末ごとに承認される必要があり、ほとんどのアプリ開発者は認定アプリを配布することができません。

単純なパッケージ型アプリ(Plain Packaged App)

 単にひとつのZIPファイルにパッケージした通常のアプリです。特別な認証プロセスがない代わりに重要なAPIは利用できません。アプリをインストールした直後の状態で、アプリのリソースを全て端末上で利用可能にしておきたい場合に便利です。

 また、WebIDEでは以下のように、それぞれの権限に許可されたAPIのテーブルを確認することができます。デバイスを接続した状態で、右上のデバイス選択メニューから[Permissions Table]を選択します。

パーミッションテーブル
パーミッションテーブル

Firefox OSで利用できるカメラ関連API

 Firefox OSでカメラにアクセスするためのAPIには、以下の3種類があります。

Firefox OSでカメラにアクセスするためのAPI
API名 対応バージョン 必要権限
Web Activities v1.0.1以上 特権(Privileged)
Media Capture API v1.4以上 Web(Hosted)
Camera API v2.0以上 特権(Privileged)

 Web Activitiesは、Androidでいうインテントのような機能です。アプリから他のアプリを呼び出すことができる機能ですが、OS標準のカメラなど、Web Activitiesに対応したカメラアプリを呼び出し、結果の画像を取得することができます。他のカメラアプリを呼び出すだけなので、カメラUIの変更はできません。

 Media Capture APIは、W3Cで標準化が進められているAPIです(2015年2月の現時点では、草案の段階です)。getUserMediaを使うことで、アプリ内でカメラの映像ソースにアクセスすることができます。標準APIとあって、ブラウザでも利用することができるので、触れたことのある方も多いかもしれません。また、このAPIは特権の権限が必要ないため、ホスト型のアプリでも利用できます。

 Camera APIは、カメラを管理するためのFirefox OS独自のAPIです。Firefox OS 2.0以前は、認定アプリでのみ利用できるAPIでしたが、2.0から特権アプリでも利用できるようになりました。カメラの映像を取得するだけでなく、ズームやフォーカスを指定したり、フラッシュを利用したりといった豊富な機能を利用することができます。

次のページ
プロジェクトの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発連載記事一覧

もっと読む

この記事の著者

鈴木 和幸(スズキ カズユキ)

 1991年岐阜生まれ。株式会社リクルートホールディングス メディアテクノロジーラボ(MTL)所属。社内スタートアップでリーンな顧客開発・製品開発を実践中。現在はエンジニア向けメディアPOSTDを運営。個人でもAndroid版Firefoxのローカライズなどの活動に従事。 Twitter:@kechol Web:kechol.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8532 2015/03/13 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  1. 6
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  2. 7
    2024年は開発者にとってどんな年だったのか? CodeZineの人気ニュースランキングから振り返る NEW
  3. 8
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 9
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  5. 10
    意外と変わらない? 生成AI時代の開発とセキュリティの関係──松岡正人氏が2024年の調査結果から読み解く課題と対策 NEW

アクセスランキング

  1. 1
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  7. 7
    2024年は開発者にとってどんな年だったのか? CodeZineの人気ニュースランキングから振り返る NEW
  8. 8
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  9. 9
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  10. 10
    意外と変わらない? 生成AI時代の開発とセキュリティの関係──松岡正人氏が2024年の調査結果から読み解く課題と対策 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  9. 9
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  10. 10
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  1. 6
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  2. 7
    2024年は開発者にとってどんな年だったのか? CodeZineの人気ニュースランキングから振り返る NEW
  3. 8
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  4. 9
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  5. 10
    意外と変わらない? 生成AI時代の開発とセキュリティの関係──松岡正人氏が2024年の調査結果から読み解く課題と対策 NEW

アクセスランキング

  1. 1
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  7. 7
    2024年は開発者にとってどんな年だったのか? CodeZineの人気ニュースランキングから振り返る NEW
  8. 8
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  9. 9
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  10. 10
    意外と変わらない? 生成AI時代の開発とセキュリティの関係──松岡正人氏が2024年の調査結果から読み解く課題と対策 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  9. 9
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  10. 10
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選