仕事で大事なコミュ能力

『プログラマーは延々プログラムだけ書いてるから人と喋らなくていい仕事』

みたいなイメージって、風聞としては耳にしたことがありますけど。

現実にそう思ってる人って居るんでしょうか。

 

確かに、ほぼ語らずに与えられた仕様に沿って、

黙々とコーディングしてる方もいらっしゃいますので、

そういう人がいない訳でもないですが。

 

仕様書だけ渡されて会話というか対話せずに仕事が完結する、

って事、有り得るのでしょうか。

完璧な仕様書とそれを作れる現場を知らないだけで、

大昔にウィザードと呼ばれたような人達が跳梁跋扈する最前線では

そういう仕事が当たり前なのでしょうか…

 

 

書きながら何となく自分の住んでる場所がぬるま湯なのかと

不安感が首をもたげてきたのですが。

別に明日明後日に住処を変えるでもなし、忘れようと思います。

 

 

言いたかったのは、仕事するのにコミュニケーション能力って大事で、

別にプログラマだからって変わらないよ!って事です。

前述したような完璧な仕様書でなければ、

製造の最中に実装について「どうあるのが正解なのか?」と

疑問が湧く事が多々あると思います。

他者は分かりませんが、私はありました。多々。

 

納得出来てコードに落とせるまで、

設計したSEを捕まえて延々対話してました。

 

 

コードをどのように書くか、はプログラマの力で成す事で、

コードが動いた結果がどうなる(べき)か、は設計者が決める事、

だと言う事がよく判っていなかったプログラマ時代。

忙しいSEさんに延々相手してもらう事をとても申し訳なく思ってました。

今なら「こんな適当な設計で何を作るつもり?」と突き返してますね。

 

そんな当時一緒の現場に居た開発者に、

「仕様書に書いてない事は何もしません」

というスタンスの方が居られました。

あのぐらい割り切れるのはすごいなと思ってました。

仕様書の内容が矛盾しててもそのまま実装して、

テストでおかしな結果になっても「仕様通り」と言い張る。

 

確かに仰る通りなんですけど、それで良い訳ないよね?

とSEが指摘しても

「設計を勝手に変えるのは良いんですか」と宣う。

ダメに決まってるけど、仰る通りなんですけど。

 

 

なんで「不備の仕様を放置する」か「仕様を勝手に変更する」の二択なの。

 

 

何かおかしいよ?どこ?これ。ふんふんそういうケースもあるのか。

って、5分くらいの対話で事足りる事なのに…

 

開発者が設計者に不備を伝えるのも、管理者が問題点を拾いあげるのも、

設計者が不要な仕様変更を怒らせずに断るのも、

コミュニケーション能力の側面なんだろうなと思います。

 

 

 

本当に言いたい事をうまく伝える。相手の言い分をうまく理解する。

どちらもとても難易度の高い事ではありますが。

よいコミュニケーションは仕事をうまく進めてくれて、

その時は大変でも最後には丸く収めてくれる、と感じます。

 

 

これらはいわゆる「ヒューマンスキル」と呼ばれるものですが、

若い頃にとても参考にしていたのが、@ITというサイトで連載されていた

芦屋広太氏のコラムでした。

メールの書き方から、対話シナリオの考え方、物事の伝え方、

いろんな観点で芦屋氏の影響を受けたと思います。

古いコラムなので今読めるか分からないのですが、

こちらの書籍が同ジャンルの内容でしたので、オススメしたいと思います。

 

 

 

WindowsBackupの罠(backuptargetにローカルフォルダは指定できない)

今回、サーバのバックアップを取る事になったんですが、

別サーバで手順確認をサラっと、と思っていたら丸一日かかってしまったので、

記録しておこうとおもいます。

 

1.バックアップをどこに取るか?

Windowsバックアップは、バックアップの取得先を3つから選べます。

A.ローカルドライブ B.ボリュームGUID C.ネットワークパス

本番作業に先駆けての作業でしたので、Cで対応する予定でした。

 

が、時間的にシステム稼働中にテストする必要がある為、

ネットワーク負荷を考慮して、サーバとPCをクロスLANケーブルで直結し、

Cを実施する、という方針としました。

 

2.実際に接続

自分のPCに共有フォルダを作成し、Everyoneフルコントロール権限に設定。

クロスケーブルでサーバと接続し、Ping確認もOK。

 

しかし、エクスプローラが開かない。

 

 

3.調査開始

ここで凡ミスをしたせいで非常に時間がかかったというか、

タイトルにも書いた罠にかかってしまう事になったのですが。

 

PC、サーバ共にドメイン配下の機器であったせいか、

権限を処理するサーバが見つからない、といったようなエラーが表示され、

エクスプローラではサーバ→PCの接続が出来ませんでした。

\\ホスト名、 \\IPアドレス、共有フォルダ名有り無しといろいろ試してみて、

毎回同じことで怒られます。

 

幸い、同サーバのDドライブがガッツリ空いてましたので、

そこにバックアップをしよう、という風に方針変更しました。

 

 

4.バックアップがコケる

バックアップ前にはサービス停止が必要だね、という事で、

net start で表示されたサービスを可能な限り止めました。

そしてバックアップはコマンドラインから実施。

 wbadmin start backup

コマンド入力しながら、オプションそれぞれ問題ないかなと再チェックをしていてふと。

 

-backupTarget   このバックアップの保存場所を指定します。ハード ディスクの
                ドライブ文字 (f:)、ボリュームの GUID ベース形式のパス
                (\\?\Volume{GUID})、またはリモート共有フォルダー
                への汎用名前付け規則 (UNC) 形式のパス
                (\\<サーバー名>\<共有名>\) が必要です。

 

 

ドライブ文字???

DドライブのdirAってフォルダにバックアップ取りたいのだけど・・・

ドライブ単位でしか指定できないという事だろうか?

勝手にD全部消されたら(データが一杯入ってるから)大変な事になる・・・

 

と思い至ったので、DドライブのdirAフォルダを共有して、

-backuptarget \\LOCALHOST\dirA と指定する事で

擬似的にローカルフォルダにバックアップしようと試みました。

 

ちなみにこの時付与したオプションはこれらです。

backuptarget, include, systemstate, allcritical, vssFull, quiet

 

 

5.エラー対処①

最初のエラーは「システムライターがバックアップに見つかりません」

原因の一つは、必須サービスが停止している、でした。

コチラを参考にさせて頂いて対処。

(私は「Cryptographic Services」を停止していました)

 

コマンドを再度実行すると、即落ちしてたコマンドが実行されはじめ・・・

よし、これでOKか!と喜び勇んだ次第です。ぬか喜びでしたが。

 

6.エラー対処②

次は「ファイルシステム制限のため、要求された操作を完了できませんでした。」

これの意味が分からず、色々試す事になりました。

コマンド実行から15分くらい、進捗30%あたりでエラーになるので、

トライアンドエラーにも随分時間がかかってしまいました。

ウイルススキャンソフトの停止、マシン再起動、他に必要なサービスは?など・・・

 

7.結果的には

2.をリトライして他のマシンの共有フォルダに書き込む事で、

スルっと成功してしまいました。

コマンドはbackuptargetの指定を変更しただけ。

どうやら、ローカルフォルダにはバックアップを取れないみたいですね。

systemstateを指定してる事も原因なのでしょうか。

 

 

2.の時点で実はnet useでPCとの接続を図っていたのですが、

/USERの指定値を /USER:\\PCのIPアドレス\ユーザ名 としていました。

最初の\\が要らないだけだった・・・!

ドメインユーザを指定していた事も一因かもですね。

サーバとPCを直結した事により、双方が認証DCと通信できない状況でしたので。

これを懸念して、ローカルマシンで認証させる為に、

テスト用のローカルユーザーを作成し、そのユーザで共有フォルダを作成しなおし。

 

 

 

今回のポイントは、

・WindowsBackupはローカルフォルダを指定できない(みたい)

・net useでのユーザ指定の記述を間違えていた(気付きにくい)

だったという反省ブログでした。

 

 

 

 

以下は、この話の前日譚になります。

 

先日、勤務先の場内法定電源検査がありまして。

全サーバをシャットダウン、再起動という作業をすることになりました。

 

VMware上のサーバを落とす前にデータストアが全部乗っかったストレージを落とす、

っていう胃が痛くなるようなオペミスをやらかされたりして、吐きそうな一日でした。

最悪DBとファイルサーバ(20TB)死ぬかなと思ってましたが、こっちは無事復活しました。

 

ところが、思いもよらぬサーバで障害が発生してしまい・・・

電源投入して動作確認してから、わずか30分後の話でした。。。

 

 

 

というのがタイトルにつながる話になります。

 

メーカーサポートに問い合わせて機器調査の上で、マザーボード交換対応となりました。

個人的に、念の為バックアップが必要かなと思ったので、

「このサーバって日次バックアップって何を取ってます?」

と質問すると、

「バックアップ?????? ・・・??????????」

みたいなリアクションが返ってきたのですね。

 

 

あ、してないのかなと思って、じゃあシステムバックアップは

Cドライブだけですか?CとDでフルバックアップ取ってますか?

と質問すると、

「バックアップ?????? ・・・??????????」

みたいなリアクションが返ってきたのです。

 
 
バックアップの要否についての議論はおいておきますが、
とにかくそういう事なら今回ちゃんとバックアップしましょう、と。
そういう流れになりました。
 
MSサイトと以前関わったプロジェクトの資料から
なんとか手順書を錬成し、使ってないサーバを洗い出し、
リストアテストで潰れてもOKとの言質を上司から引き出し、
なんとかテストにこぎつけました。
 
 
やっておいてよかったです。また一つナレッジが増えました。

インフラSEのメシのタネ(2)

今の現場は7時55分出社で、なかなか朝がツライです。

毎日眠くて眠くてたまに寝過ごしながら業務に勤しんでおります。

 

 

さてメシのタネですね。。。

私自身は、良くも悪くも思うままに仕事をしています。

一応リピート案件も多いので、クライアントもサービス提供先も、

一定の満足は得て頂いているのだと思います。

ここ数年は、サービス提供先企業のIT担当者から

直接御連絡を頂く事も増えてきており、

ただただありがたいの一言ですね。。。

 

 

ともあれ、当たり前の事しかやってないのですが、

こんな高卒SE(※いきさつ)でも食っていけてるのは、

あるプロジェクトのマネージャに言われた事が、

一つのポイントなのかなと感じています。

 

 

「○○さん(=わたし)は、グレーゾーンをきっちり埋めてくれるよね」

 

 

当たり前の事しかしてないつもりなんですけどね。

分業体制という今の世の仕組がうまく自分にマッチしてるのかも知れません。

 

 

 

分業すれば当然自分の範囲という区切りが出来ますが、

それはあくまで「全体の一部」なのであり、

前後、最初から最後、がキチィンと繫がっていなければなりません。

 

こういった「全体の一部」を作っている時に生じる

疑問、不明点、そういったものを

「明示されてないから好きなようにしていい」

と考えるのか

「明文化されていない件のコンセンサスを得る必要がある」

と考えるのか、そしてそれを

「偉い人がまとめる事(であって自分の仕事ではない)」

と考えるのか。

 

人それぞれでしょうけど、私はそれがハッキリしていないとイヤなタチで、

こういう事で合ってるよね?こういう認識でお互い揃ってるよね?

などと、ほうぼうに聞き回る事になります。

 

・判っているけど自分の仕事じゃないから言わなかった、

・このままならトラブるのは当たり前だと思ってた、

みたいに嘯く人もぼちぼち見かけるのですが。

そんなにIT業界には仕事が溢れてるのでしょうか。

私は常に自分が今後も仕事が頂けるか不安で不安で・・・

分のやるべき範囲はここからここまでなのだから、

範囲外の仕事は(たとえ全体がどうなろうと)やりません、

みたいな態度で、次も仕事もらえるような気がしません。

 

プロジェクトが成功して、満足頂けて、

それで初めて我々SEのやる事に価値が生まれるのだ、

と考えていますし。

そもそもIT部門って、システムの導入効果が見えないと、

ただお金食うだけの部署ですしね。

 

仕事(≒プロジェクト)が問題なく終わるために、

それだけの仕事でいいのか?

って事です。

 

自分の仕事が自分の満足いくレベルに達する為に、必要な事はすべてやる。

それが、私にとっての「当たり前の仕事」だったというだけです。

 

 

 

余計な事までやる意味が一体何があるんだ、

と思う方も居るかも知れませんが。

 

SQLserver2012のログファイル物理サイズ縮小

今勤めているのは出戻り現場。5年前から2年間お世話になってました。

 

当時、まともにドキュメントもなく管理されていないシステムを前に、

サーバーの一覧(すらなかった!)を初めに、管理資料や手順書群を作り、

後続要員に半年かけて引き継いだのですが。

全く運用されてないしドキュメントも修正されてない有様で…

5年前と同じく、調査とドキュメント作成に勤しむ毎日です。

 

そんな愚痴から始まる今回の記事は、

昨日からトライ&エラーでやってた事を書いてみようかと。

SQLserverの基本的な事は知ってる前提になりますが、

それがそもそも何なのかは私もわかりません。。。

 

■発端

テスト用DBサーバのDBバックアップが失敗してました。

調べてみると、容量不足。

 

■原因調査

で、SSMSからDBのプロパティを眺めていると、

初期サイズ50GBも取ってる癖に使用可能が49GBという、

なかなかの乱暴者を発見。

主に利用するチームのリーダーに確認した所、

当初要件でサイズ見積したが、要件ドロップした為

DBのサイズは小さくしても構わない。

但し今テストで使ってるので、中身は壊すな、との事。

 

■愚痴

要件落ちた時点で再見積もりしてくれよ…

ディスク領域には限りがある事を意識したまえ。

サポート問い合わせしようとしたら、契約切れてました。。。

取り敢えず自宅PCにSQLserverをインストールして、

あれこれ試してみることに。

 

■手順確認

まずGUIでSSMSからの容量削減を試す。

①初期サイズとしてデータ1000MB、ログ10MBのDBを作成。

②適当にテーブルを作ってデータを投入

③SSMSのプロパティで初期サイズを小さくしてみる。

 

あっさり縮小可能。物理ファイル(.mdf)も小さくなっているし、

中身も問題なくselect出来る。

 

次に、

④初期サイズを超えるくらいデータを作成する

⑤データを一旦truncate後、再度データを少しだけ入れてみる

⑥ここで③同様の操作で初期サイズまで削減

 

これも問題なく動作。

じゃあ、もっとガツンと小さくしたらどうなるのか?

という興味が湧いて、サイズを1MBに指定してみました。

すると、初期サイズの指定値が”3”に変化しました。

 

 

つまり、指定値が小さすぎたからと言ってDBが破損する訳ではなく、

可能な限りで頑張って小さくしてくれる、という事みたいです。

 

 

■疑問が増える

あれこれ試したせいか、トランザクションログが大きくなってしまいました。

これをDBと同じようにちいさく…できませんでした。そうですよね。

DBを作成する時に完全復旧モデルにしていたので、

正しいお作法で縮小しないといけないようです。

 

1,初期状態

 

まずはDB圧縮を試してみました。

 

2.DB圧縮後

お、ちょっと縮んだ。

 

そういえばトランザクションログはバックアップで切り捨てられるんだっけ、

という何となくの記憶に従って、次はバックアップを実行。

 

結果。あれ?小さくならない…

 

再圧縮してみる。

 

おおー、小さくなった!

 

つまり、トランザクションログのバックアップを実行して、

中身が切り捨て可能な状態になってから圧縮するのだな!

よし、もう一回確認しておこう。

 

同じSQLを流してログを増やしてから、

 

ログをバックアップしてサイズ確認。この時点ではこのくらい。

 

今度はファイル指定の圧縮を試す。

 

・・・あれ?バックアップ後と一緒??

 

この後、DBの完全バックアップ→DB単位の圧縮→ファイル単位のログ圧縮、

と繰り返してみましたが、ログの容量が小さくならない。

困ってしまったので、DBを削除して1からやり直しました。

 

■結局正しい手順は・・・

MSの正規の手順というものがあるのだとは思いますが。

見つけられませんでしたので、あくまで個人的な実験の結果として。

 

1.まず圧縮(どっちのやり方でもOKみたいです)

2.次にトランザクションログのバックアップ

3.最後にもう一度圧縮(こちらはファイル単位圧縮しか試してません)

 

この方法で3度くらい試して、毎回ログは縮小されました。

 

 

無事に来週を迎えられそうで、ホッとしています。