2018年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

最近のトラックバック

無料ブログはココログ

IT関連

2018年7月 9日 (月)

健康おきなわ21 アルコール

お酒を飲んだ帰りにTwitterを見ていたら、摂取カレンダーなるものを見つけたのでご紹介します。

健康おきなわ21 アルコール
http://alc.okinawa.jp/

もともと沖縄県が県内の健康促進の為に作ったアプリらしいんですが、キャラクターがことのほか可愛らしく(笑)

とりあえず診断してみたところ、こんな感じでした。

20180707

ちなみにこの状態だと「悪口をポンポン言う」とのことなので、悪口を言います。今なら許されると思います。

……やっぱりやめた(小心者

なお、飲酒状況をカレンダーで管理できるので、お酒を飲む機会がある人にぜひ使ってみて欲しいです。

20180707_small

2018年6月27日 (水)

スタブとドライバについて

IT関連の話です。

アプリケーションの試験をするときに、スタブとドライバというものが必要となることがあります。

プログラムを書いている人ならスタブとドライバ、その役割について当然知っていると思うんですが、テスターはどうもピンとこないことがあるようです。

特に、完成したアプリケーションの受け入れ試験しかしたことが無い人は理解に苦しむようで、「なんでこんな訳の分からないものを使わないといけないわけ?」と、ブツブツと文句を言う声がよく聞こえます。

簡単に説明します。

あなたはプログラマーです。Bという機能を作ることを指示されました。仕様は次の通りです。

Aという機能から顧客名簿を渡されます。
渡された顧客名簿から条件に合う顧客を抽出し、一覧表を作成します。
出来上がった一覧表を、Cという機能へ渡します。
渡した一覧表はCで処理され、処理結果が送られてきます。
その処理結果をAに通知します。

さて、あなたは機能を作成しました。しかし、AもCも作成が遅れており、AとB、BとCの連携部分が正しく動くかどうか確認することができません。どうしましょう。

というところで出てくるのが、スタブとドライバです。

Bから見て、Aにあたるものがドライバ、Cにあたるものがスタブとなります。自分を呼び出すものがドライバ、逆に自分が呼び出すものがスタブということになりますね。これを使って(作って)連携部分の動作を確認していきます。

AとCの開発が遅れていなければ、動作確認ではそれを使えばいいんじゃないの?と思うかもしれません。ですが、いきなり結合して試験すると不具合があったときに、問題がA、B、Cのどこにあるのかが分かりづらく、少なくとも単体テストレベルではスタブとドライバを作成するのが一般的です。

連携部分だけ確認できればいいので、スタブもドライバも中身は必要最小限で問題ありません。

ドライバは顧客名簿をBに渡すところとBから処理結果を受け取る処理、スタブは一覧表を受け取るところと処理結果をBに渡す処理だけ実装すれば良いですかね。

Cは一覧表を処理するという機能がありますが、スタブでは任意の処理結果だけBに渡せれば存在していればよいので、一覧表を実際に処理するところは作りこむ必要はありません。そこまで作りこんだら、Cを作ったのと同じことになるので。

上の方で「簡単に説明します。」と言っておきながら、意外と長かった……。

そんな話なのですが、難しいのかなぁ……。

2018年5月24日 (木)

Off Hook / On Hookキーって知ってますか?

仕事で仕様書を見ていたら、"Call start key", "Call end key"という単語が書かれていました。

一瞬、「なんだこれ?」と思ったんですが、よく考えたら"Off Hook(オフフック)"、"On Hook(オンフック)"キーのことだったんですよね。

なんのことか説明すると、今だとガラケーと呼ばれるタイプの携帯電話あるじゃないですか。あれに、数字ボタンやらカーソルボタンやら、いろいろボタンがありますよね。あの中の、電話を掛けるときに押すボタン、電話を終了したり待受画面に戻るときに押すボタン、それがOff Hook、On Hookキーです。

OffとOn、それからHookって何だろうという人もいると思うので併せて説明すると、固定電話で受話器を上げるとフックが外れ、電話を掛けられるようになります。フックが外れるのでOff Hookと呼ばれます。逆に受話器を置くとフックがかかるので、On Hookとなります。

詳しくはWikipediaを見てやってください。

「フックスイッチ」https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%83%E3%82%AF%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81

まあそんな感じなんですが、そういえばスマホはタッチでの操作がメインだし、受話器のイメージ無いよなぁ……。公衆電話の使い方を知らない世代なんかも増えているらしいので、そのうち"Off Hook"も"On Hook"は聞かなくなるのかもしれませんね。

2018年5月18日 (金)

Google Drive File Streamのエラーからの復帰

Windows10が入ったPCに、GoogleのDrive File Streamというソフトを入れています。

これは何かというと、Windowsのエクスプローラーを使って、Googleドライブをあたかもローカルのフォルダのように扱えるというソフトです。

ところが、このDrive File Streamが一時期起動しなくなってしまいました。起動しようとすると、「問題が発生したためドライブファイルストリームが停止されました」というメッセージが表示されます。

イベントビューアを確認すると、以下のようなエラーが発生しています。

「リモートサーバーから受け取った証明書は正しく検証されていません。エラーコードは0x80092013です。TLS接続要求は失敗しました。添付されているデータにサーバーの証明書が含まれています。」

Gfs_

さて困った。

Googleで色々検索しましたが、出てくるのはMacでの不具合ばかり。Windowsの情報はほとんど見つからず、仕方がないので、ソフトを入れ直したりPCを再起動したり。しかし全く直る気配がありません……。

諦めて放置していましたが、「あれをやったらどうなんだろ?」と思い、試してみたところあっさり直りました。試した内容は、インターネットオプションのセキュリティタブにある「信頼済みサイト」にhttps://drive.google.comを追加するだけ。

Gfs__2

ウソのように解決。もし同じような事象が発生している人がいたら、お試しください。

2018年5月16日 (水)

馬券購入の参考になりそうなプログラムを書いた話

「マイナスにならないようにオッズに合わせて馬券を買えば、お金持ちになれるんじゃ?」

そんな邪な考えが頭に浮かんだので、単勝の全頭買いで必要な金額を計算するプログラムを書いてみることにしました。最初は携帯に便利なAndroidアプリを作ろうと思いましたが、どんなもんか確認したくって、簡単に作れるExcel VBAで作成。

ロジック的にはこんな感じ。

1. 全頭に100円ずつ賭け、総掛金を求める。例えば16頭立てなら1600円になる。

2. 1枠から順番に以下の処理を行う。
 オッズとその枠への掛金を乗算して配当を求め、総掛金と比較する。

 (a) 配当 >= 総掛金以上の場合は次の枠へ。
 (b) 配当 < 総掛金の場合は配当が総掛金を超えるように枠への掛金を調整し、1枠から計算をやり直す。

プログラムは以下の通り。細かいところは突っ込まないで欲しいです。あくまで動作確認用なので。

Option Explicit

Private Sub Btn_Calc_Click()

    Dim ListTop As Long
    Dim Counter_A As Long

    ' 初期設定
    Range("C2:C17").Value = 100

    ListTop = 2
    Counter_A = ListTop

    Do Until Cells(Counter_A, 1).Value = ""

        If Cells(Counter_A, 4).Value >= Range("C18").Value Then

            Counter_A = Counter_A + 1

        Else

            Do Until Cells(Counter_A, 4).Value >= Range("C18").Value

                Cells(Counter_A, 3).Value = Cells(Counter_A, 3).Value + 100

            Loop

            Counter_A = ListTop

        End If

    Loop

    MsgBox "計算が終わりました"

End Sub

複雑な計算はせず、というより数学の素養が無いから全く計算式が思いつかないだけですが、実に素直に順番に計算をしています。

で、JRAのサイトから適当なレースのオッズの値を利用し、実行してみました。最初はすぐに終わると思っていたのに、ぜんぜん終わる気配が無い。1時間以上経っても終わらないので中断……。

1時間15分動かした結果がこちら。

Photo

12枠までの計算は順調に進んだのですが、そこから1枠に戻っては掛金の調整が入るというのを繰り返して、13枠以降が全くの手付かずです。最初、プログラムがバグってるんじゃないかと思ってしまいました。

この時点で6億超えてますが……。本当に合ってますかね?

しかし、これを見る限り、全頭買いでお金持ち計画は無理なんだなぁって思いました。だって、6億あったら馬券なんて買わなくていいもんね。

2018年4月19日 (木)

Windowsシャットダウンスクリプト

うちの会社では、退社前にその日の稼働時間を勤怠システムに入力するというルールがあるのですが、どうしても忘れてしまう社員さんがおりました。

「気を付けるようにします」
「忘れないように、周りの人達で声掛けしましょう」

そんな感じで「努力で何とかしようぜ」という流れになっていたので、「IT企業らしく仕組みを作った方がいいんじゃないかなぁ」と思ったんですよね。

そこで、PCをシャットダウンする際にメッセージが表示されるWSH(Windows Script Host)を作成しました。本当はWindowsのポリシーに設定したほうが確実っぽいのですが、ポリシーをいじるとシステムを管理している部署から指摘を受けそうなので、デスクトップにスクリプトを置き、それを実行することによりシャットダウンをする運用となっています。

なので、スクリプトではなく通常の手順でPCをシャットダウンすると全く意味が無かったりしますが、まあいいでしょう(汗

ここに書いたことはGoogleで検索すればすぐに出てくるようなものなのですが、個人的な備忘録のために載せておきます。

Set objWshShell = WScript.CreateObject("WScript.Shell")

RC = MsgBox("シャットダウンします。" & vblf & "稼働時間を入力済みですか?", vbYesNo, "シャットダウン")

If RC = vbNo Then

 MsgBox "シャットダウンを中断します。", vbOKOnly, "シャットダウン"

Else

 objWshShell.Run "C:\Windows\system32\shutdown.exe -s"

End If

以上

2018年3月30日 (金)

Appium環境構築のその後

WindowsでのAppium環境構築のその後ですが、なんとか動くところまで持っていけました。

やっぱりプロキシがいろいろと悪さを。

appium-simple.jsだとApiDemos-debug.apkはappium.github.ioからダウンロードしてくる処理になっているので、Windowsの環境変数にHTTP_PROXYを追加していたのですが、それだとappium-simple.jsを実行するとローカルのAppium Serverに繋がらなくなるという問題がありました。

それに気が付かず、かなりの時間を消費してしまった。

どうして気が付いたのかというと、Appium for WindowsにてInspectorを起動してみると、実機にてちゃんとアプリが起動したから。

起動したということはAppium Serverに問題は無い
 → Appium Serverへの接続が上手く行っていない
  → 外部に接続しにいかないようにしたらいいのでは
   → じゃあ、apkをダウンロードしないようにすればいいじゃん

という思考を踏み、Windowsの環境変数からHTTP_PROXYを削除、apps.jsを修正することで無事に動作するようになりました。

このあと、Appium for WindowsではなくAppium-Desktopに乗り換えたりなどしましたが、とりあえず一安心。あとは環境構築の手順書を作ることと、JavaScriptの勉強をし直せば完璧。

……ん? 完璧じゃないか。自動化をどうやって仕事に組み入れるかという本題があるじゃないか(笑)

2018年3月27日 (火)

WindowsにてAppium環境構築しています(途中経過)

Appiumという、モバイルアプリのテスト自動化ができるフレームワークを存在を知ったので、仕事で使えないかどうか調査中です。

Qiitaに投稿されている記事を参考にしていますが、仕事の合間に作業をしているので、まだ動作確認をするところまでには至らず。

Qiita - Windows で appium / appium desuktop 環境セットアップの覚書
https://qiita.com/Real_analysis/items/59af03961250e8e77ba9

以下、試行錯誤メモです。ご笑覧ください。

JavaとAndroid Studio、Android SDKは既にインストール済みなので、node.js、appium for windowsとインストールを行い、最後のappium-doctorをインストールするところでエラー。

会社なのでProxyが設置されているのですが、それが悪さをしてインストールできないという事態っぽい。サイトを色々見て、proxy、https-proxy、registryあたりを設定することで少し進んだようですが、次は以下のエラーメッセージが。

npm ERR! 407 Proxy Authentication Required: appium-doctor@latest

ユーザ名とパスワード認証が違うんだろうなということは分かるので、proxy、https-proxy指定するURIにユーザー名とパスワードを含めるようにしたものの、何も変わらず。パスワードに記号が入っているのでURLエンコードしているのですが、ダメなんですかねぇ……。

appium-doctorは入れなくても問題なさそうですが、実行環境が整っているかどうかをチェックしてくれるものなので、一応入れておきたいですよねぇ……。

と、いろいろ試してみましたがどうしても上手く行かないので、記号を使わないようにパスワードを変更しました。パスワードを変更するといろんなところに影響がある(というかめんどくさい)から、できれば変えたくなかったんですよね。でも、そうしたらappium-doctorをインストールできました。たくさんWarning出ましたけど(笑)

しかし、appium-doctorを実行しようとしたら上手く動作せず……。

ひょっとしてGlobalでインストールしなくてはいけないのか? と思い、proxy設定などをGlobalに移行し、再度appium-doctorをインストールしたらWarningもなくなり、無事に動いて"Everything looks good, bye!"というメッセージが表示されました。

これで先に進められる。よかったよかった。

だが、今度はsample-codeが動かせず、困難はまだまだ続くのであった……。

できるようになったら、手順まとめて公開します。

2018年3月22日 (木)

第三者検証におけるテストの自動化について悩む

そもそもこのブログを復活させようと思ったきっかけは、ソフトウェアテストシンポジウム(JaSST)に参加してみたことがきっかけなのでした。色々な刺激を貰ったので、「自分でも何か発信できないかなぁ。知識の整理もしたいし……」なんて。最新の技術についてあまり追えていないので、たいしたことは書けないですけど。

で、そのJaSSTで、普段Web系の評価は行ったこともないくせに、基調講演を始め、スクラムによるテストなどのWeb系のセッションを多く選んでしまい、その中で数多く出てきた「自動化」というワードに憑りつかれています。

今の会社ではお客様と一緒に、もしくはお客様の代わりにシステムテストや受け入れテストを実施する第三者検証をしており、ほぼ手動でテストをしています。毎回異なる製品に対して試験を行うため、過去のテスト手順などの資産は利用できず、自動化は進んでおりません。

初歩的な疑問で申し訳ないのですが、そもそも自動化って、出来上がってきたシステムやアプリケーションなどに対して第三者検証を行うタイミングでするものなのですか? 個人的なイメージだと、テスト駆動開発という言葉があるように、もっと開発寄りで行うものなんじゃないかなーと思ったりしています。

ということは、ソフトウェアに対する第三者検証において自動化ってあまり意味が無いんじゃないかな……。かといって昔と同じように人海戦術でテストを終わらせるってやり方は、今後ディスアドバンテージになりそうだし……うむむ……。

「そもそも開発側でテストをしっかり行えば、第三者検証なんて要らないのでは?」

そんなことまで考え始めたりするぐらい、頭の中がごちゃごちゃしております。

世の中には第三者検証を大々的に打ち出している会社がたくさんありますが、その会社さんたちは自動化を進めたりしているんでしょうかね? もっとも、他社さんには教えてくれないでしょうけど。

2018年3月15日 (木)

Synology DS218jを買いました

2009年に買ったNAS、I-O DATAのHDL2-G2.0がエラーを起こすようになりました。

Dsc_0202

電源を入れると、HDD1がエラーを起こして赤ランプが点滅し、激しいBEEP音。

片方のHDDが壊れただけなので交換で行けるかなと思ったのですが、古すぎて生産終了となっており、簡単には手に入りそうにないということが判明。仕方がないので、新しいNASを構築することにしました。

夜も遅い時間でしたが、AmazonでNASをポチ。翌日、会社から帰ってくると荷物が届いていました。Amazonさまさまです。

購入したのはこちら。

20180314_200612

SynologyのDS218jです。中身は無いのでHDDは別注文。買ったのはこちら。

20180314_200728

Western Digitalの赤。1つ4TBあります。

最近のHDD単価は、1TBあたりだいたい4000円なんですね。昔に比べるとだいぶ安くなったなという感じです。まあ、滅多にHDDなんて買いませんので、どのくらい昔だって話もありますが。

ケースを開けて、こんな感じでHDDをセットします。

20180314_202952

後はケースを再び元に戻し、電源ケーブルとLANケーブルを接続。ブラウザを起動して設定を終わらせれば完了というお手軽さ。なんか色々機能があるみたいですが、そのあたりはおいおい調べていこうと思います。

まずは、壊れかけたNASからファイルをコピーするところから始めています。しかし、ファイル数が多いので、コピーだけでもかなりの時間がかかりそうです。

しかし、今回のNASは予定外の出費でした。昔に比べて安く済んでいるとはいえ、痛いものは痛いですね。しばらく出費を抑えなくては。