2011年11月7日月曜日

仮想アプリが動かなかった時の心構え


仮想アプリが動かなかった時の心構え
ThinApp App-V


以前に、投稿した「アプリ仮想化の成功率を上げる5つのポイント
http://tunemicky.blogspot.com/2011/10/5.html

この投稿をまとめる前に自分自身で、経験した事や
そこから、見つけた心構えについて、今回は書きたいと思います。
20個も心構えがありますが、折れない心を持つために。


アプリの仮想化をしていて、上手く動かないと、
心が折れそうになることが多々あります。


折れそうになる心をいかに折れなくするか。
上手く動かないと、イライラしてきますよね。
「なんで動かないんだ!!」
イライラしているうちは、まだまだです。
相手の思うツボです。イライラしていると心が折れます。

では、どう考えたらよいのか。
「ゴメン。動かしてあげられなくて。」
この心境に達することができると、かなり成功率が高くなります。(笑)

アプリ仮想化はRPGと似ていると思っています。
いきなり、ラスボスと戦わないですよね。ラスボスと戦って勝ってエンディングを迎えるためにはそれなりの、準備、経験、戦略が必要ですよね。
・レベルを上げる(HP・MPを上げる)
・良い武器、防具、道具を持つ
・戦略やパーティーの特性を考える
・敵の特性を理解する
・良い攻略本を読む
・ゲームシナリオ、製作者側の意図を感じ取る
・ハマりまくる・純粋にゲームを楽しむ
・誰かに聞く
等々、たくさんあると思います。

アプリ仮想化もある種ゲームみたいな物です。
このように考えるだけで、少し気持ちが楽になるんじゃないかなと。

【20の心構えについて】
  1. 過去の経験と照らし合わせる
  2. エラーログを調べる
  3. とにかく検索(世界中で同じ壁にぶつかった人がいるはず) 日本語&英語で検索
  4. 問題が発生した環境を調べる
  5. 再現環境を新しく作る 
  6. 正常に動作する環境を全力で作る 
  7. 仮説をたて、それを基に検証パターンに落とし込む 
  8. インストール設定手順が間違ってないか確認 
     
  9. モジュールやレジストリ設定の仮想化が足りないかも。と考える 
  10. 問題の発生した環境に物理インストールしてみる
  11. ユーザーの権限が足りないかも、 管理者権限だったら。と考える
  12. 再起動して見る 
  13. 別のネットワークにいる端末を使ってみる 
  14. 誰かに相談&事象の説明をする。とにかく声を出す。 
  15. いったんリフレッシュ。休憩する。
  16. 仕切り直す。 家に帰って飯食べて風呂入って寝る
  17. プログラムに感情移入してみる(プログラム側の気持ちになって考え直して見る)
  18. 各種デバッグツールを活用 
  19. 無事に動きみんなで喜ぶ光景を想像する。
  20. 諦めない。
1.過去の経験と照らし合わせる
経験を積むのに近道はないかもしれませんが、以前にハマった事や
対処したTipsを理解し次に生かせるかがポイントになります。
例えば、このアプリを仮想化する際は、このTipsを使う。
次に全然違うアプリを仮想化する際にも、ひょっとしたら
以前のTipsが適用できるかもしれません。
適用できる、できないは、そのTipsの意味を深く理解している事が重要です。
深く理解していれば、応用が効きます。
表面しか知らないと、アプリが変わるとお手上げです。
それに、全然関係ないTipsを無理に適用して余計にハマりが深くなる事も十分考えられます。

2.エラーログを調べる
仮想化したアプリ自体がエラーログを独自に出力している事がたくさんあります。
そのエラーログをちゃんと読む事が大事です。
当たり前の事ですが、無視しがちです。
後は、Windows のイベントビューアーにも出力されているかもしれません。
まずはアプリが出力してくれている、情報を読む。これが大事です。
アプリ仮想化製品のログも大事ですが、アプリ側のエラーログの方が重要です。
DB接続エラー等が、根本原因で、普通にエラーログに出力されている事もあります。

3.とにかく検索(世界中で同じ壁にぶつかった人がいるはず) 日本語&英語で検索
パッケージ系アプリの場合は、世界中のアプリ仮想化スペシャリスト達が
チャレンジしているはずです。(MS-Office , Adobe , Java , Oracle 等々)
そこで、同じ問題にぶつかったエンジニアがBlogやフォーラム等で情報を
発信してくれていることがたくさんあります。
まずは、詳細な調査を開始する前に検索エンジン大先生に聞く事が大事です。
場合によりますが、私は30分位ひたすら検索エンジン大先生に聞いています。
いろんな単語を使って聞きます。
はじめは、App-V とか SoftGrid とか ThinApp という単語を入れて検索しますが
あまり、有効な情報がない場合は、あえてそれらの単語を外して
広い範囲で検索するようにしています。
また、エラー番号やエラーメッセージが表示される場合は、
日本語のメッセージが英語版製品の場合に表示される
内容を調べて、英語版のエラーメッセージを元に検索したりしています。
これで格段に検索結果が増えます。
アプリ仮想化の技術だけでなく、 RDS ( Citrix XenApp )関連や
Windows7 関連の互換問題やアプリケーションデプロイ関連や
開発関連の情報も収集したりしています。

4.問題が発生した環境を調べる
5.再現環境を新しく作る
6.正常に動作する環境を頑張って作る
7.仮説をたて、それを基に検証パターンに落とし込む 
8.インストール、設定手順が間違ってないか確認
9.モジュールやレジストリ設定の仮想化が足りないかも?
10.問題の発生した環境に物理インストールしてみる
4~10までは、「アプリ仮想化の成功率を上げる5つのポイント
http://tunemicky.blogspot.com/2011/10/5.html
で網羅されていると思います。

11.ユーザーの権限が足りないかも、 管理者権限だったら。と考える
権限不足は、よくある話なので、この観点も大切です。
ファイル・フォルダーのアクセス権

12.再起動して見る
嘘のようなホントの話で、PC自体を再起動したら問題なく動いた
って事があります。小人さんのイタズラですね。

13.別のネットワークにいる端末を使ってみる
これも、嘘のようなホントの話です。実は、ネットワーク的な問題で
そのセグメントからは繋がらないとか、Firewallの問題で繋がらないとか
Proxyの設定とかネットワーク周りの問題は多々あります。

14.誰かに相談&事象の説明をする。とにかく声を出す。
一人で抱え込むと、思考が凝り固まるので、深みにハマって抜け出せない事が
あります。声に出して誰かに伝えると、考えがすっきりするのと
思いもよらぬ、助言をもらえたりします。

15.いったんリフレッシュ。休憩する。
16.仕切り直す。 家に帰って飯食べて風呂入って寝る
疲労が貯まると、やはり思考が凝り固まるので、一度リフレッシュするか
切り上げて、家に帰って飯食べて風呂に入って熟睡するって事が大事です。
運がよいと朝起きたときに解決のヒントが降りてくるかもしれません。

17.プログラムに感情移入してみる。 
動かない理由をプログラム側の気持ちになって考え直して見る。
RPGでもそうですが、シナリオや背景や制作者側の意図を汲み取れると
物事が上手く進む事があると思います。
動かない理由を考える場合、誰が主役でしょうか?
それは、アプリです。
結果は「動かない」ですが、そこまでの過程を考える事が大切です。
ですので、アプリの気持ちになって考えてみると、新しい事実を発見できる事があります。
アプリのソースコードがあれば、それを見るのが最も近道だったりします。

18.各種デバッグツールを活用
ここまで来ても、上手く動かない場合は、いよいよ最終局面のクライマックスモード(ギリギリの戦い)です。
各種デバッグツールを活用します。
ポイントは、正常に動作する環境がある事です。
正常に動作する環境の各種ログを収集した後に、問題の発生している環境でログを取得して
その差分を取って比較していきます。
異常系しかないと、かなり厳しいです。
・Process Monitor
・ThinApp Logmonitor
ThinApp標準のロギングツール
・Orca(MSIファイルの解析、編集ツール)
・パケットキャプチャー
・リソースエディタ
ResourceHacker
・ProcessWalker

19.無事に動きみんなで喜ぶ光景を想像する。
ここまで来ると、本当に心が折れそうになると思います。
そのギリギリの局面で土俵際です。最後に[うっちゃり]を決める想いがこれです。
みんなで喜んで、ガッツポーズをしてドヤ顔を決めている自分を妄想するのです(笑)
ロッキーなんかを脳内再生すると、気分が盛り上がります。
あとは、アルマゲドンのテーマとかね。



20.諦めない。
諦めるのは、簡単です。
なぜ動かないのか。動かない理由を説明しないといけない事があります。
そもそも仮想化して動かないタイプのアプリなのかもしれません。
アプリ自体のバグなのかもしれません。
OS自体の制限事項なのかもしれません。
動かない理由はたくさん考えられますし、体の良い言い訳もいくらでもあります。

しかしながら、動かない理由が明確になればなるほど、動かせる可能性が
高くなるのも真実です。
仮に動かないアプリの場合は、動かない理由をはっきりと説明できるまで
やり切らないといけません。逃げると後でまた同じ問題にブチ当たります。
勝てないかもしれませんが、諦めなければ引き分けor試合中なので
負けにはなりません。





~~~~~~~~~~~~~~~~~~~
今回も長くなってしまった。。。
暑苦しい内容になってしまいましたが、私はたぶん正常です。(笑)
「鉄のハート」が欲しいのと、「往生際の悪さ」は自慢できるかもしれません。
http://www.utamap.com/showkasi.php?surl=B14298
http://www.utamap.com/showkasi.php?surl=B03166