ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

開発の期間や人件費を削減できる箇所は、大きく3つ(要求、環境構築、テスト)

2014-12-18 19:34:25 | Weblog
あれ、これ書かなかったっけ?

開発費を削減したい場合、やみくもに自動化してもうまくいかない
現在において、開発期間の短縮、人件費の圧縮ができるのは、3点だと思う

(1)要求仕様におけるUI関連仕様の削減
(2)開発、運用、テスト環境の標準化・自動化
(3)テスト自動化・品質向上

これ以外の、設計部分の自動化は、導入コストに比べると、あまり効果が
出ないと思う。現時点でも、かなり行われている。
 以下、それぞれについてみてみる




■(1)要求仕様におけるUI関連仕様の削減
 従来ユーザーインターフェースは紙でUI仕様書を作成し・・
 としていたが、プロトタイプでUIを作成、さらにはHTML5で
記述して、アジャイルによりコードを即座に作成していくこと
により、UI仕様書作成のための時間と人が削減できる

 また、JQuery等の利用により、UIのコーディング量は、
一時的に減っている。そのため、画面修正を即時にでき、
アジャイルを適用することにより、ユーザーと開発者間の
コミュニケーション量を増大させることが出来、その分、
意思疎通不足による工数は削減された
(一方、意思疎通しすぎによる、ユーザーが決められないための
 工数は増大中なんだけど・・・)




■(2)開発、運用、テスト環境の標準化・自動化
 従来は、いろんなパソコンに開発環境をいれ、
 開発が終わったら、テスト環境にインストールし、
 全部テストが終わったら、運用環境を構築し・・・

 ・・・といちいち別々に、手作業で構築していた。
 これが仮想化技術(開発用のクラウドを含む)や
コンテナ技術により、仮想環境を一回構築すれば、
その環境をコピーして、みんなが使えるようになった。

もう、この時点で、個別のインストールがなくなるということ、
環境の違いによるバグが生じにくくなったというメリットがあり、
これだけで、工数は大幅に削減している。

 さらに将来的には、Chef、Dockerによる自動環境構築、
Serverspecによる環境テスト等もあるんだろうけど、
そこまで行かなくても、効果は増大。




■(3)テスト自動化・品質向上

 回帰テストの自動化、とくにUI関係の自動化による、工数削減効果が
期待されている。

 テスト観点により、テスト品質をあげることに関しては、すでに
行われているが、問題は、要求仕様、UI,プログラミングの一貫した
テストに関しては、アイデアレベルではあるものの、実用化には
至っていない。


たぶん、今後大きく工数削減・費用削減ができるのは、
テストだと思う(自動化だけでなくSHIFTVALTESのような第三者テストを含めて))


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IEの互換性の修正・テストをする方法が書かれたサイトについて

2014-12-18 16:05:16 | トピックス

IE8が2016年1月12日にサポート終了するので、互換性テストどうするか、聞いてきた!
http://blog.goo.ne.jp/xmldtp/e/7814720f034ccd91797ed151c37648db

で聞いてきたはずの、IEの互換性の修正・テストをする方法について、まとめてみる。




■概要

IEの互換性テストをするには

方法1
・UIテストを流して、問題点を検出する
・Internet Explorer 互換性クックブックを見てがんばる

方法2
・Compat Inspectorを使う

いずれにせよ、修正したら
・各バージョンのブラウザで確認する。

という手順をとるが、これを行うツールがある。それについて




■UIテストを流して、問題点を検出する

VisualStudioのバージョンによっては、自動でUIテストができる。
くわしくは、
1.UI オートメーションを使用したコードの検証
http://msdn.microsoft.com/ja-jp/library/dd286726.aspx


2.自動 UI テストを使用したユーザー インターフェイスのテスト
http://msdn.microsoft.com/ja-jp/library/vstudio/dd286726(v=vs.100).aspx


を参照のこと。

なお、自動UIテストはseleniumでもできるが、seleniumのIEによる自動UIテストは、
seleniumIDEから、captureEntirePageScreenshotがエラー
に書いたように、なんかうまくいかない・・・(自分だけ?)




■Internet Explorer 互換性クックブックを見てがんばる

UIテストをして、ターゲットとなるブラウザで動かない場合、互換性の問題となる。
どんな互換性の問題があり、どうすればよいかは、


Internet Explorer 互換性クックブック
http://msdn.microsoft.com/ja-jp/library/ie/dn384059(v=vs.85).aspx


を見れば、わかるらしい。




■Compat Inspectorを使う

UIテストして、互換性クックブックをみてなおしてもいいが、
IEの互換性で問題がある機能を調べて、どう直すか教えてくれる
Compat Inspectorがある。
これは、Javascriptで、これを入れるのはめんどくさい。
そこで、プロキシFiddlerを通してCompat Inspectorを動かす方法がある

詳しくは、


Compat Inspector - ソースコードからIE独自機能を機械的に検出しWeb標準へ置き換えさせる方法
http://furoshiki.hatenadiary.jp/entry/2014/01/06/030742


を参照のこと(そこにやり方が書いてある)




■各バージョンのブラウザで確認する

とにかく、修正したら、各ブラウザで確認する必要がある。

http://modern.ie
にいくと

のように、「仮想マシン」を使ってIE6~11までの動作状況を確かめられる。
同様に確認できるものとしてBrowserStackがある。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Excel VBAで、REST(JSON)データ取得

2014-12-18 12:45:25 | Officeソフト&VBA
Excelのマクロ(VBA)を使って、
RESTでJSON形式で返ってくるサイトにアクセスして、
結果を表示したいということって、ありませんか?
(ないって・・・あると思ってください)

例えば、今、ある検索を、RESTでサーバー側で実行させていて、検索結果をJSON
で返して、ブラウザに表示しているんだけど、実は、Excelでも見たいんだよねえ~
というケース。


VBAでJSONを扱う
http://javascript.dohow.jp/advance/jsonvba.shtml


に、そのやり方が書いてあったので、やってみました。




■例

今、以下のJSONデータ
{
  "mytablename":"user",
  "mytable":[
    {"myid":"1","myname":"family1 last1","mydate":"2014/12/10"},
    {"myid":"2","myname":"family2 last2","mydate":"2014/12/10"},
    {"myid":"3","myname":"family2 last3","mydate":"2014/12/10"},
    {"myid":"4","myname":"family3 last4","mydate":"2014/12/10"}
   ]
}

が、jsontestdata.phpにアクセスすると、得られるとする。
(JSONでのレコードの書き方は
Javascript|JSONでの、レコードの表現方法(配列、連想配列)→{}と[]の違い
を参照)
これを取得する

■ソースコード

Sub ボタン1_Click()

'#########################################
'# JSON操作:VBAでJSONを扱う
'# http://javascript.dohow.jp/advance/jsonvba.shtml
'# から引用
'#########################################
Dim objSC As Object 'Script Control
Dim strFunc As String '関数文字列
Dim strJSON As String 'JSONデータ(文字列)
Dim objJSON As Object 'JSONファイルをパースしたもの

'# JSONの為の設定
Set objSC = CreateObject("ScriptControl")
objSC.Language = "JScript"
strFunc = "function jsonParse(s) { return eval('(' + s + ')'); }"
objSC.AddCode strFunc


'# jsontestdata.phpアクセス
target_url = "http://localhost/jsontestdata.php"
sendData = ""

' POSTで飛ばします
Set httpObj = CreateObject("MSXML2.XMLHTTP")
httpObj.Open "POST", target_url, False
Call httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
httpObj.send (sendData)

strJSON = httpObj.ResponseText
Set objJSON = objSC.CodeObject.jsonParse(httpObj.ResponseText)

'# 結果表示
recno = 1
For Each rec In objJSON.mytable
Cells(recno, 1) = rec.myid
Cells(recno, 2) = rec.myname
Cells(recno, 3) = rec.mydate
recno = recno + 1
Next

End Sub



■実行してみた



■注意点

名前がmytable,mynameなど、myをつけている理由。

これをtableとしてしまうと、VBAはTable,Nameなどのように、
1文字目を大文字にしてしまう(VBAにそういうプロパティ等があるため)
ところが、大文字にしてしまうと、当然、違うものなので、エラーに
なってしまったりする。

それが面倒なので、全てにmyをつけている。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ExcelからマクロでPHPにアクセスしたときに、セッションはどうなるか?

2014-12-18 10:43:54 | Officeソフト&VBA
セッションIDを送らなくても、引き継がれるか実験。

■ソースコード

●PHP側 session.php

<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

Hello world! <?php echo $_SESSION['count']; ?>Times.


http://php.net/manual/ja/session.idpassing.phpを参考に一部編集

●Excel側session.xls(2003以前の形式xlsで保存)

「ボタン1」をクリックしたときの処理
(「標準モジュール」として作成)

Sub ボタン1_Click()

target_url = "http://localhost/session.php"
sendData = ""

' POSTで飛ばします
Set httpObj = CreateObject("MSXML2.XMLHTTP")
httpObj.Open "POST", target_url, False
Call httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
httpObj.send (sendData)

' 結果表示
MsgBox (httpObj.ResponseText)

End Sub



■実験結果
●ボタン1をクリックすると、

Hello world! 1Times.
Hello world! 2Times.
Hello world! 3Times.

と上がっていく。ファイル(session.xls)を閉じても、Excelが開いて
いる場合は、カウントアップしていく

●Excelを閉じて、再度Excelを立ち上げ、開くと、1からカウントアップする
→つまり、Excelを閉じると、そこでセッションも切れる。


●ここで、3Timesになったとき、session.xlsをコピーし、session-コピー.xlsを
作成し、それを立ち上げ


session-コピー.xlsの「ボタン1」をクリックすると

Hello world! 4Times.
となる。つまり、Excelが同じなら、そこで開いているファイル内で
Sessionは共有される(ブラウザのタブと同じ?)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする