[お知らせ]免責事項

注目

 本ブログは株式会社グローバルサイバーグループ (以下当社) の社員たちがやってみたこと興味のあることを構えず気負わずお届けし、社内研究の成果や社内の雰囲気を社外の方々にも知っていただくことを目的としています。
 各記事に記載の内容は当社の代表的な見解であると特別に書いていない場合執筆者個人の見解であり、当社を代表するものではありません。
 記事を執筆した各人が思いつく限り動作を確認した上で記載しておりますが、各記事に記載の内容は完全な動作や安全を保証するものではありません。公開された情報の利用は特別の断り書きがない限り自由に行えますが、それによって起きたいかなる損害についても当社では責任を負いかねます。十分な確認のうえでご利用いただきますようお願い申し上げます。

[Firefox OS][勉強会]FxOSコードリーディングミートアップ#21でも話してきてました

 藪下@2課のガジェオタです。

 ぎょう(ry

 何やかんやで月一なんとか開催中のFxOSコードリーディングミートアップも#21で五回目ぐらいのセミナー回です。
 まあ主催者が話さなくてどうすんのってことで話してきました。


 名前がかわいらしい某.NET系で有名な勉強会で東京名古屋大阪とやってきた内容にそこを読むならこの辺にソースコードがあるよってところを追記しただけのものです。
 が、まあざっくりと全体を見ているのでなんとなく構造がつかめるんじゃないかなと思います。
 話が偏ってるのは藪下の知識の偏りに起因しているのでもっとちゃんと構造を話したいのが今後の課題。

 なんとなくFirefox OSの全体的な構造が知りたい方は見てみるとよろしいんじゃないかと思います。
 もちろん質問いただければお答えしますよ!

質問はこちら>http://www.gcg.bz/labo_blog/?page_id=945

[Firefox OS][勉強会]中国Firefox OS勉強会3rdで話してきてました

 藪下@2課のガジェオタです。

 業務多忙で割と身体的に弱ってきているのでそろそろリフレッシュしたいところに勉強会入れて自分を追いつめるスタイルの藪下です。

 さてもう一月近く経ってますが去る8/29に広島で中国Firefox OS勉強会3rdが開催されました。OWBも配られたりKDDIさんが一セッションやってたり地方開催でも何かと豪華だった中国3rdなんですが今回も登壇してきました。

 というわけで資料ペタリ。


 タイトル負けしてますがセンサについてつらつら20分話してきました。20分短い。。。
 藪下は50分に慣れてるので20分短くてつらかとでした。。。

 業務多忙で時間がなくて書きなぐった資料ですがセンサの使い方が知りたい方はざっと眺めてみてくださいな。個別のトピックは本ブログで書いてるのでそちらもよしなに。

[FxOS]FxOSコードリーディングミートアップ#16でLTしてきました

 藪下@2課のガジェオタです。

 FxOSコードリーディングミートアップ#16でLTやってきました。

 スライドをSlideshareに上げました。今回はContacts APIの中身とVibrator APIの中身とCodezineで記事を書いた顛末記ですよ。






[Firefox OS][Codezine]Codezineにハードウェア系APIの記事が掲載されました

 藪下@2課のガジェオタです。

 CodezineにFxOSのハードウェア系APIを概説した記事が掲載されました。

Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発 第3回
Firefox OSアプリ開発が楽しくなるハードウェアAPIの概要と、センサーAPIや音声APIを使った楽器アプリの作例
http://codezine.jp/article/detail/8540

 記事では分量の都合上さらっと使用例を流して終わってしまいましたが、本ブログではそれぞれについての使い方を解説した記事も書かれているので是非併せて読んでください。

 まだOrientation APIとか書かれてないものもあるので暇を見て追加していきます。

[MDN][翻訳][Advent Calendar 2014]ネタに困ったのでMDNの翻訳を実況してみる

 藪下@2課の比較的英語できない子です。

 この記事は MDNやFirefox OSのドキュメントをみんなで翻訳! Advent Calendar 2014 の8日目の記事です。

 さて皆様翻訳するにあたって用意しておくべきこととか翻訳するようになってどうだったとかの話をされているので、毛色を変えて記事を翻訳しながら思うところを書いていきます。過去思ったことじゃなくて今から翻訳しながら書きますw

今回の翻訳対象ページ

 藪下はプロフィールページを見る通り主にテスト周りを翻訳しています。
 APIを書いてみたりしているとちゃんと動いているか確認したくなるのでテストを調べていましたが、自分の必要なところだけ翻訳して他はほったらかしでした。
 この機に一つ翻訳してしまおうかと思います。

 というわけで今回の対象はGaia unit testsです。

まずは日本語ページを作る

  • LANGUAGEをポイントして Add a translation をクリック Add a translation
  • Select a language to translate to:ページで日本語 (ja)をクリック 日本語(ja)
  • Wysiwygエディタが立ち上がるのでおもむろに翻訳! の前にタイトル変えておきましょう 日本語タイトル

本文を翻訳しながら思ったこと

 さっそくニュアンスがわからない単語が出てきました。
 単語はよく辞書引くので辞書サイトは開きっぱなしです。藪下は大体この辺で単語を調べます。

  • アルク http://www.alc.co.jp/index.html
    • ここは藪下がMDN翻訳時以外でも常に使っているところです。藪下がFirefoxを使えるところでは必ず検索プロバイダに入れてあります。
  • Weblio英和和英 http://ejje.weblio.jp/
    • Googleで単語を検索すると上位に出てくるのでそこそこ見ます。用例を見たいときはアルクとWeblioどちらも見たりすることが多いです。

 こういった副読本はいちいち画面切り替えたりするのが面倒なのでサブディスプレイに表示するとか別のPCで表示することが多いです。
 藪下の家ではSynergyで各PCの画面を行き来できるようにしてあるのでその時近くに置いてあるPCを使うことが多いです。

 翻訳してみたのを読み返してリンクをクリックしてみると英語版。。。まあ翻訳あるあるなんですが、リンクの多いページを翻訳していると結構リンクの確認が大変です。
 たとえば注意の段落にあるGaiaの開発のリンクは翻訳原文ではもちろんen-USに対してリンクされています。ですが対象のページに日本語訳が存在するならそちらにリンクすべきですよね。でもこれ確認するのに一度そのページにアクセスしてLanguageに日本語があるか確認してると面倒です。簡単に翻訳が存在するか確認する方法があるといいんですけど知らないので誰か教えてプリーズ (翻訳アドベンターに期待!)。
 ちなみにMDNは歴史的な経緯で英語と日本語でパーマリンク構造が同じとは限らないので注意です。ちゃんとリンクできてるか確認はしておくといいです (何度かハマった)。

一度で全部翻訳する必要はない

 まあ今回全文翻訳しない言い訳なんですが。。。
 一度で全文翻訳する必要はないです。事実藪下は一つの記事に対して結構何度も更新してます。あまり気構えずに気になったところだけでも翻訳するとか日本語がわかりにくいところは直してしまうとかしていってください。

MDNは更新されていく

 MDNが更新されるのは日本語だけではありません。原文である英語の記事も更新されることがあります。
 日本語の翻訳だけでなく英語の記事も見てみたら書いていることが違うこともしばしばなので、気が付いたら直してしまいましょう。
 例えば藪下は過去にFirefox OSの自動テストというページを翻訳していますが、Advent Calendarの記事を書こうと思った時点で英語の記事が更新されていました。
 気づいた時が修正時なので日本語のおかしなところの修正とともに気づいた英語版の修正を取り込んでみました。

まとめ

  • 日本語ページは簡単に作れる
  • 辞書サイトはよく使うのですぐアクセスできるようにしておく
  • リンクは確認する
  • 全部翻訳しなくてもいい
  • 一度翻訳しても原文が更新されがちなので何度でも楽しめ。。。る

 取り留めもなく書いてきましたが、雰囲気伝わったでしょうか。
 あんまり難しいことを考えてやっているわけではない (藪下のような) 人もいるので皆様もお気軽にどうぞ。

[Firefox OS][Advent Calendar 2014] 今年はあと一ヶ月あるけど一年を振り返ってみる2014

 お久しぶりです。2課のガジェオタこと藪下です。

 職場がアホほど忙しいのに加えてコミュニティ活動も忙しくしてたらすっかりブログ書く習慣がなくなってしまいました。これを機に復活したいなと思ってます。
 で、復活第一弾は Firefox OS Advent Calendar 2014の一日目 です。今年はあと一か月残ってますが藪下にとってのこの一年のFirefox OSを振り返ってみたいと思います。

イベントの出展とか主催とか

 今年はたくさんやりました。表だって登壇したり展示のキュレータをやったものだけでも結構ありました。

 リンクが張ってあるものは資料とかまとめへのリンクになってます。資料を見てみたい方は是非。

 印象深いものだけいくつか

Android Bazaar and Conference 2014 spring (展示)

 ABC2014春です。たくさんのコミュニティメンバでわいわいと準備したり当日盛り上げたりしました。
 Tech Boosterで有名なひつじさんのアイデアでthe foxの風船を配ったのが印象的でした。時間がたつにつれて会場にいる人達みんな風船持ってるような感じになっていって楽しかったです。

Mozilla Developer Conference 2014 in Kyoto

 藪下人生初の200人超のセミナーでした。さすがに緊張しましたが会場に見知った顔が結構いたので少し楽になりました。
 このカンファレンスでは関西の勉強会を開催している方々と知り合えて連絡を取り合うようになったのが大きな変化でした。

中国Firefox OS勉強会 1st

 割と企画の最初のほうからお手伝いしていた勉強会でした。
 名古屋の勉強会、CMU16、中国Firefox OS勉強会1stと三週連続でひいひい言いながら資料を書いてました。この回は我ながら自信を持てたセッションだったんですが、自分の手ごたえだけでなく現場やUstで見てくださった方々にお褒めいただけたので印象に残っています。
 あと初prezでした。

Mozilla Open Web Day 2014 (展示)

 これは田中プロのビデオレターが印象的でしたよね。
 明言したわけではないもののほとんど明言したも同然の発売予定発表で会場に衝撃が走りました。開発遅延がびた一文許されなくなった瞬間でもあるので思わずKDDIブースの方々の顔を見てしまいましたw

実機とか

 今年は実機もいろいろありましたね。去年もGeeksphoneやZTE Openのグローバル版などありましたが、今年もいろいろ出てます。
 藪下が入手したものだけでも

 これぐらいですね。ZTE Open Cも日本から買えたり、タブレット貢献プログラムでタブレットの配布があったりしましたね。
 Open Web BoardとMatchstickはろくに触れてないのでflameだけちょっと書きます。

Mozilla flame

 Mozilla発の開発機ですね。技適マーク問題とか紆余曲折ありましたが無事日本でも流通してます。
 展示会でキュレータをやっていてもflameの入手方法をよく聞かれます。残念ながらEverbuyingは日本に出荷してくれなかったりびぎねっとさんのYahoo!ショッピングでの販売も終わっている話しかできなくてつらいところです。

 藪下は社内でFirefox OSの研究やアプリの開発をやる都合でよくflameを使います (私物のも会社のも)。もちろん私物には会社で作るソフトは乗せられないのですが、Mozillaのリポジトリから何も触っていない動作を確認する場合などに重宝してます。会社のもOS全部書き換えられるのはとてもありがたいですね。
 flameを買えなかった皆さんはauで発売される端末を楽しみに待ちましょう (flameほど自由自在じゃないかもしれませんが。。。)。

これからとか

 まずは今月の後半に出る端末に期待ですね!
 中心になる端末があってこそOpen Web BoardやMatchstickなどの据え置きに近い形で使うであろう端末が生きてくるんじゃないかと思います。
 今年はコミュニティ活動を頑張ってみたんですが、あんまりものづくりできなかったので来年はとりあえずOpen Web BoardやMatchstickで遊べないかなーと思ってます。
 とは言いつつ弊社では勉強会支援を行っているので、今後も勉強会の開催やお手伝いは積極的に行います。ご相談ごとがある方は是非 こちらのフォーム からお問い合わせください。

 端末も発売になって日本のFirefox OSはこれからが本番です。みんなで楽しくしていきましょう!

 BE THE FUTURE!

[Firefox OS][WebAPI]バイブレーションAPIの使い方

 藪下@2課のガジェオタです。環境光センサ、近接センサ、GPSときて今回はバイブレーターを動かします。
 バイブレータは使いどころがわかりやすいですね。何らかの通知を目立たせるため、演出の効果の一つとして、メインの効果ではないかもしれませんがちょくちょく使われている場面に出くわします。

バイブレーション

 バイブレーションAPIは端末のバイブレータを制御するためのAPIです。
 着信音とともにバイブレートする機能や通知の一種に使われます。
 バイレーションAPIは振動させたい時間を与えることで制御します。振動時間と停止時間の配列を渡すことによってパターンも表現することができます。

  • [バイブレータのサンプル](https://github.com/aoitan/C86_samples/tree/master/vibrator バイブレータのサンプル)

バイブレータを振動させる

 バイブレータAPIはnavigator.vibrate()によって制御します。
 引数としてnumberあるいはnumberの配列を取り、引数で指定された時間だけバイブレータを振動させます。単位はミリ秒です。
 引数が配列の場合、奇数番目の要素を振動時間、偶数番目の要素を停止時間としたパターンでバイブレータを振動させます。

navigator.vibrate(200);
// 三三七拍子
navigator.vibrate([200, 100, 200, 100, 200, 200,
                   200, 100, 200, 100, 200, 200,
                   200, 100, 200, 100, 200, 100, 200, 100,
                   200, 100, 200, 100, 200, 200]);

バイブレータを停止させる

 引数として0を渡すとバイブレータが停止します。

navigator.vibrate(0);

リファレンス

 今回の内容は以下のURLが一次リソースになります。W3Cの仕様なので各ブラウザもこの仕様に則ります。

まとめ

 バイブレーションAPIは使い方も簡単でいいですね。
 冒頭でも書いた通り主役の効果ではないもののいろいろな場面で小粋に効いてくれる効果だと思います。
 単に通知する場合だけでなく、ゲームなどでも派手な動きや爆発とともに使えばよい演出になるでしょう。

 ただしバイブレーションAPIはバイブレータを駆動させるため不用意に多用すると電池持ちに影響します。
 デバイスを制御するAPI全般に言えることではありますが、適切な使用を心がけましょう。

[Firefox OS][WebAPI]Geolocation APIの使い方

 藪下@@2課のガジェオタです。

 環境光センサ、近接センサと解説してきましたが、今回はGeolocation APIについての記事です。
 アプリを作る人の観点ではこれまでのセンサ類と比べてよく使うものではないでしょうか。よく使われるだけに使ったことがある人も多いかもしれませんね。

地理位置情報

 地理位置情報APIは位置情報の取得を行うAPIです。現在位置の取得、位置情報の監視を行えます。
 位置情報APIはリクエストメソッドにコールバック関数を渡してレスポンスを待つような使い方になっています。
 また位置情報はプライベートな情報であるためAPIの使用時に許可を求めるプロンプトが表示されます。
 地理位置情報APIはnavigator.geolocationに属します。

パーミッションの設定

 Firefox OSで地理位置情報APIを使用するにはマニフェストへのパーミッションの設定が必要です。
 ”permissions” プロパティに “geolocation” を記述します。

  "permissions": {
    "geolocation": {}
  },

現在位置情報の取得

 現在位置の取得にはgetCurrentを使用します。
 geolocation.getCurrentPositionは2つの引数と1つのオプション引数を取ります。
 返り値はありません。

 第3引数のPositionOptionに高精度の位置情報を要求するフラグを立てない場合、高速なレスポンスのために低精度の位置情報を返します。

  navigator.geolocation.getCurrentPosition(successHandler, errorHandler, [PositionOption])
引数 概要
successHandler 現在位置取得成功コールバック
errorHandler 現在位置取得失敗コールバック
PositionOption 高精度位置情報を取得するか、最大試行回数、待ち時間を表すオブジェクト

現在位置の監視

 現在位置の監視にはgeolocation.watchPositionを使用します。
 geolocation.getCurrentPositionは2つの引数と1つのオプション引数を取ります。引数の意味はgeolocation.getCurrentPositionと同じです。
 geolocation.watchPositionは位置に変化があると第1引数のコールバック関数を呼び出します。
 返り値として監視を区別するための値を返却します(@ {aoitan_watchposition_geoloc})。

  navigator.geolocation.watchPosition(successHandler, errorHandler, [PositionOption])
引数 概要
successHandler 現在位置取得成功コールバック。callback void (Position)
errorHandler 現在位置取得失敗コールバック。callback void (ErrorPosition)
PositionOptions 高精度位置情報の取得や最大試行回数、待ち時間を指定
変数名 概要
enableHighAccuracy true:高精度位置情報を取得する、false:取得しない
timeout タイムアウトまでのミリ秒数
maximumAge 最大試行回数

 監視を終了するにはgeolocation.watchPositionが返却した値を引数としてgeolocation.clearWatchを呼び出します。

  navigator.geolocation.clearWatch(watchId)
引数 概要
watchId watchPositionから返却された監視ID

位置情報

 geolocation.getCurrentPositiongeolocation.watchPositionでの測位が成功すると、成功コールバックで位置情報が取得できます。
 位置情報には座標情報と時刻が含まれます。

変数名 概要
coords 座標情報を表すCoordinates型の値
timestamp coordを取得した時刻を表すDOMTimeStamp型の値
変数名 概要
latitude 地理座標系の緯度
longitude 地理座標系の経度
altitude 高さ。高さが測位できない場合はnull
accuracy 緯度経度についての精度。非負実数
altitudeAccuracy 高さの精度。非負実数。高さが測位できない場合はnull
heading 北に対するデバイスの向き。時計回りに0~360度を取る
speed 水平移動速度

altitude、altitudeAccuracy変数の単位はメートルです。またspeedは秒速メートル単位で取得できます。
heading変数は、向きが提供できない場合にnull、静止状態の時NaNをとります。

サンプル

function startPositioning() {
  var geo = navigator.geolocation;

  // まず現在地を取る
  return this.getCurrentPosition().then((pos) => {
    positionPrint(pos);

    // 精度を上げるために監視を始める
    watchId = geo.watchPosition((position) => {
      positionPrint(pos);
    }, (error) => {
      errorPrint(error);
    }, {enableHighAccuracy: true});
    return watchId;
  }).catch((error) => {
    errorPrint(error);
  });
}

function getCurrentPosition() {
  var geo = navigator.geolocation;

  var getLocation = new Promise((resolve, reject) => {
    geo.getCurrentPosition((position) => {
      resolve(position);
    }, (error) => {
      reject(error);
    });
  });

  return getLocation;
}

 サンプルでは低精度な代わりに素早く位置情報を取得してから高精度で位置情報監視を開始して精度を上げる動作を端的に表しています。
 実際のアプリでは上記サンプルのように文字列を表示するだけでなく、マップAPIを併用して地図上で位置と範囲を表示するような形になるでしょう。

リファレンス

 今回の内容は以下のURLが一時リソースになります。W3Cの仕様なので各ブラウザもこの仕様に則ります。

まとめ

 地理位置情報APIの典型的な使用例は地図との連携でしょう。Firefox OSでもv1.0のころはNokiaのhere mapを搭載していたり、今でも開発ビルドではOpen Street Mapと組み合わせたテストアプリなど、地図との連携の例があります。
 昨今では地図以外での利用も増えていますね。SMSなどの投稿時や写真にジオタグをつける、スタブラやIngressのような位置に基づいたゲームなどですね。

 位置情報はいろいろ使えるところがあるので面白いアプリを作っていきましょう!

[Firefox OS][イベント情報]中国Firefox OS勉強会2ndに登壇します

[Firefox OS][イベント情報]中国Firefox OS勉強会2ndに登壇します

 藪下@2課のガジェオタです。

 中国Firefox OS勉強会2ndに登壇します。
 今回は1stのメンバに加えてHTML5jエンプラ部で活躍していたり、FxOSコードリーディングをはじめいろいろなFirefox OS関連勉強会でスタッフとしてお手伝いいただいている酒巻さんも登壇されます。

 今回のイベントから弊社では正式にFirefox OS関連勉強会の支援を行うことになりました。
 いくつか条件がありますが、会場代や機材のレンタル費のスポンサード、弊社メンバの登壇などで協力させていただきます。詳細はお気軽に以下のフォームでお問い合わせください。

お名前 (必須)

メールアドレス (必須)

開催イベント名(未定の場合未定とご記入ください)

日時(未定の場合未定とご記入ください)

場所(未定の場合地域をご記入ください)

開催概要や要望など

captcha