2013年12月27日金曜日

ループ動画共有アプリ Vine

こんにちは。
株式会社Pro-SPIREソリューション事業部
最近肝臓のフォアグラ化が判明しました藤野です。

今回は短い動画を手軽に共有できるアプリ、Vineをご紹介いたします。

動画共有というとYouTubeやニコニコ動画といったサイトが有名です。
最近では閲覧だけでなく、自ら撮影した動画をアップロードすることも一般的となっています。

自分も撮影した動画をアップロードしたいけど難しそう、、、
いったい何を撮影すればいいんだろう、、、

そういった方におすすめしたいのが、このVineです。

Vine
https://vine.co/

6秒間ループする動画を手軽に投稿できます。

百聞は一見にしかずということで、まずはVineで撮影した動画をいくつかご覧ください。

※音が出ます。
https://vine.co/v/bFZwbm59bE3/embed





2ちゃんねるで話題のGIFアニメとよく似ていますね。
操作は簡単で、スマートフォンのカメラを利用してボタンを押し続けるだけです。
ボタンを離すと一時停止になるので、それらを交互に繰り返すことでアニメーションを作成します。

これなら気軽に、手間をかけずに動画を投稿できますね。
私も挑戦してみたいと思います。

それでは良いお年を!


2013年12月26日木曜日

NORADの「サンタ追跡サイト」

株式会社Pro-SPIREソリューション事業部の鳶田です。

本日は昨日の話になりますが、クリスマスに関してサンタにまつわるネタを御紹介します。

NORADの「サンタ追跡サイト」

Official NORAD SantaTracker
http://www.noradsanta.org/

子供たちの夢を守るため、こういった活動がWeb上で公開されているんですね。
公式サイトを開くと3Dの地球が表示され、サンタの移動したルートを追跡することが可能となってます。

2013年版はタブレット対応を強化しています。
インターネットコム:Technology
http://japan.internet.com/webtech/20131204/3.html

NORAD wiki
http://ja.wikipedia.org/wiki/%E5%8C%97%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB%E8%88%AA%E7%A9%BA%E5%AE%87%E5%AE%99%E9%98%B2%E8%A1%9B%E5%8F%B8%E4%BB%A4%E9%83%A8



ちなみに私は幼少期の頃、一度もサンタを目にしたことはありません。
クリスマス当日を迎えると、枕元にはプレゼントがいつの間にか置いてあります。
しかし時が経つにつれて、プレゼントの品質が下がっていき、8歳を迎えた頃には私の中のサンタの評価は騰落しきってました。

2013年12月25日水曜日

注目の電子通貨 Bitcoin

メリークリスマス☆

こんにちは。株式会社Pro-SPIREソリューション事業部の藤野です。

本日は最近噂になっている電子通貨、Bitcoinについてです。


Bitcoin(ビットコイン)とは?

P2Pで取引が行われる電子通貨です。
銀行を介さないため迅速な手続きができ、新たな世界共通通貨として注目されています。
ビットコイン: Bitcoin P2Pベースの仮想通貨
http://www.bitcoin.co.jp/


本日 12月25日の日本経済新聞の記事にも掲載されていますね。
仮想通貨ビットコイン 便利さ、記者も使って実感 :日本経済新聞
http://www.nikkei.com/article/DGXBZO57739650V20C13A7HR0A00/


最近ではBitcoinで精算できるお店が増えているそうです。
私自身の仕事にも関係してくるでしょう。

今後も目が離せませんね。


2013年12月24日火曜日

韓国における開発の特徴

株式会社Pro-SPIREソリューション事業部の鳶田です。

さて、今回のショートトークの「ネタ」ですが、タイトルは韓国の開発の特徴です。
現在、私たちのチームには韓国籍の方もいらっしゃいます。韓国と日本では開発スタイルに違いがあるそうで、興味深いお話をおうかがいする機会が何度もあります。

今回のネタにあがった技術要素の話題では、Webアプリケーションの開発において、日本ではあまり使われなくなった「ActiveX」が韓国では多用される傾向があるというお話をおうかがいしました。
(最近はGoogle ChromeやFirefoxのユーザーも増えてきているため、ActiveXの割合は減ってきているそうです)

ActiveX

ActiveXとは、Microsoftが開発するインターネットに関するソフトウェアコンポーネントやその技術を示す用語です。
一般的にはInternet Explorerや、そのコンポーネントを利用したソフトウェア上で動的なコンテンツを再生するための技術「ActiveXコントロール」を指します。

ActiveXコントロール

ActiveXコントロールはx86ネイティブ・コードなのでJavaアプレットに比べて実行速度が速く、Windowsクライアントの機能をフルに利用できるメリットがあります。
しかし、セキュリティはJavaよりも弱いデメリットがあります。


【参考URL】
ActiveX - Wikipedia
http://ja.wikipedia.org/wiki/ActiveX

「ActiveX」とは:ITpro
http://itpro.nikkeibp.co.jp/word/page/10002032/



以上、今回のショートトークでした。

2013年12月20日金曜日

メール開封確認サービス Bananatag

こんにちは。
株式会社Pro-SPIRE ソリューション事業部の藤野です。


弊社の技術者チームの毎朝の朝会では、「ショートトーク」と称して
そのとき気になっているニュースや技術などの情報を
ひとことで紹介するコーナーを設けています。

この度、技術者ブログのコンテンツのひとつとして、
ショートトークの内容をまとめて公開していくことにいたしました。
専門的な技術に関することから日常の些細なことまで
ざっくばらんにお伝えしていきます!


ではさっそく、、、

今回私が気になった記事はこちらです。

「不快」に思う人が3割近く 

メール「開封確認」ステルス技術

http://r25.yahoo.co.jp/fushigi/rxr_detail/?id=20131219-00033835-r25

受信側がメールを開封したかどうかの情報を送信側に提供してくれるというサービスが存在するようです。
ポイントは、受信側に開封確認されたことを気づかせないところです。
メールでのマーケティングをしている企業などは、導入によりサービスの向上に結びつけられそうですね。

記事の中で取り上げられている「Bananatag」というサービスを調べてみました。


Bananatag

http://bananatag.com/

技術的には、HTMLメールに透明な画像を埋め込んで、それが表示されたかどうかでメールの開封を確認するみたいです。
なるほど~、これだと受信者は気づきませんね。
うっかり「返信は後でいいや」なんて思って先送りにしていると大変なことになりそうです。

なお、受信者側がメールの開封情報を隠したい場合は、メール画像を非表示にする設定が必要です。
メールを読むにも注意が必要なわけです。

最近ではスマートフォンアプリ「LINE」でのメッセージ既読通知が心の負担になる「既読疲れ」なんてものも話題となっておりますが、
ビジネスライフにおいても似たようなことを気にする日々がくるのではないでしょうか。

世の中が便利になっていく中で、コミュニケーションのとり方にも目を向けたいと思います。

2013年12月4日水曜日

Selenium WebDriver でスクリーンショットを取得するときのtips

この記事は、Selenium Advent Calendar 2013の6日目の記事です。

ごあいさつ


はじめましてこんにちは。
株式会社Pro-SPIRE ソリューション事業部の戸田と申す者です。
現在は、主にSeleniumの環境構築や
Knockout.jsを使ったクライアントサイド開発を手がけています。

特に Selenium を中心とした自動テスト技術については
今後もどんどん重要になっていく分野だと確信していて、
チームメンバーも含めて、かなり入れ込んでいるところです。

検証事業としてもどんどん拡大していきたいと考えていますので、
お手元のシステムの検証でお困りだったり、
ご興味・ご関心がございましたら
ぜひ弊社にお声かけください!
精一杯サポートさせていただきます。

WebDriverでのスクリーンショット


さて、Selenium Advent Calendar 2013 向けの記事としまして、
些末ではございますが、弊社が Selenium を通して困った点や、解決方法について
よくあるお話を、ぜひ共有させていただこうと思います。
今回のテーマは「スクリーンショット」です。

Selenium でテストを実行するとき、いちばん大事なのはテストケースの成功・失敗ですが、
エビデンスとしてのスクリーンショットの取得も、非常に重要視されやすいところです。
同時に、なんでもない処理のように思われてけっこうはまりどころになりやすい部分でもあります。

WebDriver には、スクリーンショットを取得するAPIは1つしかありません。
Java の場合は、インターフェース TakesScreenshot の、 getScreenshotAs(OutputType<X> target) です。
http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/TakesScreenshot.html#getScreenshotAs(org.openqa.selenium.OutputType)
ところが、このたったひとつのAPIは、Webブラウザーの種類によってずいぶん動作が異なっており、
複数ブラウザーで同じようにスクリーンショットを取得するためには、ちょっとずつ処理を変える必要があります。

シンプルな構成のWebページの場合


まず、Selenium Advent Calendar 2013 のページのような
シンプルな構成のWebページのスクリーンショットを取得してみましょう。


では いきます。はい。


ファッ!?

Chromeだけ、ページ全体の画像が取得できません…

これは、 ChromeDriver 2 の不具合として既に報告されている事象なのですが、
修正対応は難しい状況のようで、長い間この状態が続いています。
https://code.google.com/p/chromedriver/issues/detail?id=294
どうも ChromeDriver 1 であればページ全体の画像が取得できたらしいのですが、
ChromeDriver 2 では表示されている領域しか画像を取得できません。

ううむ、いきなりつまづいてしまいました…
ChromeDriver 1 を使うという方法もあります。が、ChromeDriver 1 は最新の Chrome に対応していません。
スクリーンショットのためだけに、なかなか安易には使えないのです…

この事象に対して、弊社では JavascriptExecutor を併用することで対応しています。
http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/JavascriptExecutor.html
スクリーンショットを取得 --> JavaScript でスクロール --> スクリーンショットを取得 --> JavaScript でスクロール ... ...
と繰り返して、後で1枚の画像に合成する、という手順です。
Webブラウザーの種類によってはあからさまに動作速度が落ちるのが難点です。

フレーム構造を持つWebページの場合


上記の例は、あくまでもシンプルな構成のWebページでのお話でした。
実際にいろんな構成のWebページでスクリーンショットを取得すると、
また別の問題が出てきたりします。

たとえば、 <iframe> 要素を含む、インラインフレームのあるページではどうなるでしょうか。
次のような構成のページで、インラインフレームの中の「Learn more」ボタンをクリックした直後に
スクリーンショットを取得する、というシナリオの処理を実行させてみます。


ではいきます。はい。


ファッ!?

てんでバラバラですね。まったくわけがわからないよ(゚ω゚)

特にわけがわからないのは、 Internet Explorer で取得したスクリーンショットだと思います。
他のスクリーンショットとは、明らかに大きさが異なっています。

弊社内でいろいろ実験しましたところ、どうも Internet Explorer の場合だけ、
ボタンをクリックさせるために WebDriver.switchTo().frame() などで特定のフレームにフォーカスさせた状態にすると
そのフレームのサイズに合わせてスクリーンショットを取得しようとしてしまうようです。
役に立つときもたまにある動作ですが、まあだいたい困るときの方が多いです。

この事象に対して、弊社では Internet Explorer のときだけ
スクリーンショットを取得する前に、一時的に WebDriver.switchTo().defaultContent() などを実行して
最上位のフレームにフォーカスさせるようにしています。
スクリーンショットを取得した後は、フレームの中のテストを継続できるように、
元のフレームにフォーカスを戻します。

さらっと説明しましたが、この「元のフレームにフォーカスを戻す」というAPIも、
WebDriver には直接的なものが用意されていません。
元のフレームにちゃんとした ID や name 属性が設定されていればかんたんなのですが、
過去の資産を継承しているWebシステムなどでは
これらの属性が適切に設定されておらず、通常のロケーターでは対応できないことがあったりします。

そのような場合でも、弊社ではあきらめず JavascriptExecutor を併用してどうにか工夫しています。

同じAPIでもWebブラウザーにより動作に差異があることにあらかじめ注意しましょう


弊社ではこのようなWebブラウザー間の差異は
スクリーンショット取得用のクラスに細かい処理を隠蔽して吸収しているため、
テストコードの中で直接 getScreenshotAs() を記述することは無くなっています。
これから導入をお考えの方で、スクリーンショットの活用 特にクロスブラウザーチェックをお考えの方は、
このあたりの動作の差異について心の準備をしておくことをおすすめいたします。


長文となりましたが、ここまでお読みいただきありがとうございました。
Selenium の導入でお悩みなどがございましたら、ぜひ弊社までご一報ください!
弊社 お問い合わせページはこちら