ソフトウェア品質って何だろう

ちょっとお仕事で品質に関わる機会が増えたんだけど,
「品質ってなんだよ」というレベルなので,
これを機にお勉強することとする.

そもそも「品質」の定義自体が提唱者によってバラッバラ.
とりあえずいつも通り,Wikipedia先生に聞いてみる.

品質 - Wikipedia

サービス業が提供するサービスの有する特性、もしくは属性をいう。

例えば
「NK5の身長は160cmだ」
という文章においては,「身長」という特性が,一種の「品質」となる.

さて,この160cmという数字を
「チビ乙wwww」と思う人もいれば,
「ちっちゃくてかわいい」と思ってくれる人もいるだろう.
あるいは江戸時代の人なら
「標準的な身長ですね」くらいに言ってくれるかもしれない.

重要なのは,品質の評価は受け取り手によって変わるということだ.
また,今回は身長という測定可能な特性を扱ったが,
例えば「NK5のルックス」なんて話になったら
実際に見てもらわない限り,品質の是非を論じることはできない.

で,とても残念なことに,ソフトウェアは基本的に目に見えない.
正確には,最終的には何かしらのViewが生まれるわけだけど,
製造過程においては,ほとんど紙か電子データの集合でしかない.
このことからもわかるように,ソフトウェアの品質というのは
とても論じることが難しく,究極的には宗教に近い.

それでも,品質を定義しようと頑張っている人がいる.
代表例が,ISO/IEC 25000シリーズとかいうやつだ.
そこから導出されたJIS規格については
以下から誰でも無料で参照することができる.

JIS X 25000:2010 ソフトウェア製品の品質要求及び評価(SQuaRE)−SQuaREの指針
JIS X 25010:2013 システム及びソフトウェア製品の品質要求及び評価(SQuaRE)−システム及びソフトウェア品質モデル

全部読んでいると日が暮れるので(いつかは読まないといけない),
とりあえず今回は後者の品質モデルに着目する.

品質モデルとは何ぞやということだけど,
要は上述の例でいうところの「身長」のような「特性」を
カテゴライズしながら列挙したもの,という理解で良いと思う.

ここで
「品質の評価は受け取り手によって変わる」
という事実に立ち返る.
ソフトウェアの品質を評価する人って誰だろうか?

まずは間違いなくユーザだ.
だからこそ品質モデルには「利用時の品質」というものが
定義されている.
これはとても分かりやすい.

続けて開発者だ.
開発者にとって製品は我が子みたいなものなので(例外もあるが),
あれやこれやと褒め称えたくなるものだ.
その褒めたたえる観点が,
もう1つの品質モデルの「製品品質」と言える.
つまり,
「うちの子はこんなことが出来るんです」
の「こんなこと」に埋め込む言葉を集約したのが,製品品質だ.

「利用時の品質」も「製品品質」も,つまるところ視点の違いなので,
同一の対象に対し,同時に論じることが可能だ.
例えば「音読ガイド機能」を考えよう.
目が不自由な人向けに用意されたこの機能は
「製品品質」においては「アクセシビリティ」に対して
大きな加点をもたらす,かもしれない.
一方で「利用時の品質」においては「満足性」とか「有効性」に
加点をもたらす,かもしれない.

「かもしれない」を連呼している理由は,例えばこれが
俺個人だけの利用を想定している自作アプリに実装されていたとしても,
まったく無駄な機能であり,品質上何の加点ももたらさない.

しつこいが,「誰が」「いつ」「どうやって」使うかという点が
品質を語る上で必要不可欠だ.
特に直接的な利用者ではない開発者にとって
そこの特定は至難の作業と言えるし,腕の見せ所ともいえる.
古典的なウォーターフォールでは,それを要件定義書という形で
大量の文字列に置き換えようと試みる.
アジャイルはもっと開き直っていて,
「利用時の品質を知りたければ,利用してもらえば良い」という信念で
ドキュメンテーションよりデリバリを優先する.
無論,大外れしないよう,ユーザーストーリーという仮説を用意するが.

とりあえず,大枠はこんな感じ.
この後,数パートに分けて,具体的な品質特性を勉強する記事を書く予定.

株価を検索するツール #3

細々と作っていました.

GitHub - nk5jp/StockAnalyzer

とりあえずタイトル画面はこんな感じ.
f:id:bob_l_s:20180521000310p:plain

「Stock」ボタンでこの一覧に検索表示する銘柄を編集.
上の画面は,コード7974(任天堂)だけ設定した状態.
「Save」ボタンを押すと,現時点の価格を保存できる.

保存した価格情報は銘柄のリストを押すと一覧表示できる.
f:id:bob_l_s:20180521000733p:plain

ここで価格情報を手動で追加・修正・削除することも可能.
保存し忘れた情報とかはここでポチポチ修正する運用イメージ.
(削除は0円で保存するという若干面倒な手順)
ちなみに現時点で「Add/Edit」以外のボタン押すとフリーズします.


次はグラフ表示だけど,良いライブラリないかなぁ.

ゼロから作るDeep Learning 感想

とりあえずディープラーニングについて
最低限語れるようになっておきたいという,
非常にシンプルな動機による購読.

AI絡みの話題で頻出の「ディープラーニング」について,
概念を説明しつつ,Pythonによる実装例も併記することによって
実践の足掛かりも与えてくれているのが,この書籍.

ディープラーニングを頑張って説明すると,
何かしらを判断させる演算マシンの内部パラメータを
自動的に最適値に調整させる技術,という感じ.
最初はポンコツな判断しかできないマシンが,学習を繰り返すことで
最終的には人間以上の判断能力を備えたマシンになる.

この技術の要となる行列演算は膨大な計算リソースを要するため,
昔はそれほど注目されていなかったわけだけど,
技術向上によってリソースのハードルが下がったこともあり,
色んな分野で応用しましょうというトレンドが,最近発生している.

AlphaGo(アルファ碁)が世界王者をフルボッコにした,
なんてニュースが以前話題になったけれど,あれもその一例.
人間には想像だにできない「最良手」を,膨大な「学習」の上に
「認識」した,という形となる.

話をこの本に戻すと,
「畳み込み」をはじめとする,ディープラーニング関連の
キーワードは,概ねこの本の中で網羅されている.
行列演算についても基礎のレベルから説明されているので,
あまり数学は得意じゃないという人にも十分読めるかと.

第5章の「誤差逆伝播法」が唐突すぎて「?」だったけれど,
ここはぶっちゃけ読み飛ばしても良い.
連鎖律の説明に特化しすぎていて,本質を捉えていない感がある.
誤差逆伝播法の意図するところについては,ググるなりして
ネット上で適当に調べた方が遥かに速い.たとえば以下.
誤差逆伝播法を宇宙一わかりやすく解説してみる - ロボット・IT雑食日記

今後もAI技術は進歩し続けるだろうから
この本に書かれていることも数年後には陳腐化しているかもだけど,
ある程度の前提知識を押さえておきたいという目的は
十分達成できたかなと思う.


株価予測モデルとかで応用してみたいなぁ.

ロックマン ゼロ コレクション 感想

ロックマン ゼロ コレクションNEW Best Price! 2000

ロックマン ゼロ コレクションNEW Best Price! 2000

縛りプレイ動画に触発されて購入.
ゲームボーイアドバンスで発売されたロックマンゼロ1~4を
この1つのソフトで遊ぶことができる.

イレギュラーと認定された無実のレプリロイドを救うべく
レジスタンスを統率していた人間の少女シエル.
彼女は窮地を打開するため,封印されし伝説の英雄ゼロを覚醒させる.
シエルに協力することを決意したゼロは,
かつての親友エックスが統治するネオアルカディアとの闘いに赴く.

X6の某ENDからの続編とか言われたりしているけれど,
後付けの設定が色々加わったりして,その辺りは曖昧になっている.
設定を流用した別作品,くらいの解釈が妥当だと思う.

本家のエックスはイレギュラーハンター,つまり「狩る側」だけど,
本作ではゼロたちがイレギュラーであり,「狩られる側」となる.
さらに悩み続けていたエックスに対して
「悩まない」ゼロの立ち振る舞いが強調されていたりと,
色んな面で,本家とは対極に位置する作品となっている.

細かいエピソードはツッコミどころ満載なんだけど(特に2),
アクションゲームとしては十分なストーリー設定じゃないかな.

肝心のアクション部分は非常に良い.
Xシリーズ独自のスピード感溢れるアクション性が再現されており,
かつ,ゴリ押しは返り討ちに遭うのがオチなので,戦略性も高い.
※「サイバーエルフ」という救済措置を駆使すればゴリ押しも可能

さらにステージ毎に採点制度が設けられており,
全ステージ満点(俗称:アベ100)を目指すと,完全な鬼畜ゲーと化す.
ハードモードのアベ100に挑戦したが,何度も気が狂いそうになった.

GBAってぶっちゃけ音質が酷いイメージしか無いんだけど,
この作品のBGMはかなり頑張っている方だと思う.
「Crash」「Esperanto」をはじめ,印象に残る曲が多かった.

難点として,大味な難易度設定のステージがたまに出てくること.
特にゼロ1の最終ステージやゼロ2の爆撃機ステージはトラウマレベル.
あと,ところどころのイベントが長いのも評価を落とすかな.

ともあれ,非常にクオリティの高いゲームであることは間違いなく,
面白いアクションゲームを求めている人には非常にオススメ.
年甲斐もなく,ハードのアベ100達成のために
5か月近く頑張ってました.以下がそのキャプチャ.

f:id:bob_l_s:20180415222210p:plain

続編のゼクスをやるかは検討中.

ゆるキャン△ 感想

www.nicovideo.jp
2018年1月~3月の間に放送されていたアニメ.ニコニコ動画で視聴.

山梨への引っ越し直後に富士山を眺めに行った結果,
キャンプ場近くで路頭に迷ってしまった各務原なでしこは,
ソロキャンプを趣味とする志摩リンによって助けられる.
その日を境にキャンプに興味を持ったなでしこは,
転入先の高校にある「野外活動サークル」へと足を運ぶ.

「冬のキャンプ」というマイナーな娯楽をターゲットとして,
ソロキャンプとグループキャンプの双方の楽しさを丁寧に描いた作品.
夜景や日の出といった背景描写がとてもキレイなのが特徴的.

また,それと同じくらいキャンプ飯の描画にやたらと力が入っており,
特に第1話のカップ麺のシーンは凄まじい飯テロだったと思う.
ある意味ではグルメアニメ(漫画)と言えるのかもしれない.

主要キャラ5名は割とバラバラに活動しているのだが,
(ラストのクリスマスキャンプまで本格的な全員集合シーンが無い)
スマホSNSでコミュニケーションをとっているので,
そういった物理的距離を感じさせない作りになっているのも興味深い.

タイトルどおり,シリアスな展開はほとんどなく,
ゆるゆるとした時の流れでエピソードが進むので,
のんびりと鑑賞できる良いアニメだと思う.


原作コミックスがやたらと品薄で買うのに苦労しました.

株価を検索するツール #2

とりあえず検索対象を設定する画面を簡易で用意.

GitHub - nk5jp/StockAnalyzer

既にいくつかバグは見つけているので,
次はそれらを潰していくところかなぁ.

DAO周りは毎回同じものを描いてるので,
そろそろライブラリ化したいかも.

株価を検索するツール

1年くらい前に作ろうとしてペンディングしていたツール.
本当は情報をタンキングしたり分析したいんだけど,
現状では検索のみ.

GitHub - nk5jp/StockAnalyzer

web上で検索してきたものを表示している感じ.
対象サイトは一応,スクレイピングNGとは明記してなかったけど
怒られたら止めます.

使うとこんな感じ.今は対象銘柄をハードコーディングしているので
この3つしか検索できません.

f:id:bob_l_s:20180212183132p:plain


暇なときにでもコツコツと作っていきたいなぁと.