2013/11/25
情報が全く無い状況を乗り切る方法について考えてみる
プログラムを作っていると開発環境では問題なく動いていたものが本番環境に持っていくと動かないという事が稀にあります。
OSの種類、サーバのバージョン、言語など全く同じなのにナゼ???という状況には本当に泣かされます。
今回は情報が全く無い状況を乗り切るためにどうすればいいかという事について考えてみたいと思います。
上記のような状況に出くわした場合、まずやる事といえばもちろん【ググる】ですね。
エラーメッセージをコピーしてGoogleで検索すれば、大体同じようなエラーに遭遇している人が見付かります。
個人のブログに書いていたり、Yahoo知恵袋のようなQ&Aサイトで質問していたりするので、そういった記事をありがたく拝見させていただき解決へのヒントにさせて頂いています。
しかし、稀ですがそういった情報が全く無い状況に出くわす事があります。
いくら検索しても出てくるのは明らかに関係ない記事や解決に至っていない記事ばかり・・・。
さてどうするか?
まずやるのは
①エンジニアの知り合いに聞く
②Q&Aサイトで質問してみる
といったところでしょうか?
他力本願ですがこれで解決できればラッキーですね。
しかし、都合よく知り合いが同じ問題を知っているケースはまずない事が多いですし、Q&Aサイトも状況を正確に説明して的確な回答を得るのはなかなか時間が掛かるので、タイトな開発スケジュールに見合うものではないような気がしています。
なので私の場合はあまり他人に聞くというのはやっていません。
ではどうするか?
あくまで一例ですが私がやっている方法をピックアップしてみます。
・プログラムのどの部分でエラーになっているかを正確に把握し、可能な限りのエラーログを取得する
・そのエラーログを翻訳サイトで訳して意味を理解する
・開発環境と本番環境の違いを細かな設定も含め徹底的に調べる
・エラーの内容から環境の違いの部分で原因となりそうなものを確率の高いと思われる部分から順にデバックする
・エラーの内容から代替案が無いかを考えてみる
ちょっと分かりにくいので最近あった具体的な例を書いてみます。
例)
「開発環境で作ったPHP+OracleのCMSを本番環境へアップしたらWarning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system – please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directoriesというメッセージが表示されて動かない」
色々ググってみたものの解決に至っている事例は見付からず・・・。
メッセージの内容はORACLE_HOMEとLD_LIBRARY_PATHという環境変数が間違っているみたいだから確認しましょうというようなものです。
つまりPHPの実行ユーザがORACLE_HOMEという環境変数を適切に設定してないということを指摘しているようです。
しかし、チェックしてみたところ特に問題なく設定されていました。
そこでPHPからORACLE_HOMEの値が取得できるかチェックしてみました。
するとNULL。
どうもPHPがORACLE_HOMEの値を拾えていないようです。
開発環境では拾えているのでプログラム自体の記述がおかしい訳ではない。
???
理屈でいくら考えても解決できなさそうな感じです。
ここは素直にPHPの実行時にORACLE_HOMEの値をプログラム上で設定してみることにしました。
すると問題解決しました!
何故か本番環境のPHPではORACLE_HOME環境変数が取得できない状況になっているという現象の根本的な解決策は分かっていませんが、そこに時間を費やすのはあまり意味が無いので追求はしていません。
といった感じです。
まあ、結局は絶対に解決できると信じてTry And Errorを繰り返していく中で答えを見つけていくしかないのですが、いつも人に答えを聞いてばかりだとなかなかこういった解決の仕方は出来ないのではないかなと思います。
今後は更に根本的な部分での解決が出来るようにOSやミドルウェアの仕組みの理解をしていこうと思います。
コーディング業務のご依頼、ご相談の詳細についてはこちらから
最後までお読みいただき、ありがとうございました。
よろしければシェアしていただければ幸いです。
次の記事へ | 前の記事へ |
WEB業界ならqam!qam(カム)はWEB業界で働く人や興味がある人に役立つ情報サイトです。
マーケティングやデザイン、マークアップ(コーディング)、プログラム、トレンドなどの情報をqamライター陣が執筆。噛めば噛むほど(読めば読むほど)制作・開発や運営・運用、業界知識やノウハウを学ぶことができます。