2008年6月アーカイブ

 効率 その3では、私が実践している効率方法を紹介します。

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

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

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

 

参考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の違いを説明します。

成功体験でバッチリ

|
 新たに何かを教える時に、どのように説明したら良いか困ったことはありませんか?プログラミングに限りませんが、私なりの方法の一つとして「成功体験」をさせて、自信をつけさせる方法を紹介します。私の考え方が、何かのお役にたてればと思います。

 私が提唱している「プログラミング入門者の3つの壁」という考え方があるのですが、最初の壁に、「コンパイラのインストール方法」が入門者にとっては壁であると説明しています。今回は、ここに焦点を絞って「成功体験」を使った方法の説明をします。

 新たに何かを教えるときに、どのように説明すれば、学校のような教える側と教わる側が直接向かい合う環境ではなく、本やWeb上からコンパイラのインストール方法を説明できるかを考えました。しかし、いい方法が見つかりません。例えば、「コマンド プロンプト」や「シェル」から丁寧に説明しようと考えましたが、結局コンパイラをダウンロードして環境設定しなくてはいけません。他にも「Visual Studio」の「Express Editions」やこちら側がすでにバッチを用意して、用意したバッチを使用して説明してもいいのかと考えましたが、根本的には変わらないでしょう。

 私自身は、高校の授業でノートを主に使用し、コンピュータで実際に動かすのも、すでにプログラミング環境が整っているコンピュータ室を利用していました。独学とは大きな違いの1つですね。

 そういえば、高校のときには、いきなりプログラミングの説明をする前に、もっと簡単なパソコンの操作から始めるのを思い出しました。そこで、何か簡単にできる踏み台になるものを用意して、試せる方法を考えれば、いきなりプログラミングを教えるよりかは、ましかなと考えました。ホームページの作成から試せば、コンパイラの設定は必要ありませんし、入門者にもわかりやすいと考えました。

 準備体操ともいえる踏み台や成功体験は、良い方法だと思います。誰にでも経験があると思いますが、はじめてのものや苦手なものはどうしても臆病になってしまいますし、単純なことでも難しく考えてしまいがちです。私の場合もプログラミングが勉強から趣味に変わったのは、ちょっとした成功体験が切っ掛けでした。

 新たに何かを教えるのに、すぐに教えるよりかは、簡単な成功体験をさせてみるとよいかもしれません。私の考えが参考になればと思います。


・参考Web