ユニファ開発者ブログ

ユニファ株式会社システム開発部メンバーによるブログです。

評価検証・QAってなんですか

ハイ、ドーモ!QAの山岸です。 最近、社内ではわたしたちQAチーム以外でも受け入れテストが行われたりしており自身の再認識の意味も踏まえてQAってどんなことしているの?評価検証ってなに?みたいなものをまとめてみようと思います。

QAとは Quality Assurance の略称です。 顧客に信頼性を与えることを目的とし、そのために求められる品質を満たしているかどうかを検査・保証することです。

www.weblio.jp

企業によっては評価評価/検証品質管理などいろいろな呼び方で呼ばれています。
国際規格としてはISO9000シリーズがあります。

www.weblio.jp

これのなかにあるISO/IEC 9126という品質特性をもとにソフトウェアや商品が品質管理が適正にされているよね?ということを見ています。
品質特性 左側の大項目は主な特性で右側は副特性と呼ばれています。
f:id:unifa_tech:20180215195236p:plain
特性だけ挙げられてもわからないと思うので、左側の特性をかんたんにまとめます。
◆機能性
 ソフトウェアが目的に対して正確に動作、機能するか
◆信頼性
 特定の状況下(高負荷とか)でソフトウェアがどの程度機能するか
◆使用性
 使用者が利用するにあたって理解、習得、利用が円滑に行えるか
◆効率性
 使用する環境下で適切な性能が発揮するか
◆保守性
 修正のしやすさのこと

利用時の品質特性モデル(ISO/IEC 9126-4)としては下記があります。
かんたんに言うとユーザビリティみたいなものです。
有効性 (effectiveness)
生産性 (productivity)
安全性 (safety)
満足性 (satisfaction)

大まかにはこのような感じです。
これをもとにテスト(試験、検査)を行い、品質を保証していきます。
ちなみにですが、テスト技法の資格もあります。

http://jstqb.jp/index.htmljstqb.jp

テスト技法やテストまでの流れに関しては呼び方や方法がとても多いのでまた別の機会に紹介したいと思います。

以上になります。ありがとうございました。

CsvBuilderとExcelBuilderを作ってみました

こんにちは、システム開発部のちょうです。今回は自分が最近の開発でもっとやりやすい方法でCSVやExcelを作成することについて話したいと思います。

まずCSVから。Ruby標準のライブラリにすでにcsvというCSVを取り扱うライブラリがあります。でもCSVを作成する際に、ヘッダーと内容は別々で出力します。

CSV.generate do |csv|
  csv << ["column1", "column2", "column3"]

  items.each do |it|
    line = []
    line << it.foo
    line << it.bar
    line << it.baz
    csv << line
  end
end

ここに、サービスの開発をしていくにつれ、列が増える可能性があります。すると、修正する箇所が2つあります。一つはヘッダーのところ、もう一つはループのところです。列の数がすくないならまだいいですが、列が10個以上、20個に増えたらデータの漏れや順番の間違いは発生しやすいです。 そもそも列と内容の出力は一緒にすればいいのではと自分が考えました。実際、こんなコードを書きました。

続きを読む

RailsアプリからGoogleフォトに写真をアップロードしてみる

こんにちは、Webエンジニアの本間です。

昨年も予定通り12月25日に Ruby 2.5 がリリースされましたね。 個人的に嬉しいのは、ブロックパラメーターを経由したメソッド呼び出しが3倍早くなった改善です。 def foo(a, &b) のようなメソッド定義はブロックを受け取ることが明示されていて好きなのですが、今回の改修でこのような書き方をやりやすくなったなぁと思っております。

さて今回は、弊社サービスの「写真サービス るくみー」と「Googleフォト」が連携できないか?という調査を兼ねて、RailsアプリケーションからGoogleフォトに写真をアップロードしてみようと思います。

続きを読む

ECS+NLBでexporterを動かしてみる

おはこんばんちは。ユニファのインフラ担当すずきです。

今年一本目のブログなんですが…
途中で間違えてブログ消してしまって2回目書いてつらいです…

気を取り直して本題いきます!!

弊社ではサーバ等々の監視にprometheusを利用しようとしています。
prometheusでは多くの情報を取得するためにいろいろなexporterを利用するのですが、それら1個ずつ起動したり、起動確認するのは面倒だなと考えていました。
そこでECS+NLBを利用して各exporterの設定毎にDockerコンテナとして起動してしまえば楽じゃないかな?と思ったので今回はそのチャレンジしたことを記事にしています。

続きを読む

Swift 4 で UserDefaults を簡単に扱う

はじめに

iOS エンジニアのしだです。年始から喉が痛くずっとガラガラ声だったり左目が腫れたり2018年はなんだか嫌な予感がします。

最近、Kotlin を勉強しています。もう ことりん という響きだけでいとおしいく感じてます。 Kotlin 勉強しているときに以下の記事を見まして便利だなぁと思ったので、iOS の UserDefaults を同じように扱いたいなと思って書いてみました。

medium.com

今回は iOS の UserDefaults の小ネタです。

準備

  • Xcode 9.1 (Swift 4)
続きを読む

AWS Elemental MediaConvertあれこれ

みなさま、あけましておめでとうございます。
エンジニアの田渕です。

なんだか年末ギリギリまでバタバタしていたので、まったく年末感のないまま年末年始休暇に入ってしまいました。 そのせいか、今ひとつ年始感もありません……。年賀状もちゃんと出したし、お年玉もあげたりしたんですがね。。。 (ありますよね、そういうこと。)

さて、私のこれまでの記事では動画関連のネタを扱うことが多かったですが、今回も多分にもれず、動画関連です。 昨年開催されたAWS re:Invent 2017。この中ではたくさんの新サービスが発表されましたが、そこには新しいメディアサービスも含まれていました。

AWS re:Invent 2017 で発表された新サービスと機能 | AWS

今回は、そのうちの一つ、「AWS Elemental MediaConvert」のマイナー機能をご紹介します。

AWS Elemental MediaConvertとは

詳細については、公式の発表をご確認頂くのが一番わかりやすいかと思います。

AWS Elemental MediaConvert

これまでも、AWSには動画変換サービスとして「Amazon Elastic Transcoder」がありましたが、それよりも大規模かつ高解像度な動画の配信/メディアサポートを意識して作られているのがAWS Elemental MediaConvert。(と、私は解釈しています。) Elastic Transcoderでは基本的に「動画を変換するのみ」でしたが、Elemental MediaConvertにはそれよりも一歩進んだ機能が色々と搭載されています。

単純に動画の変換をするのみならば、公式ガイドの手順に従うだけで、かなりあっさりと動画の変換ができます。

docs.aws.amazon.com

毎度毎度、マイナーどころをついて恐縮ですが……。

メジャー(?)な使い方は、すでに他サイト等で情報がありますので、私が色々と触っている中で「へー」と思った機能をご紹介したいと思います。実際に触った方はおわかりかと思いますが、かなり機能が盛りだくさん!盛りだくさんすぎて、公式ドキュメント内でも事細かに全ては記載されておらず、メニューを触りながら各メニューのInfoを参照、それを参考にトライアンドエラーで発掘していく感じです。 (ちなみに、2018/1/4現在、Elemental MediaConvertの公式document等は英語のみの提供です。)

f:id:unifa_tech:20180104104213p:plain
Elemental MediaConvertのJOB設定画面

英語メニュー&ドキュメントと格闘しつつ、「これは今後使いたいかも?」と思った機能をご紹介します。

その1:動画の結合

地味ですが、意外に一番使いそうなのがこれ。複数の動画を結合した動画を作ることが出来ます。 やり方は至って簡単で、JOB作成時に指定するInputの動画を複数にするだけ。 あとは、通常の動画変換時と同じ設定で出来上がります。 更に言うと、その複数の動画の一部分だけを切り取って、結合させることも出来ます。

その2:別動画の音に差し替える

以下の公式ドキュメントにもある通り、今回のこの機能では、既存の動画の映像と音声を必要な部分だけ選んで新しい動画を作ることができます。 docs.aws.amazon.com この機能なのですが、音声の入力としてS3内にある別動画を指定することが出来るため、映像はこっちの動画、音声はこっちの動画、なんていう動画を作ることが出来ます。 動画の形式によっては、複数言語対応の動画を作成することも可能です。

その3:動画のノイズをちょっと消す

動画の出力設定内に「Noise reducer」というものがあり、そこでプルダウンから、あらかじめ用意されたフィルターを選ぶことで、動画のノイズをちょっとだけ消したり、逆に輪郭を強くしたりすることが出来ます。

使ってみましたが、気持ち変わったかな〜?というくらいの、自然な仕上がりでした。

まとめ

記事中に貼り付けたElemental MediaConvertのJOB設定画面をご覧頂くと分かる通り、とにかく設定出来る項目が多い!デフォルトのまま、必要な箇所だけを入力/選択していくことで通常の動画変換は行えますが、まだまだ細かく項目を見ていくと出来ることはたくさんありそうです。 また、実際に使った時に変換エラーになって初めて分かる仕様などもあり、よりよく使うにはとにかくトライしてみるのが良さそうです。 引き続き、面白い使い方が出来ないか、見ていきたいと思います。

では。

Amazon Rekognitionの顔検出が本当に良くなっていた

こんにちは、田中です。

AWSの開発者会議 re:Invent2017 で 画像認識サービスの Amazon Rekognition の顔検出の機能強化が発表されていました。

aws.amazon.com

機能強化の内容は

  • リアルタイム顔認識(何千万という顔のコレクションに対してリアルタイムの顔検索)
  • イメージ内のテキスト認識のサポート
  • 機能強化された顔検出(人混みモードの顔検出)

です。

このうち、ユニファの写真事業でもっとも関連の高い機能となる、「人混みモードの顔検出」の改善度合いを調べてみました。

人混みモードとは

以下の画像は上記のWebページからの画像引用になります

https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2017/11/21/rekognition-face-detection-3.jpg https://aws.amazon.com/jp/blogs/news/amazon-rekognition-announces-real-time-face-recognition-support-for-recognition-of-text-in-image-and-improved-face-detection/

このように群衆が写っている写真からの顔検出になります。

集合写真は園イベントに欠かせないものであり、保護者のニーズも強く実際によく売れています。^^

で、集合写真での顔検出はどれくらい改善したの??

以前、ユーザー購入写真5000枚を対象にRekognitionを使って顔検出したことがありました。

そのとき、集合写真もしくは集合写真に準ずる写真のうち顔が1つも検出できなかった写真は 111 枚ありました。

これらの写真を対象にもう一度、顔検出してみました。

すると、

顔検出できなかった写真は なんと 10 枚 だけでした

以前は写真が少しでもボケていたりすると集合写真ではまったくと言っていいほど顔が検出できなかったのですが新しくなったRekognition では相当数が検出できるようになってました。

驚きあるのみです

動画からの顔検出(Amazon Rekognition Video)

画像認識機能の進化の目玉はこちらかもしれません。

クラスメソッドさんが早速記事を書いてくれています。

dev.classmethod.jp

私もコンソール画面から試してみました。

まず、サンプル動画で試す

動画中に検出された顔が左に表示され、選択した顔の出現区間がオレンジのバーで表示されます。 f:id:sanshonoki:20171220160350j:plain

出現しなかった区間はオレンジのバーからちゃんと外れています。 f:id:sanshonoki:20171220160042j:plain

うーん、すごいです。

オフィス内動画で試す!

続いてオフィス内で動画を撮影し試してみました。15-30秒の動画だと約3分ほどで分析が終了しました。

まず、一番驚いたのが、、

顔がまだ写ってない区間も出現区間として検出されている!

f:id:sanshonoki:20171222205914j:plain

これはすごい。

検出した顔を元に時間方向にオブジェクト追跡しているのでしょうか。

顔でないものが検出されていたり、明らかに顔なのにそれが検出されていなかったり、顔検出が微妙なところがあるのですが顔検出できた顔に関して出現区間はおおよそ納得がいく結果でした。

<顔検出がうまくできなかった例>

f:id:sanshonoki:20171222212944j:plain

最後に園内動画でも試した

最後に、園内動画をいくつかピックアップし試してみました。(園の許可なく公開できないのでキャプチャ画像はありません..)

オフィス内動画の結果に比べると残念な結果でした。。

  • 顔の数が多い
  • 子どもの顔は大人の顔より区別がつきにくい

ためでしょうか。

ただ、Rekognitionの登場からわずか1年で動画対応できたそのスピードを考えると来年にはどこまで進化しているのか期待を寄せずにはいられません。

デモでアップロードできる動画は以下の制限がありますがこの機能は面白いのでぜひ使ってみてください。 (自分の手持ちの動画を使うときはS3バケットを作成する必要があります)

  • movはだめ。h.264でエンコードされたmp4のみ
  • 動画は1分以内、ファイルサイズ30MB以下(仕様は8GBまでいける)

るくみーには動画撮影機能もあるので引き続きRekognitionをウォッチしていきたいと思います!