A Day In The Boy's Life -124ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

情報システム部門の要員は自分の単価を知っている人が少ない。

こう書くと、驚く人も多いのでしょうか。

人月ベースのコスト換算は害悪だと言う人も多いですが、自分の単価を知らないこともまた問題だなと感じることがあります。



自分の価値を知らない


生々しく自分の単価が書かれた請求書や見積書を見るというのはあまり気分の良いものではありません。

自分の単価を突きつけられるというのは、自分の生み出す存在価値というものを明確に突きつけられますし、モノのように売られていく印象に嫌悪感さえ覚えたりもします。


しかし、悪いところがあるにしろ数値化するというのは、人にとってわかりやすい部分もあります。

自分が生み出している価値の大きさを知ることもできますし、目標と言うものもわかりやすくなります。

その価値と言うものが知らないと言うのは、自分の生み出す効果の大きさや存在そのものを図る術も難しくなります。


情報システム部門は特に社内向けのシステム構築や運用などが中心になり、(企業によると思いますが)社内売りを立てないと、自分たちが作ったものがどれほどの効果をもたらしたのかを知ることもできません。

また、プロジェクトの多くは業務効率化を中心としたコスト削減効果を狙ったもので、会社の売上げに直接的に貢献するようなものは余りありません

そして、企画書に書かれたコスト削減効果というのは、その時の紙面に残されているだけで、多くは終ると次のプロジェクトへ、というように定常的に計測することは行われないことが多いのではないでしょうか。


情報システム部門の仕事は区切りなき仕事が多くあります。

システム化の企画や構築が終れば、保守・運用フェーズに入ります。

そして数年後にはリプレイスの企画が持ち上がったりします。

その一つ一つを外部のSIerに頼めば幾らかかるというその価値を、そのまま請け負っているにもかかわらず、それを知らず気づかせずに働いていたりするわけです。


そこに確かに価値を生み出しているのに、その価値を知らないと言うのは不当に低く扱われるリスクがあるのでは、と感じたりします。

それは、ビジネスにおける金銭感覚を養えていないから、と言えるかもしれません。

自分の単価と存在価値を知らないことで、他人と比べてどうなんだというその評価軸がわからなくなります。


自分が評価されていてもそれが高い分類なのか、低い分類なのかの判断がつきません。

そして、それは比べることの価値さえも失う状況になるのではと感じます。



誰がやっても同じと言う風習


自分たちの存在や作ったものがどれだけの価値があるものなのかを知らないと言うのは、どんなことをしても誰がしても生み出す価値は一緒、と言う競争の無い世界を生み出すことにもなります。

上級SEでも下級SEでもその人が動くことに、何ら疑問を持たなくもなったりします。


単純にもらっている給与で割って時間給を割り出して、幾分かの差があることはわかっても、それによって生み出さなくてはならない価値というのは、さらに数十倍の差があることを知らなかったりします。

年収300万円の人が生み出さなくてはならない価値は300万円であるはずはありません。


自分の価値、他人の価値がわからない状況だと、それを意識することなく「手が空いているようなので雑務を頼もう」という状況にもなりかねません。

本来的には、それ以上の価値を生み出さなくてはならない人が、それ以下の仕事を平然とさせられる状況にもなります。

自分の価値がわからない人が、果たしてそれ以上の価値を生み出すことができるのか、とも言えると思います。

そしてまた、そのような状況の中で切磋琢磨して自分の価値をあげていこうと考える人も少なくなっていくのではないでしょうか。


何も人月ベースで考えることのメリットを強調したいわけではありません。

結局のところ、自分の価値を知ったところでその本当の価値を決めるのは、お客さんです。

下記の記事にあるように、自分の価値はこれだけだから、それだけの価値を与えたんですよなんて独りよがりなことを言っても、不満をもたれるだけで納得してくれるはずもありません。


経産省が脱・人月を目指す「情報システムのPBCに関する調査研究」報告書を公開 @ ITpro


その価値と言うのはあなたの会社が与えた価値であって、世間一般で正当に評価されたものとは、また異なったものでしょう。

ただし、それでもその価値を知って働くと言うことと知らないとでは、働く上で大きな違いを生み出すものになるとも感じたりするわけです。





大量のデータが詰め込まれたファイルがUnixサーバー上にあって、そのデータファイルを修正したり集計したいといった場合、わざわざプログラム作るのも面倒だし、ダウンロードしてExcelで加工するか、なんてことないでしょうか。


Linux上でも幾つかのコマンドを覚えておけば、結構簡単にデータの集計作業というものができます。



特定の情報を持つデータのみを抜き出すgrepコマンド


こちらはかなりメジャーなコマンドなので普段から使っている人も多いのではないでしょうか。

例えばこんなCSVファイルがあったとして


- hoge.csv

100,apple,50
103,orange,75
102,banana,30
100,apple,20
103,orange,75

この中から「apple」の行だけを取り出したいといったときに使います。


$ grep apple hoge.csv
100,apple,50
100,apple,20

逆に「apple」を含まない行を取り出したい場合は「-v」オプションを


$ grep -v apple hoge.csv
101,orange,75
102,banana,30

103,orange,75


個数を調べたいときは「-c」オプションを


$ grep -c apple hoge.csv
2

「apple」の文字を含むファイルを探したい場合は「-l」オプションを


$ grep -l apple ./*
./foo.csv
./hoge.csv

予断ですが、圧縮ファイルに対してそのままgrepをかけられるzgrepというコマンドもあります。


$ zgrep apple hoge.csv.gz
100,apple,50
100,apple,20

その他にも多彩なオプションがありますし、検索する文字は正規表現が使えますので、かなり柔軟にデータを取り出すことができます。

取り出したデータを他のファイルへリダイレクトしておけば、次の加工もしやすいですしね。



データを順番に並び替えるsortコマンド


特定の行に対してデータをソートしたいという場合に役立つのがsortコマンドです。

先ほどのCSVファイルを、1番目の要素である3桁の数値でソートしてみます。


$ sort -t "," -k1,1 hoge.csv
100,apple,20
100,apple,50
102,banana,30
103,orange,75
103,orange,75

「-t」オプションで指定しているのは列の区切り(カンマ)、「-k」オプションはどの列からどの列までをソートキーとするかを指定しています。(1から1なので1番目だけをソートキーに指定)


例えば、3番目の要素である2桁の数値でソートしたければ


$ sort -t "," -k3,3 hoge.csv
100,apple,20
102,banana,30
100,apple,50
103,orange,75

103,orange,75


と言うように指定します。

また、逆順にしたければ「-r」オプションを指定します。


$ sort -t "," -k1,1 -r hoge.csv
103,orange,75

103,orange,75 102,banana,30 100,apple,50 100,apple,20



特定の列のみを取り出すcutコマンド


grepコマンドで特定の行を取り出すように、指定の列を取り出すのに便利なのがcutコマンドです。

先ほどのCSVファイルの中から果物の名前が書かれた列だけを取り出す場合は


$ cut -d "," -f 2 hoge.csv
apple
orange
banana
apple
orange

のように指定します。

「-d」オプションで列の区切り(カンマ)、「-f」オプションで何番目の列を取り出すかを指定しています。



ユニークな行だけを取り出すuniqコマンド


まったく同じデータを取り除きたいときに便利なのがuniqコマンドです。

ただし、このコマンドを使うにはファイルの内容が予めソートされていなくてはなりません。

そこで、先ほどのsortコマンドと併用して実行すると、同じ行を綺麗に消してくれたりします。


$ sort hoge.csv | uniq
100,apple,20
100,apple,50
102,banana,30
103,orange,75

orangeの行はまったく同じ行となっているため、uniqコマンドにより削除されています。

一方で先頭の3桁のIDが同じものを消して取り出したいと言う場合もあるでしょう。

その場合は、条件判定を文字の位置を指定して実行します。


$ sort foo.csv | uniq -w3
100,apple,20
102,banana,30
103,orange,75

これで、ユニークなIDだけを持つ行を取り出すことができます。



文字の置換ができるsedコマンド


ファイル内の文字を置換したいと言うことは良くあることです。

こういう場合、エディタ(例えばvimとか)で開けば一気に置換できたりもしますが、エディタを使わずともsedコマンドを通して一気に置換をかけることができます。

$ sed -e "s/apple/peach/" hoge.csv
100,peach,50
103,orange,75
102,banana,30
100,peach,20
103,orange,75

出力結果を保存したい場合は、別のファイルにリダイレクトしておきましょう。

sedコマンドも正規表現が使えるほか、非常に豊富で強力な機能を持つコマンドです。



計算も実行できるawkコマンド


awkコマンドは非常に多彩な機能を持つため、ここでは特定の列の合計値を計算するような例しか書いていません。

やりすぎるとプログラミングした方が早いと言うケースもありますしね・・・。


先ほどのCSVファイルの中から3番目の要素である2桁の数値の合計値を求めてみます。


$ cut -d "," -f 3 hoge.csv | awk 'BEGIN {sum=0} {sum+=$1} END {print sum}'
250

少しややこしくなりましたが、やったことはまずcutコマンドで3番目の要素を取り出し、それをawkコマンドに渡しています。

awkコマンドではsumという内部変数を作って、1番目の標準入力(cutコマンドで取り出したCSVファイルの3番目の要素)を足し続けています。

最後にその合計値を出力するといった具合です。


工夫すれば平均値を出すと言うことももちろん可能です。



ファイルの差分を表示するdiffコマンド


こちらもメジャーなコマンドですね。

ファイルを編集して別名で保存した場合、オリジナルと編集後のファイルとの差を見てみたいときに、わかりやすく表示してくれます。


先ほどのsedコマンドで置換したCSVファイルと、オリジナルのhoge.csvファイルのファイルの中身を比較してみると


$ diff foo.csv bar.csv
1c1
< 100,apple,50
---
> 100,peach,50
4c4
< 100,apple,20
---
> 100,peach,20

1行目と4行目が変更されていると言うことがわかります。

diffは、ディレクトリ内の差分をも表示してくれたりできるオプションなども存在します。

この辺りは、以前に書いた「簡単にファイル比較ができるdiffコマンドの使い方 」を参考にしてみてください。



行を結合できるpasteコマンド


行単位でファイルを結合したいという場合に便利なのがpasteコマンドです。

例えば、hoge.csvにロケーションを記述したファイルを結合して1つのファイルにしてみます。


$ more location.txt
tokyo
osaka
nagoya
tokyo
chiba

このファイルに記述したロケーションはhoge.csv内の各行に対応しているという条件で、下記のようにpasteコマンドを実行します。


paste -d "," hoge.csv location.txt
100,apple,50,tokyo
103,orange,75,osaka
102,banana,30,nagoya
100,apple,20,tokyo
103,orange,75,chiba

「-d」オプションで結合時の区切り文字を指定できます。



行頭から指定行数だけを表示するheadコマンド


大きなファイルになると、先頭から何行目までを取り出したい、表示したいということがあったりします。

そういう時はheadコマンドが便利です。

例えば、1行目から3行目までを取り出したい場合は、


$ head -n 3 hoge.csv
100,apple,50
103,orange,75
102,banana,30

のように指定しすれば、ファイルの頭から3行分だけ表示してくれます。

また、行数だけでなデータ量で取り出すこともできます。

例えば、頭から30バイト分だけ表示すると言う場合は、「-c」オプションを指定して下記のように実行します。


$ head -c 30 hoge.csv
100,apple,50
101,orange,75
102


行末から指定行数だけを表示するtailコマンド


こちらは、先ほどのheadコマンドとは逆のコマンドになります。

ファイルの最後からn行を取り出したい、というような場合に使います。


$ tail -n 3 hoge.csv
102,banana,30
100,apple,20
103,orange,75

こちらもheadコマンド同様に「-c」オプションを指定すれば、データ量分だけ取り出すと言うことも可能です。

また、これも予断ですが、tailコマンドは「-f」オプションを指定しておくと、リアルタイムにファイルの変化を追うことができます。

例えば、Apacheのアクセスログはアクセスがあるたびに追記されていくので、


$ tail -f access_log

なんてしてると、アクセス状況が端末に表示され続けます。

システムのログファイルを表示させ続けたりすると、デバッグなんかにも有効だったりしますね。


これらのコマンドを組み合わせることでかなり自由なデータの書こうというものができるかと思います。

わざわざプログラムを書く必要も無いので、Windows上でファイルを編集しようという前にLinuxサーバー上でできることを把握しておけば作業も楽になるのではないでしょうか。





皆さん今日もTwitterで毒づいてますでしょうか?

もちろん全ての人がそうではないのですが、中にはそういう発言もタイムライン上に流れてきています。

私は軽くスルーしていますが、Twitterの浸透とともにこういう状況っていつまで続けることができるのだろうか?と思ったりもします。



ブラックな一面を見せられるTwitter


Twitterでそういう自分の暗黒面を見せられるのは、より個を表現できるツールだからじゃないかな、と思ったりもします。

ブログよりも個が前面に出てきやすいですし、そういうところがより面白さを際立たせていたりする。

頭の中にあることをポンポンと吐き出していくTwitterと、このように頭の中にあるものを整理して体系化して表現するブログとでは、Twitterの方が個性が出やすかったりします。


本音と建前はわかりつつも、誰もが全ての場面に天使のように振舞える人もいないでしょう。

誰しもちょっと悪いことやネガティブな一面を持ってたりもします。

個を表現しやすいツールである以上、そういったものがたまに顔を出すこともあったりするのかな、と思います。


Twitterのつながりを通してわいわいとくだらないことを言い合えるゆるいつながりが特長だったりします。

友達関係にある人との会話を聞いていたら、その人のブラックなところって1つや2つ出てくるのではないでしょうか。

他から見れば卑屈に聞こえることでも、知った中では毒づくことが面白かったりするところもあったりします。


人ってそういう特性を持っていたりもするので、Twitterのゆるいつながりって言うのはそういうところを助長させる心理的な効果があったりもするような気がしています。

仲間内で毒づいたり、他人が毒づいているのを見ることが少しおかしかったり。


こういうとTwitterの中がとても混沌として、ネガティブな発言が渦巻いているように聞こえますが、あくまでこれは一部のケースです。

実際には、短いながらも実のあるPOSTをしたり、お互いの生活リズムに合わせて挨拶が交わされたりと、心地よい瞬間というものは多々あります。


良いにしろ悪いにしろ、ブラックな一面も含めて個の頭の中をそのまま出して表現できるところにTwitterの面白さもあったりするのではと思ったりします。



Twitterは炎上するか?


徐々に日本でもTwitterの認知度が高まってきていますし、より多くの人がTwitterを使い出すと、そういうブラックな事も簡単にいえない日が出てくるかもしないなと思ったりします。


ブログでもちょっと批判的なことを書いたりすると一気に炎上するようなケースも見受けられます。

Twitterでもそういう誰かのブラックな呟きが火種になってTL上でまくし立てられるようなことも出てくるのかな、と考えたりします。(もう実際にそういうことが起きてるかもしれませんが)


ただ、幾つかブログとは違い炎上しにくい性質を持ってます。


・ タイムラインの流れが速いので見過ごされやすい

・ 発言が大量で元の発言が薄まっていく

・ 本人のタイムラインは本人オリジナルのものであるから、炎上しているかどうか判断がつきにくい

・ 上記の理由から、炎上が炎上を呼ぶような2次、3次災害が起きにくい

・ Twitterのアカウントが必要で、言ったら言い返される心理的要因が作用する


特に後半のほうは、あそこが炎上しているから自分も輪に加わってやろうというような、愉快犯的な広まる環境が無いことが炎上がおきにくいのかなと思ったりします。

みんなが言ってるから俺も言おうみたいなことが、やりにくい。

アカウントが必要でreplyしたら誰からかがわかるので、ブログとは違い発言を抑制する心理的な効果も出てくるかもしれません。


ただ、一方でこんな意見もあるようです。


FriendFeedと梅毒の歴史を考える―実名SNSも暴徒の温床化しつつある @ TechCrunch JAPAN


実名で堂々と物言う人が増えてくるというものですが、Twitterを匿名でやっているにしろ、そこで築き上げた関係を犠牲にするのは大事なものを失うのと等しいことです。

間違っていることを言ってる人に間違っているということは正しいでしょうけど、度が超えた発言はそれが火種になるとも限りません。


そして、多くの人が流入してくることで考え方が多様な人の集まりとなり、今まで良かったことができない環境に変貌していくかもしれないなと思ったりします。

個を表現するツールだ!表現の自由だ!と思う人がいる一方で、そんな人を不快にさせるものを公共の場では言うべきでないと唱える人も出てくるでしょう。


まぁ、何れにせよブラックな発言も度が過ぎれば誰かを不快な思いにさせるもの。

ブラックな発言でもジョーク程度に終らせておかないと、問題となることもありえるのかなと。

それを受け取らないようにするために、発言者をフォローから外すことは簡単にできますが、そうして関係が失われることの方が犠牲は大きい気がします。

Twitterで淡々と独り言だけを言うのは、やっぱり本来の面白さから離れていると思いますしね。