企画物の最近のブログ記事

 アンケートシステムの番外編です。番外編を書く暇があったら、アンケーシステムを完成させろよと言われそうですが、気にせず書いていきます。

 レベルの付け足しと今後のプログラミング記事の記事で、アンケートシステムを簡略化すると書きましたが、どれくらい簡略化するかと言うと、一つしかアンケートを出来ないようにします。アンケートごとに関する表示を作成するのが面倒くさいので。メニューにするとこんな感じです。

1.アンケートの作成
2.アンケートの投稿
3.項目の一覧を表示
4.アンケートを削除

「1.アンケートの作成」で作成又は修正する感じです。作り的には、後々複数投稿するシステムに変更するのに、それほど難しくない作りだと思います。Rubyでプロトタイプをぼちぼちと作成しているのですが、作成して思った事を今回の記事では書きます。

 

 Javaで作成する事に慣れているので、やはりオブジェクト指向で考えてしまいます。Rubyもオブジェクト指向ですが、Javaとは違う箇所やJavaの作りでは出来ない処理も出来てしまいます(Rubyではそのような作りになっているので当然ですが)。

Javaでは、すべての作りがクラスで作成するようになっています。ちょっと待てよ、インタフェースは?と思う方もいるかと思いますが、インタフェースでは処理は作成できません。C言語でも、C言語はすべて関数で作成されているといった場合に、ヘッダファイルやマクロがあると反論しないと思います。実際マクロや構造体を処理するのは関数の中ですから、C言語はすべて関数で作成されているのだと言えます。マクロの定義は、オブジェクトファイルですべて置き換わっていますし、構造体はメモリ上に領域が確保されるだけです。

今、考えているのは、画面の情報を画面フォームオブジェクトに格納し、実際処理を行って、DBに格納するポーターオブジェクトに代入します。ポーターオブジェクトを使いDBで処理を行います。DBからデータを取ってくる場合は、この考え方の逆で行います。列挙すると以下の感じです。

1.画面から情報を受け取り、画面フォームオブジェクトに格納する。
2.画面フォームオブジェクトのデータを使い、処理を行う。
3.画面フォームオブジェクトをポーターオブジェクトに代入する。
4.ポーターオブジェクトのデータを使い、DAOでDBの処理をする。

上記の考えは、MVCの考え方や三層構造の考え方です。

画面フォームクラスは、画面の情報を基に作成されます。画面とプログラム(VIEW)のデータの橋渡しです。変数名や日本語名は画面名から導き出します。画面が変更されれば、画面フォームクラスも変更されます。又、DBのテーブルや項目の変更に影響されません。

ポータークラスは、DBの情報を基に作成されます。DBとプログラム(DAO)のデータの橋渡しです。変数名や日本語名はDBのテーブルや項目から導き出します。DBのテーブルや項目が変更されれば、ポータークラスも変更されます。又、画面の変更に影響されません。

作りとしては、オブジェクト指向の考え方に合致していますね。

 考え方として問題となっているのは、処理の部分です。オブジェクトで共通する処理がある場合を考えていきたいと思います。Javaでは、共通した処理を使いたい場合に、しばしば親クラスを作成し、継承させてクラスを作成します。それが、「is a」の関係になっていれば、良いのですが、必ずしもそうとは言えません。本来共通した処理がある場合は、処理だけを独立されてクラス等に使わせる必要があります。Javaなら処理するクラスを作成して、そのクラスを各クラスで使用しても良いと考えているのですが、親クラスで定義させることが多いですね。一般的に言われているユーティリティークラスはそのようになっているのですが...

 Rubyでは、Mix-inが利用できます。Mix-inとは、モジュールをクラス等に取り込むことで、クラスならクラスで定義したメソッド等と同じように操作できる事です。このため、クラス間で共通の処理がある場合は、モジュールで作成し、各クラスが共通のモジュールを取り組めば良いことになります。その事により(Javaとは違い)、無理やり継承(is aの関係)させる必要はなく、共通処理を行わせることができます。この考えは、オブジェクト指向の「has a又はpart of」の関係も実現する事が出来ます。Javaでは、「has a又はpart of」の関係を実現させるには、内部クラスで実現できますが、他のクラスで使用する場合は結局、継承させる必要があります。

 又、Javaのインタフェースを適切に利用しているシステムも少ないと思います。インタフェースの役目として、C言語のヘッダファイル(プロトタイプ宣言や定数の作成)、ポリモルフィズムの実現にも利用されなければなりません。


 好き勝手に書いてきましたが、理想と現実は違うという事ですね。と言っても、私に理想的な設計できる能力があるかと言われると、勉強中としか答えられませんが。Rubyのアンケートシステムは早ければ今月中に完成させる予定でいます。

 前回のRubyの記事(Rubyで作成するアンケートシステム MySQL編)では、RubyからDBの操作を紹介しました。今回は、アンケートシステムで使用するDBの設計書を紹介します。今回はRubyと関係がありませんが何かの題材にでも。


 勉強用なので、設計書と言ってもERDとSQL文です。テーブル設計は無く、あるのはMySQLとPostgresSQLで試したSQL文ぐらいです。SQL文は、主にMySQLに対応していますが、テーブル作成部分は、PostgresSQLでも動作を確認しています。

ファイルにまとめました。説明もファイル中にあります。
QNS_RD.xls
テーブル作成.sql

 自分が住んでいる土地は現在いくらか知りたくありませんか?プログラムを使って算出してみます。今回は、簡単に土地の評価額を算出するためのプログラミング作業の準備段階になります。


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

●テーマ
 土地の評価額をシンプルな計算で算出する。

●ねらい
 土地の評価額に必要な路線価の調べ方を知ってもらう。

 土地の評価額には、1平方メートル当たりの価格に路線価を使い算出します。路線価とは、国税庁のホームページ「財産評価基準書」(http://www.rosenka.nta.go.jp)から調べることができます。土地の評価額を算出するのに一般的に使用されます。調べたい土地は、路線価図を使用することにより路線価が調べられます。

 路線価の単位は、1000円です。例えば、200と書かれていれば、200千円です。数値以降のアルファベットは、借地権の割合を示しています。借地権の場合は、地主ではないのでその分評価が下がるということです。

 土地の評価額は、「路線価×面積」で計算されますが、その他にも細かく算出する場合には土地の形状、接道条件、高低差、用途地域などを配慮する必要があります。ブログの最終目的は、プログラムで自動的に行うことが目的ですので、なるべく配慮したいところです。例えば、奥行価格などです。奥行価格に対する説明は、2-4.(1)奥行価格補正に詳しく書かれています。

 最終目的は、プログラムでの自動化(プログラムの勉強が主目的)ですが、すべてを配慮すると市販のソフトウェアのように複雑になってしまうので、プログラミングを楽しめる程度、勉強できる程度にしておきたいと考えています。

 次回は、シンプルな方法の算出でシンプルなプログラミングを作成します。

 先日、ICレコーダーを買ってきて、何か試せないかと思い以前書きました効率 その1 Java アクセサ の 作成を音声による説明をテスト代わりにしてみました。テストということもあり、言い間違えがありますが、そのまま投稿します。

ブログもそうなんですが、私自身完璧にやろうとはせず(例えば、ブログなら毎日投稿など)はじめは地道に進めます。これから私が作成したプログラムぐらいは音声付きの解説ができればよいと考えています。音声を投稿するのははじめてなので、初心ということで投稿して後々の変化がわかればと考えています。もちろん、解説がうまくなることを願ってです。

今回は、編集も何もしていないので、効率 その1 Java アクセサ の 作成に追加せず、ここに投稿しました。

音声ファイルです。

  080729_004.mp3

約7分間収録されています。記事なら3分ぐらいで読めてしまう内容なのでいかにコンパクトにまとめ、要点を押さえられるかが課題です。営業道のように、はじめはこんなものだと思ってがんばります。はじめの踏み出す一歩が大事ということで。

 ICレコーダーの事や今回使用したICレコーダーの説明は後々投稿します。

 資格は仕事に役立つのか その1 単体テスト編2では、ブラックボックスについて書きました。今回は、ホワイトボックスと網羅についてです。

 単体テストの一つである構造テストは、テストの範囲をプログラムコードから分析しコード全てが網羅しているかどうかを調べます。プログラムコードから分析することにより本来起こらない条件もテスト出来ることからホワイトボックスなテスト(中身が見える)と言えます。

試験では、「命令網羅」、「判定条件網羅」、「条件網羅」、「判定条件/条件網羅」や「複数条件網羅」が出題されますが、通常はカバレッジツールを利用して、テストを行うのでチェックリストの作成段階では意識する事はありません。

カバレッジツールを利用していれば、カバレッジモニタで網羅の基準となる「C0」、「C1」、「S0」、「S1」が表示されるので簡単に状況を知ることができます。通常は100%になるようにテストします。チェックリストですべて100%になるようなテストを作成できれば一番好ましいのですが、チェックリストをすべて行っても網羅が100%にならない場合は追加テストなので補完します。

通常起こらないテストとは、例外処理が中心となるでしょう。例えば、JavaならDBに障害が起きてアクセスできない事を想定して、例外をわざとスローさせます。例外がキャッチできて適切にプログラムコードが想定した動作をするのかなどをチェックします。私はまだ通常時にIOExceptionが発生した事はないのですが、当然ここもわざと例外をスローさせて対応をみます。

プログラム作成から当然例外処理を意識して作成しているので、特に大変なの事はないですが、構造テストでしっかりとログを見ることが大事です。ログも当然単体テストの為、エビデンスを残すのですが、それだけではなく構造テストはすべてのパターンのログが出力されることになります。出力されたログで本当に内容がわかるのもチェックすると後々のテスト時の後戻りがなくなります。

ログの出力はすでに設計時にばっちりと決められていることが多いですが、ログ時に出力するメッセージやバグ用に出力する内容は変更できることもあります。変更できる時には、自分の能力を発揮するチャンスでもあります。単体テスト以降に続くテストは当然ですが、運用時に問題が起こった時にもログが重要だからです。



 カバレッジ(coverage)とは、コードの網羅度のことでステップ法に続いてテストの品質を決める要素でもあります。テスト数はテストを行う目標値として扱われるので最初に作成したテスト数の数をこなせば単体テストが終了するというわけではなく、ガバレッジが100%にならないと単体テストが終了と認めらないことのほうが多いでしょう。

ガバレッジと網羅の言い方は、私が経験した中では人それぞれなのでどちらでも言いように感じます。

 資格は仕事に役立つのか その1 単体テスト編1では、テスト数を決めるステップ法について書きましたが、今回の単体テスト編2は、ブラックボックスに付いてです。


 単体テストには、大きく分けて機能テストと構造テストに分ける事ができます。機能テストは、ブラックボックス技法を使い、構造テストは、ホワイトボックス技法を使います。

機能テストとは、テストの範囲を機能からテストすることにより仕様書通りに動作するかどうかを調べます。コードを意識しないことからブラックボックスなテスト(中が見えない)と言えます。ブラックボックスは、資格同様に「同値分割法」、「限界値分析法」がメインなのは、実際も同じと考えて良いでしょう。

私が苦労した点といえば、画面系のテストです。画面では、入力させない文字や最大入力桁のテストなどを行い項目が6以上になるとテスト数が増え大変でした。項目1つに大体15個で5項目なら組み合わせのテストで80ぐらいの数になっていました。プログラミングしながらテストをする為、15程度なら大したことはないのですが、単体テスト編1にも書きましたエビデンス(証拠)を残さないといけません。中には入力不可の文字テストなどのエビデンスが撮れない場合があり、その場合には「目視」と単体テスト書に記述する事もあります。

画面項目はテスト項目に応じてですが、DBがかかわってくると、テスト項目1個に対して3個ぐらい証拠の過程が必要でした。例えば、追加なら、登録する内容を示した画面、実際に処理が行われているコード(ビーンやポーターなどに適切に値が入っているか)、結果のメッセージ、DBのテーブルの中身、ログ(SQL文など)などです。画面で適切なテストが行われていれば、「同値分割法」、「限界値分析法」を行わなくても前提条件が終了している為、テスト数は低減できますが、当然追加の場合には主キーが既に行われているなどのテストがあります。1つテストを作成すれば(例えばDB関連のテスト)自ずとそれに従うテスト項目が浮かんでくるでしょう。

次回は、ホワイトボックスに付いてです。

 効率 その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の違いを説明します。

 プログラミングを知ろう、学ぼうと言う企画で全7回説明してきましたが、7回目は6回説明してきた事やこれからどう勉強するかについてまとめます。

 この企画の受講状況を各自で管理してもらおうと思い管理表をGW_firstJava.xlsからダウンロードできますので使ってもらえると各自の進行具合が分かります。学び終えた場所の「日付」に「Ctrl+;」を「時刻」に「Ctrl+:」を押せば終了した日付と時刻を記憶できます。PDF版はGW_firstJava.pdfからダウンロードできます。なお、ファイルはウィルスバスターでウィルスチェックしています。


7-1.プログラミング入門者の3つの壁

 プログラミング入門者(GW企画の対象者)には、3つの壁があります。プログラミング入門者の3つの壁に詳しい説明がありますので読んでみると面白いと思います。では、ここで何を説明するかですが、さて、GW企画で「プログラミング入門者の3つの壁」を越えられる力が身についているのでしょうか疑問も思われる方がいるかもしれません。答えは十分力は付いて、6回読む前とでは思考能力も向上しているでしょう。それでは3つそれぞれ見ていく事にしましょう。

1.「HelloWorld」出力の壁
2.言語特有の壁
3.30行「50行」の壁

7-1-1.「HelloWorld」出力の壁

 「HelloWorld」出力の壁には2つのポイントがあります。1つ目は、その事自体を知る(今回で言えばプログラミング、Javaを知る)と2つ目は、準備をして初めてのプログラム「HelloWorld」を出力する事でした。壁を越えられる力は次の回でした。

GW企画 1回目 プログラムの第一歩

知るだけでも大きな成果でそこから調べるべきキーワードも自ずと見えてきたはずです。

7-1-2.言語特有の壁

 私たち通常コミュニケーション日本や英語でもそれぞれに言語特有の難しいポイント(壁)が存在します。プログラミング言語でも言語それぞれに壁があるのです。GW企画で採用したJavaでは1つとしてオブジェクト指向からプログラミングに適用する事を焦点に絞り壁を越えられるように説明してきました。壁を越えられる力は次の回でした。

GW企画 5回目 ERDからクラスへ ロジッククラス作成
GW企画 6回目 ERDからオブジェクト指向に対応

 2つの回でもオブジェクト指向のメリット・デメリットを知る事が出来たのではないでしょうか。

7-1-3.30行「50行」の壁

 30行「50行」の壁は、一般的な入門書ではプログラミングの機能自体を教える事や入門者に見やすいようにとどうしても行数が限られてしまいます。
例えば、Cなら1つの機能を教えるのに「30行」あればたり、Javaのようなオブジェクト指向言語はクラスの説明でも「50行」あれば足りてしまいます。
GW企画では、7回と言う短い期間で行うと言う事で少しソースが長くても頑張って貰おうと思い30行「50行」の壁を越えられる力を説明しました。壁を越えられる力は次の回でした。

GW企画 5回目 ERDからクラスへ ロジッククラス作成
GW企画 6回目 ERDからオブジェクト指向に対応

 ソースの長さに戸惑ったと思いますが、1つ1つの処理(例えばクラスやメソッド)を見ても処理される事はそれほど難しい事ではなく、他のクラスやメソッドでも同じ事が書かれていると知っていただくだけも30行「50行」の壁は越えられる力の一歩になるでしょう。

7-2.今後の勉強について(入門者から初心者へ中級者を目指して

 プログラミング(Java)をマスターするにはGW企画の7回ではまだまだ不十分ですが、プログラミング(Java)を知ってはもらえたと思います。
今後は、一般的な入門書を見ながら初心者向けの本や中級者向けの実践本を勉強できる力は備わっているはずです。

 

 全7回最後までお読みいただきありがとうございます。勉強するには、ある程度期間(例えば1ヶ月)を決めて取り組み自分が作成してみたい事もプロジェクトして取り組むと大変勉強になります。最後に、全体を通して参考になるWebを紹介します。

・Javaプログラミング入門者・初心者向け
1.Java入門講座
2.JavaでHello World
3.Javaの道(Java入門・リファレンス)

・プログラマー・SEを目指す人向け
1・エンジニアのための『仕事・職場・転職』応援サイト Tech総研
2・エンジニア★流星群 @Tech総研

・全般的なプログラミング講座
1.@IT - アットマーク・アイティ