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

A Day In The Boy's Life

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

よくブログで製品やサービスの紹介をする際にキャプチャした画像を貼り付けたりしているのを見かけますが、有名どころではよく似た素敵な矢印でわかりやすいキャプチャを使っていて、何のソフトで作っているんだろうと調べてみたら、Skitch というMac OS用のソフトウェアということがわかりました。


ただ、自分はMacを使わない・・・ということでWindows用で似たようなのがないのかと調べてみたら、Screenpresso というソフトウェアがヒットしたので、使い方の紹介です。



Screenpressoの使い方


まずは、先ほどのサイト上からFree版のScreenpressoの実行ファイルをダウンロードします。

実行ファイルを開くとコンピュータにインストールするかスアンドアロンで実行するか選べますのでお好きな方を選択します。

インストール・実行後は、下記のようにタスクトレイに常駐します。

A Day In The Boy's Life-Screenpresso-1


常駐アイコンをクリックするとScreenpressoが起動します。

キャプチャを開始するのは、左下の「キャプチャ」アイコンから行います。


A Day In The Boy's Life-Screenpresso-2


デスクトップ上に表示しているものをキャプチャするだけでなく、動画として保存する機能もあります。

キャプチャが終わったら画像の修正を行います。

編集は、右上のツールバーから矢印だけでなく、上図の噴出しや面白い機能としては、下図の左上に描いたルーペ機能で拡大して表示するというような効果を簡単に付けることができます。


A Day In The Boy's Life-Screenpresso-3


その他にも、キャプチャした画像にぼかしを入れたり、マーカーを付けたり文字を入れたりといったキャプチャした後に加工する一通りの機能がそろっています。

また、右上の画像タブをクリックすると画像の切り取りやリサイズも行え、高度な画像処理ソフトウェアがなくても全然機能が足りるのではないでしょうか。

キャプチャした画像は、ワークスペースに溜め込まれていき、PublishボタンからTwitterやFacebook上にアップすることもできます。


ただし、過去のキャプチャ画像を再度編集するといった一部の機能はFree版はなくPro版でしか利用できません。

それでも、スクリーンショットを取るためのソフトウェアとしてはかなり機能が洗練されていて、しかもデザインも凝ったものが作れます。

ブログだけではなく、資料を作成する際の加工にも使えるのではないでしょうか。




ファイルを操作ミスで削除してしまうってことは誰しも経験したことではないでしょうか。

バックアップは・・・取ってない、バージョン管理にも登録していない・・・みたいなときには絶望に打ちひしがれる状況になるのですが、extundelete というプログラムを使えばもしかしたら簡単に復活できるかもしれません。

ただし、このプログラムで復活できるはファイルシステムがext3かext4の場合のみです。



extundeleteの使い方


まずはインストール方法ですが、上記のサイトからソースコードをダウンロードし、サーバーに配置します。

あとは、展開してお決まりの手順でインストールができます。


$ tar -jxvf extundelete-0.2.0.tar.bz2
$ cd extundelete-0.2.0
$ ./configure
$ make
$ su -
# make install


インストール完了後は、extundeleteというコマンドが利用可能になっています。


$ which extundelete
/usr/local/bin/extundelete

次に、実際にファイルを削除(/tmp/hoge/foo.txt)して復活させてみます。

削除をする前に、復活させたいファイルがどのデバイス上にあるかを確認しておきます。

ちなみにNFSなど外部N/W上にあるファイルは復旧できません。


$ df -k
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2             18222732   3569768  13712360  21% /
/dev/hda1               101086     36590     59277  39% /boot
tmpfs                   254896         0    254896   0% /dev/shm

今回の復旧対象ファイルは/上にあるので、デバイスは「/dev/hda2」が対象となります。

あとは、以下のコマンドオプションを利用して復旧させます。

なお、extundeleteコマンドはrootで実行します。


$ su - 
# extundelete --restore-file /tmp/hoge/foo.txt /dev/hda2
WARNING: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... 144 groups loaded.
Loading journal descriptors ... 28325 descriptors loaded.
Writing output to directory RECOVERED_FILES/
Restored inode 2777124 to file RECOVERED_FILES/tmp/hoge/foo.txt


コマンド実行後は、カレントディレクトリ以下にRECOVERED_FILESというディレクトリが作成され、それ以下に対象のファイルのパスのままで復旧ファイルがリストアされます。


# ls -la RECOVERED_FILES/tmp/hoge/foo.txt
-rw-r--r-- 1 root root 1552  5月 13 01:04 RECOVERED_FILES/tmp/hoge/foo.txt


ちなみに、root以外で実行してみると以下のようにエラーメッセージが返されます。


$ extundelete --restore-file /tmp/hoge/foo.txt /dev/hda2
extundelete: failed to read-only open device "/dev/hda2": Error code 13


また、上記の復旧方法では--restore-fileオプションを使って特定のファイルを復旧する方法ですが、--restore-allオプションを使えば、そのデバイス上で削除されたファイルの中で、リストア可能なものを全てリストアしてくれます。


# extundelete --restore-all /dev/hda2

ただし、これはシステムが削除したファイルなども含まれるため、非常に多くのファイルが含まれます。

また、ファイル名が不明なものも出てくる可能性があります。


# ls RECOVERED_FILES/
etc           file.230284  file.230299   file.327869   file.4607274  file.851050
file.163419   file.230285  file.230300   file.328148   file.4607277  file.980163
file.2063908  file.230286  file.261526   file.328343   file.4608269  file.980165
file.2063940  file.230287  file.261540   file.328349   file.490332   file.980170
file.230273   file.230288  file.261587   file.328369   file.523022   file.98558
file.230274   file.230289  file.261596   file.360942   file.65736    file.99392
file.230275   file.230290  file.261601   file.360943   file.719952   lib
file.230276   file.230291  file.264709   file.362035   file.849519   lost+found
file.230277   file.230292  file.264731   file.36522    file.849532   sbin
file.230278   file.230293  file.2777123  file.36525    file.849721   tmp
file.230279   file.230294  file.2777124  file.4149535  file.849722   usr
file.230280   file.230295  file.2777130  file.424814   file.850334   var
file.230281   file.230296  file.326729   file.457441   file.850398
file.230282   file.230297  file.326739   file.4576487  file.850851
file.230283   file.230298  file.326774   file.4586985  file.850855


この中から対象ディレクトリのパスを絞って、復活したいファイルを探していく必要がでてきます。

--afterや--beforeオプションを組み合わせて使えば、復旧したい時間が指定できる(Unjx時間形式で指定)ので、削除してしまった大体の日時を指定することでリストアするファイルの量を減らすことや絞り込むことができます。


# extundelete --restore-all --after `date -d "2012/05/13 00:00" +%s` /dev/hda2


おそらく、ファイルを復旧する際の正しいやり方としては、レスキューCDなどからデバイスをReadOnlyな状態でマウントし、そこからextundeleteコマンドを使ってリストアさせるのだと思います。

ファイルのI/Oが激しいデバイス上のファイルの場合は、気が付いた頃には手遅れということもあるかもしれません。

コマンド自体は簡単に使えるためサーバーに用意しておき、まずはやってみるということで準備しておいて損はないかと思います。





組織に割り当てられるリソースは限られています。

理想はプロジェクトやそこで求められる職能に応じて人員が柔軟に入れ替わったり成長したりすることでしょうがそんなことはなかなかできるものではありません。


今あるパイの中から適材な人を見抜いて割り当てていくしかなかったりします。

しかし、これも難しく実際の多くはその人の能力を考慮せずに不適材でもとりあえず埋めるべきポストに当てはめていってるのではないでしょうか。

やるべき事とその役割を今あるパイの中から誰が適材かを考えないといけないところを、そうなっていないことがよく見かけられます。



アサインする際に陥りがちなパターン


1つは、贔屓にしている人にその人の能力を考えずに役割を割り当ててしまうパターンです。

長年の付き合いから仕事がやりやすいんでしょうけど、その領域で能力が発揮できるかどうかは別の話です。

そういう人は元々能力が高い人も多いのですが、要は「あれができたからこれもできるだろう」という考えでアサインしてしまうのですが、担当領域が違うとなかなか本来のパフォーマンスを発揮できません。


また、仮に上手くこなせたとしても、その後も都合のいい人と扱われて色々なプロジェクトに参画させられ、本人がその中でうまくその経験を融合させていけば良い方向に向かうでしょうが、そうではない場合は中途半端な人材が育ってしまいます。

オールマイティってなんでもできるように見られますが、悪くいえば何れにも特化してないってことにもなります。


このパターンの派生系にはマネージャーの思い込みによるポストの固定化の問題もあります。

チームリーダーをしているあの子にしかできない仕事だろうとか、ドキュメントを書くような仕事であの人を使うのはもったいないとか、 マネージャーがこの仕事にはこのランクの人というのを持ってたりするわけです。

これではチャレンジングなことも出来ずに人はなかなか成長の機会を与えられないばかりか、既にその域の仕事をできる人材を活用できず、そして目的達成のゴールを忘れ適材と思い込んでいるリソースが空くのをじっと待ち機会を逃す羽目になりかねません。


もう一つが無理に今の人材からポストを割り当てようとして、教育しながら役割を担ってもらおうとするパターンです。

これは一見良いように見えますが、教育というのはかなり長い時間がかかりますし、成功するかどうかもわかりません。

今すぐそのポストを埋めないといけないという場合にこの方法は使いづらいうえに、今後必要な人材というのらなかなか見越すことができません。


もう一つ、この教育というのはコストがかかることなのでそれを嫌うマネージャーも多いということです。

ちょっと教えた程度でこなせる仕事ではないわけで、専門的な教育が要るわけなのですが、それを捻出することさえできなかったりします。

要は建前上は教育ということになっていますが、OJTと同等のことで専門知識を短期間に鍛え上げるようなプログラムにはなってなかったりするわけです。

プログラマの人にデザイナーの仕事(デザインのイロハである概念的なことも含めて)を片手間で担当してというのはかなり厳しい事だと思います。



強みを活かしたチーム作り


どの組織も求める人材と要員が不足またはミスマッチしてるケースはあるでしょう。

トラックナンバーと言われるような、その役割が一人に詰め込まれていることや、兼任することで負担が増加したり、本来の能力が発揮できてない人もいます。


少なくとも今いる組織に求められる職能はなんなのかを把握し、それが現在の人でどう割り当てられているかは分析する必要があるでしょう。

また、組織間の壁を取り払い柔軟に人を異動できる仕組みづくりもいるかもしれません。

何れにせよ、論理的に役割に応じたアサインをすることは、かなり人を客観的に見て判断する能力が必要です。そして、その決断も。


以前に読んだ、ドラッカーの「プロフェッショナルの条件 」の中にこんな一節がありました。


 人に成果をあげさえるためには、「自分とうまくやってけるか」を考えてはならない。「どのような貢献ができるか」を問わなければならない。「何ができないか」を考えてもならない。「何を非常によくできるか」を考えなければならない。特に人事では、一つの重要な分野における卓越性を求めなければならない。

アサインする人物が何を最も得意とする人なのかを考えればおのずと今あるパイの中でどういった要員配置を取るのがベストかは見えてきます。

それは、その人の今ある役職などを考えるのではなく、その人が持っている能力を他の参加メンバーと相対的に比べて判断しなくてはなりません。


先に書いた、自分とウマが合う人や役職に見合ったプロジェクトの役割なんかを考え出すととても正しいチームなんてできません。

それは時に非情な判断にもなりますが、チームが最も機能する形、そして目的達成のためには必要な判断になってくるのだと思います。