LifeHackの最近のブログ記事

 せっかく、高性能なマシンを持っているのに、それを活用しなくてはもったいない。

今回のテーマとねらいです。

●テーマ
 Eclipseの活用方法
●ねらい
 Eclipseの機能でマシンを贅沢に活用する。


 現在のマシン(PC)は、十分なCPUパワーとメモリ容量が搭載されている。そこで、Eclipseの機能を使い、ちょっと贅沢な使い方をしてみましょう。Eclipseで作業する時に、ファイルが多く探すのにスクロールを上下するのは面倒くさいと思いませんか?他にも、タブに表示するファイルも多くは切り替えるのに面倒くさいですね。そんなときは、フォルダ単位で新規ウィンドウを立ち上げると便利です。

Eclipse新規ウィンドウ一覧.png

ファイルを展開してみましたが、WEB-INFまで探すのは大変です。また、ソースとpropertieやxmlファイルを複数起動していると、切り替えるが面倒くさいですよね。

WEB-INFに使用するウィンドウを新しく開くには、開きたいフォルダの上でコンテキストメニューを表示します。

Eclipse新規ウィンドウメニュー.png

新規ウィンドウを押下すると、
Eclipse新規ウィンドウ新規.png

新しいウィンドウが開きます。タブも別で管理できるので便利。注意するところは、設定ファイルでメモリを512MB以上に設定すること!

これで、アプリを切り変えれば、専用にウィンドウを使う事が出来ます。

 先述の記事に、ファイリング・デザイナーという検定を紹介しましたが、ホームページで紹介されている指定図書を読んだ感想をファイリング・デザイナーの一方として紹介します。

今回のテーマとねらいです。

●テーマ
 ファイリング・デザイナー検定の一方。

●ねらい
 私が感じたファイリング・デザイナーの考え方を知ってもらう。

 

 私は、最初にファイリング・デザイナーを聞いた時には、整理術に関する検定と思っていたのですが、テキストを読むと整理術に関する検定とは少し違っているようです。整理術というと、汚い机の上や整理できていないファイルを整理する事ですが、ファイリング・デザイナー検定は、「トータル・ファイリングシステム」という概念を学ぶ検定です。2・3級に関しては、整理術に適用できますが、検定の目的は、会社全体に導入するファイリングです。そのため、すぐに適用できるというよりかは、本格的に導入する必要があります。例えば、会社全体で行うには、計画、準備(ファイリングするためのフォルダや棚など)などが必要になってきます。整理術を取得する事を目的にするには別の検定や資格の方が適切かもしれません。ただ、基礎的なファイルサイクルを知るためには効果的な検定だと思います。

2・3級のレベルに関しては、一ヶ月ぐらい勉強すれば受かりそうですが、テキストだけですと、各級ごとに過去問が一つずつしか無い為、出題傾向が把握しづらいのが難点です。


 電子化ファイリング検定は、B級とA級とあるのですが、B級はオフィスに必要なネットワーク、ファイル形式、セキュリティ、電子文章が中心なのでIT関連の仕事に就いている方には必須の知識と思わる内容が出題傾向です。資格で言うと「.comMaster★」に電子文章に関する問題が加わった感じです。

 A級は、e文章や電子文章に関する知識を問う問題が出題され、情報処理技術者試験の情報セキュリティ関連の午前の知識に該当するように感じられます。

 ブラウザには、いろいろなタイプの種類が存在しますが、機能に違いはあるけれど大差ないと思いませんか?そこで、私が行っているブラウザの使い分けの方法をご紹介します。

今回のテーマとねらいです。

・テーマ
 複数のブラウザを使い分ける。

・ねらい
 ネット上には、複数のブラウザが存在するが、一つのブラウザだけを使うのではもったいない、複数のブラウザを使う事により、Lifehackを実現する。

 

 あなたのPCには、いくつのブラウザがインストールされていますか?複数と答えた「あなた」は、複数のブラウザを上手に使い分けていますか?全然使っていなく、ディスククリーンの対象になっていませんか?開発のためだけに使っていませんか?

一つでも思い当った「あなた」も実際に使い分けている「あなた」も、または一つしかブラウザをインストールした事しかないあなたもこの記事は必見ですよ!

 私も複数のブラウザをインストールしたきっかけは、開発のためにインストールしました。でも、今回の記事のようにブラウザを使い分けたところネットの扱いも、仕事の効率も向上したと実感しています。では、これから説明に入ります!

 

 複数のブラウザと書きましたが、だいたい3つが理想です。例えば私なら「Internet Explorer」、「Mozilla Firefox」、「Safari」を使用しています。開発に使うならそれぞれ「Trident(IEコンポーネント)」、「Gecko」、「KHTML (WebKit)」を意識するのですが、今回はブラウザであれば関係ありません。
複数のブラウザを利用する事による利点を述べると、

1.アプリケーションが別な為、トラブルが起きても他に影響されない。
2.アプリケーションが別な為、複数のアプリケーションが立ち上がっていても目的の内容を発見しやすい。
3.アプリケーションが別な為、ショートカットを別に定義でき、新規ウィンドウを立ち上げる事が出来る。

と言ったところでしょうか。

では、それぞれ見ていくことにしましょう!


 「1.」は、一つのブラウザしか使用していなかった時の私の体験を基に利点と感じたところです。私は、RSSなどから取得した気になるWebをすべてブラウザ上に表示しています。そうすると、たまに、量が多いせいなのか、ブラウザが落ちる事が多々あります(そいう経験をして、「あちゃー」と思ったことはありませんか?ブログの記事を書いている最中に、辞書で調べようとしたときは特にそう思います)。RSSなどから取得した記事を再度見つけ出すのに苦労はしないのですが、たまたま発見した記事は後から履歴などで探すのが面倒です。そこで、たまたま発見したWebなどは、別のブラウザ上で、開いています。例えば、通常使うブラウザが、「IE」なら、重要な記事は「Safari」でとかで表示しています。

 重要なWeb以外にも、頻繁に使うWeb(辞書、Wikipeidaや自宅ならTV番組表など)は、別のブラウザに表示することによって、Webを見る時にタブなどに混ざらないようにしています。また、通常のブラウザが落ちても頻繁に使うWebを表示したブラウザには影響しないため、そのつど再度表示する必要は無いのですよ!便利だと思いませんか?

 「2.」は、先ほど紹介した重要なWebや頻繁に使用するWebを通常に使うブラウザとは別に使用する事にもつながります。確かに、タスクバーには、記事のタイトルが表示されていますが、タイトルが分かりにくかったり、仕事なら当然いろいろなアプリケーションやフォルダ、ファイルが開いていますよね。それで辞書で調べようとタスクバーを見た時に今の環境ですぐに見れますか?

私は、辞書専用のブラウザを用意してもいいんじゃないかと考えています。辞書専用だけでなくても重要なWebを通常とは違うブラウザで表示すれば、タスクバーでも区分けできすぐに表示することができます。

「3.」は、私の場合ブラウザを表示する場合には、アプリケーションのショートカットにショートカットキーを設定して利用しています。そうすると、新しくブラウザを表示させたいのに、既に起動されているブラウザが選択されてしまいます。それでは、意味がありませんよね。そこで、結局新規ウィンドウを開いたり、直接ショートカットから起動しています。

当然、アプリケーションが違えば、ショートカットキーの利点がそのまま利用できます。


 利点は、それぞれ補完し合っています。それ以外にも様々な利点があると思います。例えば、ホームページを作成するときに、表示するブラウザを通常とは、違うブラウザに表示する。タブ機能以前のブラウザだと現在表示しているWeb(例えば、辞書など)に表示されて、確認してからもどるを押して前のWebに戻っていたことがありました。表示するブラウザを通常とは別のブラウザに変えれば、このような面倒くささは解消されます。複数のブラウザを使って色々とLifehackなことを試してみてはどうですか。

 現在常駐先では、あるシステムで有名なフレームワークを利用してスタンドアロンのプログラムを作成しているのですが、Webのプログラムを担当している方に「Webでも何か(独自の)フレームワークを利用しているのですか。」と聞いてみました。その方が担当している部分だけは独自のフレームワークを利用していないとの事でしたが、Javaで一般的なStrutsを利用しているそうです。ただ今回のような(オフィスの1フローが埋まるぐらいのプログラマーがおり、数年規模の作業)プロジェクトでは、Strutsではまだ応用範囲が多いことから一般的にはその間にもプログラムの品質を統一する独自又は一般的に使用されているフレームワークを使用するそうです。プロジェクトが大規模になればなるほどプログラマーも増え、関わる会社も多くなりますからより中間的なフレームワークが必要ということだと思います。

Struts自体がフレームワークであることや他の言語(例えばCなど)と比較すると色々と制約が多いと考えていましたが、確かにStrutsでもコーディング規約をより明確にしないとプログラマーの差でコードの品質が一定に保つのは難しいそうです。アルバイトや小規模な社内システムしか作成した事が無い私としては、大変参考になりました。


 私向きの資格発見!!で番組を紹介しましたが、放送の中で会社ごとに整理するルール(特に、場所)を徹底することによって道具を探す手間を省き生産性を向上させる(目からウロコの整理術)という内容があったのですが、これはまさしく、プログラミングで言うフレームワークに相当するのではないでしょうか。ただ、プログラミングではフレームワークを当たり前のように利用していますが、私が感じるのは、仕事は出来ていてもプライベートに反映されていない事です。例えば、システムの設計でプロジェクト進捗を管理する事は出来ますが、自分のプライベートの事になると計画が一切されていない事などです。私は、仕事の技をプライベートなどの生活で利用したり、プライベートで行っていることや仕事とは関係なく勉強したことを他の人よりは仕事でも生かしていると思っています。例えば、一般的な整理術をプログラミングにも応用するというようにです。又、それは今までコンピュータが導入されていなかった所にコンピュータを導入することと同じでもあると思いませんか。仕事で依頼者(お客)の問題を解決すること自体が出来ると言うことは、プログラミング(一般的にはシステム設計)と他の部分(例えば、勤怠管理などの管理や整理)が共通していることだと思います。おなたは、ちゃんと生かし切れていますか。

 LifeHackが叫ばれていますが、プログラマーやSEはまさにコンピュータの利用を中心にした仕事をしているのですから、普段からフレームワークを利用するプログラマーも多いと思いますが、普段から利用しているからこそ、他にも応用が効かないか考えてみるのも仕事の効率や品質だけではなくプライベートを充実する為にも良いかもしれません。

 先週NHKの番組「めざせ!会社の星」で、目からウロコの整理術が放送されていました。整理できる方が「ファイリング・デザイナー検定」という資格を持っていることを知り、以前からLifeHackに興味があった私としては、早速「ファイリング・デザイナー検定」の事をいろいろと調べてみました。ファイリング・デザイナー検定は、書類に関する検定のようなのですが、電子化ファイリング検定という資格もあり、電子化ファイリング検定は電子データに関する事のようなのでファイリング・デザイナー検定と合わせて面白そうだなと興味を持ちました。

Web先で過去最優秀合格者をみると「ファイリング・デザイナー検定」や「電子化ファイリング検定」の合格者にソフトウェア系の会社も多く含まれているので、早速資料を請求してみました。資料は、まだ届いていなのですが、今から楽しみです。

 私は、会社に入社して3ヶ月半になるのですが、途中から常駐先での作業になったこともあり、会社にある私の机はほとんど空です。常駐先では少しずつファイルが溜まってきたりはしていますが、机に余裕があるうちにファイリングの知識を養おうと考えています。私自身プログラマーですから、ファイリングの知識をプログラムに応用できるよう今から燃えています。

 自分なりの贅沢は何ですか?突然質問しましたが、エンジニアに限らず体調管理は、大事ですよね。私も自分なりの体調管理を実施しています。体調管理にやる気や集中力がありますが、やる気や集中力を高める上で行っている一つが自分なりの贅沢です。贅沢を自分で与えることによりやる気や集中力を高めます。

 先日、常駐先でお昼などの代金を手帳に書き写しているのを隣の方に見られてしまいました。私の場合は、日頃は出費を抑えて一週間に一回、小さな贅沢ですがその為にお金を管理しています。一日に使う目標金額を決め、目標金額に到達しないお金をポイントとして貯めていきます。例えば、一日のポイント金額が100円なら一週間で500円です。

一週間で500円貯めれば何ができるかですが、私の場合は帰りの電車を特急に変えて利用しています。500円であれば、ほとんどの人は特急に乗れるのでしょうないでしょうか?エンジニアの方は、業種を問わず夜遅くなることが多いと思います。私の場合は夜遅くなることはまだありませんが、時間帯によっては帰りでも朝と同様満員電車です。その中を特急で帰ることが私の小さな贅沢です。

たった一週間に一回ですが、その日だけでも仕事中はやる気や集中力が高まりますし、特急の中では、雑誌や本を読んだり睡眠ができます。睡眠では勿体無いと思うかもしれませんが、満員電車で苦しい思いもする事無く、席に座れない事も無いので、その日だけは自宅に着いて直に自分のやりたいことができます。


 考え方は、いろいろだと思います。私の場合は一週間に一回でしたが、私とは違って一週間に一回贅沢をするよりも毎日に少しずつ贅沢をする人もいるかもしれません。プログラマーを目指す人は、ただプログラミングや設計の勉強だけではなく、体調管理も大事な仕事の一つなので、今回のテーマのように、学生の時代から心がけてはいかかですか?

 効率 その3では、効率をする上での私なりの実践方法を紹介します。

 プログラミングだけに限りませんが、物事は細かく分け目標というよりかはTODOを利用することにより、確実に仕上げるのがベストだと考えています。TODOを利用するのに、色々なフリーソフトなどが利用できますが、一番は身近なアプリケーションを利用することだと思うので、私はExcelを使用しています。以前、GW企画で進行具合がわかる管理表を用意しましたが、見てもらうと分かると通り、非常に簡単なものです。

TODOを利用していると書きましたが、TODO以外にもアイデアマラソンで有名な樋口健夫さんの著書(図解 仕事ができる人のノート術)で紹介されている「マラソン日記」を利用しています。また、私は常に5冊ぐらい(ジャンルが違う本)を同時並行で読むため、どこまで読んだかわかるように本の管理にも使用しています。

実践している管理は、すべてExcelを利用しているのですが、毎回入力しなくてはいけない作業も多くいくら先行投資をしているとしても面倒なことには変わりありません。そこで、私は、VBAを利用して少しでも無駄な作業を減らしています。少し紹介をします。ここ( Management.bas)からダウンロードできます。ダウンロードできるように、プログラムを修正しましたが、汎用性はほとんどありませんので、自分で修正する必要がまだありますが、書き方を覚えれば、問題なく使用できます。利用方法は、ここ( Management_ReadMe.txt)からダウンロードできます。

 

参考URLです。

アイデアマラソンへようこそ

 効率 その2として、効率の面で見たJavaとRubyの違いを書きます。

 はじめに、その1でも紹介しましたアクセサの違いから紹介します。Javaでは、アクセサを作成するのに、メソッドのなどのコメントを省くにしてもEclipseなどのIDEを使用しないと効率的に作成できませんでした。Rubyでは、以下の記述だけでアクセサが可能です。

attr_accessor:変数名

 Rubyを簡単に紹介すると、プログラミングにデフォルトを用意し、デフォルトと違う処理だけを独自に作成すると言えます。デフォルトとは、「attr_accessor:変数名」のように決まった処理の事で、アクセサ設定の場合に限れば、他にも「attr_reader:変数名」や「attr_writer:変数名」があります。それぞれ説明すると、最初がアクセサ、次にゲッタ、最後にセッタの設定です。これらの指定は、変数の値を取得・設定をする場合に使用し、デフォルト以外の処理をする場合(例えば、範囲チェック)は「attr_xxxx:変数名」を指定せずにJavaのようにメソッドを作成して、プログラミングを行います。

 デフォルトと説明しましたが、Rubyではデフォルトとは記述されていなくUnixやCなどを行った人であれば当然の事を暗黙的に決める事です。暗黙的な所がデフォルトと言えます。この事が詳しく書かれている記事に、ITproさんの記事がありましたので、URLを書いておきます。URLは、以下の通りです。



 続いて、「Ruby on Rails」(以下、RoRと記述する)での場合です。RoRは、ITproさんの記事にも書かれていますが、Rubyよりもよりデフォルトを多く設定したとも言えます。ここらへんの説明は、ITproさんの記事に譲るとして、効率の部分で話を続けます。

 RoRは、JavaのStrutsのようにWebを効率よく作成するためのフレームワークですが、デフォルトの場合では、ほとんど自動的に行ってくれます。何かWebを作成するのであれば、そのデフォルトを改造して作成する形で進めていきます。また、RoRを便利に使用するためのGUIツールも存在し、DBの設定までもGUIで行う事により、キーボードを数回たたくだけでWebを作成する事も可能です。

 では、RoRを使用する事によって、Webを簡単にできる手順を紹介します。今回は、GUIツールを使用しないで説明しますが、本来のRoRだけでも簡単に作成できる事が分かると思います。

(1)アプリケーションを作成
 アプリケーションを作成するには、コマンドプロンプトやシェル上で「rails -d DB名 アプリケーション名」と入力し実行する。実行すると、アプリケーションの枠組みが作成されます。アプリケーション作成時に、既にオプションとしてDBを選択する事により、DBの設定も行ってくれます。
(2)DBの基本的な設定
 続いて設定するのは、早くもDBの設定です。DBの設定は、例えば、データベースやユーザの作成であり、既に利用するデータベースとユーザが決まっていれば不要です。GUIツールを利用すれば、コマンドプロンプトやシェルからの記述は不要です。
(3)RoR上でのDBの設定
 RoRでのDBの設定は、自動作成したアプリケーションの枠組みである「config/database.yml」という所に、DB名、ユーザ名、パスワード、ホストを設定すれば、完了です。ちなみに、RoRでは、オプションの設定にもよりますが、一般的な設定でも開発用、テスト用、本番用のDB設定ができるように定義されています。
(4)モデルの作成
 続いては、モデル(MVCのモデルの事)の作成です。モデルの作成は、Rubyを使いコマンドは、「ruby script/generate model クラス名」だけです。自動作成されたところに、カラム名を記述すれば終わりです(アクセサの説明でしたように簡単に設定できます)。先度DBでテーブルを作成していませんでしたが、「rake db:migrate」を実行する事によりDB上に自動的にテーブルが作成されます。
(5)CRUDの作成
 次もRubyを使うのですが、次の処理に関しては、便利だと思うはずです。先程DBにテーブルを作成しましたが、アプリケーション側(当然プログラム上)から操作できないと話になりません。操作とは、データ作成、読み出し、更新、削除のことです。4つまとめて「CRUD操作」とも呼ぶ操作の事です。Rubyでは、Javaとは違いわざわざコードを記述する必要はありません。コマンド上で「ruby script/generate scaffold クラス名」のように、クラス名にモデル名を記述するだけで「CRUD操作」が自動作成されます。
 
 後は、サーバを立ち上げれば、作成したアプリケーションにアクセスする事ができます。画面は、自動生成で作成されているため、自分でHTMLなどを編集する必要がありますが、ゼロから作成するのが面倒な人や初心者にとっては大変ありがたい機能など思います。ちなみに、モデルでDB上に作成するテーブルの型を指定していましたが、文字列、テキスト、日付などに合わせて画面上に部品を自動生成してくれます。例えば、テキストならHTML上も当然textarea形式で大きさもある程度確保されています。また、日付なら、年、月、日などのようにプルダウンメニューから指定できるようになっています。日付も当然自動的計算されています(例えば、閏年とか)。

 RoRの初歩の説明でしたので、実際にアプリケーションを作成する時には、RoRの良さがより現れてきます。CoC(Convention over Configuration)が実際どうなのかというのもRoRを使用する事により感じ取れると思います。CoCとRoRの関係は、先程のITproさんの記事が参考になります。


 また、Rubyは、「プログラマーに優しい」と聞かれた事があると思いますが、この記事に関しては、以下のURL先が参考になります。この記事もまたITproさんの記事です。



次回は、プログラミングだけではなく、私が実践している効率の事を書きます。

 仕事などで大事な要素に、スピードや効率があげられると思いますが、私なりの効率的な作業を三回に分けて紹介します。

 その1として、Javaなどのオブジェクト指向で利用するアクセサの作成方法(デモでは、Javaを使用します)を紹介します。
 その2として、私なりのJava(又はStrutsなどフレームワークを使用)とRuby(又は、RoR)とを比べた結果を紹介します。
 その3として、その1やその2よりももうちょっと抽象的な話で私のやり方・考え方を紹介します。


では、効率その1 Java アクセサの作成をご覧ください。

 Javaに限りませんが、オブジェクト指向を利用するプログラミング言語で作業をしようとすると必ずと言ってもいいほど、アクセサの作業に追われると思います。オブジェクト指向言語では、アクセサの作成は、「やる作業は同じだが物が微妙に違う面倒くさい作業」の代表ともいえるでしょう。人それぞれやり方は決めていると思いますが、毎回試行錯誤で試しているかには、参考になると考えています。

 デモの環境は、以下の通りですが、バージョンなどは気にしなくても大して変わらないと思います。
OS:Mac OS X Leopard 10.5.3
使用言語:Java SDK 1.5.0_13
IDE:Eclipse Europa 3.3.2

 アクセサには、クラス変数をまず作成する必要があります。クラス変数を作成する前に、以下のように、入力してみてください。

accessor_1.png
コメントや変数名に「XXXXXXXXXX」と書きます。英字であれば、何でもかまいません。英字である理由は後ほど分かると思います。戻り値の型は、一番使用すると思われるのを指定すると後々楽です。定型をコピーしてそれぞれ加工するのですが、コピーするのは、以下の範囲でコピーします。

accessor_2.png

 ペーストは、範囲から場所を移動する必要はありません。ただ適当な回数回ペーストします。続いては、コメントから記述します。この時にすでに設計書があると思いますので、それを利用してコメントの「XXXXXXXXXX」をダブルクリックしてペースしてコメントを作成します。

accessor_4.png
変数のコメントが作成できたら、不要な変数を削除します。

 続いて、変数名です。これもまた、設計書を利用すると楽でしょう。変数名も「XXXXXXXXXX」をダブルクリックして選択できます。

accessor_5.png
戻り値型もここで設定します。

 続いて、Eclipseの機能からgetterとsetterを自動的に作成するのですが、作成する前にgetterとsetterのコメントを設定します。コメントのテンプレートは、自分が使う環境に合わせてください。

 設定画面を開き、下のようにgetterのコメントを設定します。


accessor_6.png
表示をクリックすると、拡大画面が表示されます。

setterも次の画面のように設定します。

accessor_7.png
表示をクリックすると、拡大画面が表示されます。

「ソース」メニューから「Getter および Setter の生成」を選らび、getterとsetterを自動生成すると、以下の画面が表示されます。

accessor_8.png
また、変数名のコメントから「XXXXXXXXXX」を設定します。

accessor_9.png
 getter、setterが多くなると変数名に戻るのに、いちいち「home」から次に設定する変数名を選ぶのは非効率なので、クラス変数名を指定して、コンテキストメニューから宣言を開くを選択すれば、クラス変数名に戻れます。続いてアクセサの設定していないコメントを作成するのに、いちいち探すのが面倒くさいなら、コメント・テンプレートで「TODO」などを設定しておくのもいいかもしれませんね。

 その1のまとめとして、以下の方法を使用してみました。
 「XXXXXXXXXX」をうまく使う。「XXXXXXXXXX」をうまく使う事がアクセサを効率的に作成できます。アクセサに限らず他にも利用できると思います。
 大量のペースをする時には、改行もコピーする。例えば、テンプレートから何かをコピーする時には、改行も含める事によって、無駄を省く。さらに、コピーしてからペースと位置を位置を選択するよりもコピーした時点からペーストする。

 その1は、以上です。その2では、アクセサを含めたJavaとRubyの違いを説明します。