
このコラムはStone Table Softwareのオーナーであり、またREALbasic Developerの編集者でもあるMarc Zeedar氏により書かれたものを、著者の許可を得て翻訳したものです。この翻訳はHREM Researchにより提供されています。この日本語版へのご意見はRBU-Jまでご連絡下さい。
URL: http://www.applelinks.com/rbu/076/REALbasic Universityは最近、"オブジェクト指向プログラム"(OOP)に手を焼いている人たちからの手紙を受け、それを紹介してきました。送り主たちのほとんどは、これまでおそらく長い間にわたって、他の古い言語でのプログラム経験がある人たちです。彼らはループや変数といった基本的なコンピュータ言語の概念は理解していますが、最近のプログラム概念には頭を抱えています。
基本概念でつまづいているとき、プログラミングに対してどれほど苛立ちを感じるか私はよく理解できるので、このような人々には心から共感します。REALbasicはとても簡単に扱えるようにできています。なにがそれ程困難なのでしょうか?
私を発奮させた主な手紙は、Ben Gravely氏からのものです――少し時間を割いて、その手紙と私の回答に目を通してください(リンク先は新しいウィンドウで開くので、この場を見失うことはありません)。
Ben氏の状況のような人々を手助けするために、アプリケーションを白紙の状態から構築する通常のRBUから離れて、REALbasicの基礎をカバーする一連のレクチャーを行うことに決めました。例えあなたが優秀なRBのプログラマーだとしても、この中に役に立つ解説が見つかることと思います。 事実、私自身の勉強になることも期待しています!(教えることは、真に身につけるための最も優れた方法です。)
今週は連休中なので(少なくとも合衆国では)、皆さんには頭をゆっくり休ませてもらいたいと思います。ですから、軽い話題から始めて、重要なレクチャーは来週に回しましょう。
まず私がこの"OOP University"シリーズを準備中に、Terry Findlayさんからちょうどその話題のeメールを受け取りました。ここにそれを掲載します。
こんにちは、Marcさん
私はRBUのアーカイブを読んでいて、コラム62のBen Gravely氏の手紙に出くわしました。彼は本当に初心者向けの情報源がウェブにあってほしいということを述べていました。彼はある部分で、「私はまだ、構造体はこうこうこういうもので、こんな具合に働きますと記述されている一冊のチュートリアルにお目にかかったことがありません。だいたい3ページ目に、10,000フィートまで降下して行き、初心者向けだと主張している本がかなりあります。ナンセンスです!私が新しいプログラム構造を学習するただ1つの方法は、例題によってです」と述べていました。
彼が知りたいことと思われるいくつかの例を示しながら、彼は次のように続けました。「その意味は何ですか?そしてeditfieldのすべてのイベント領域の用法は?コードの流れはどうなっているのですか?キー・ストロークはどうやってキャプチャーするのですか?いろんな場所で値の入力、削除が可能なシンプルな数値テーブル(スプレッドシート)はどのように作るのですか。数量、品名、価格、合計の表はどの様に計算するのでしょうか。名前を読み込むためのファイルを開くにはどうしますか?特定のフォルダーへパスを指定して、毎回指示する必要のないようにするにはどうしますか?どのように印刷しますか?キャンバスの意味は何ですか?」
あなたが回答で指摘したように、このいくつかはとても基本的ですが、中にはかなり難しいこと(スプレッドシート)もあります。しかし、これは私が初めてRBを使い始めようとしたときの経験を思い起こさせました。私はAppleBasic、HyperCard、SuperCard、FileMaker Proのスクリプト、それから少々のApplescriptと、かなり広範囲のバックグラウンドがあります。それでも、oopに基づいたアプローチのRBは私にとって新しく、慣れるまでにかなりの時間を費やしました。当時、私の持っていた唯一のリソースはRB(バージョンは1.x)に付属のチュートリアルだけでした。それは役に立ちましたが、初心者向けに易しく書かれたものではありませんでした。
私はBenさんの言う通り、簡単な例題(短いコード)がプログラムを学ぶための優れた方法であるということに賛成です。私が何年間も使ってきた他のプログラム言語やスクリプト言語は、ほとんどこの方法によって学びました。私の知る限りにおいて、すでにRBを使いこなす人たちに向けられたいくつかの優れたウェブ・リソースがあります(RBU、Erick Tejkowski氏によるResExcellenceのRBコラム、Real Software社のウェブサイトなど)。しかし、Benさんのように始めの関門を乗り越えるため、少し重要な基本事項が必要な人たちに向けて書かれたものはまだ目にしていません。
そこで私のアイデアとは、RBを始めるにあたって本当に基礎的なことを提供するウェブ・サイトです。そこでは、属性、イベント、メソッド、関数、クラス、モジュール等のような用語の説明があり、それがどのように機能するのか例示されています。I/O、印刷、グラフィクス、フロー・コントロール等の基本メソッドが示されています。用語集、基本操作、OOPの解説、RBのオブジェクトの説明等のページへリンクしているホームページを想像しています。またRB Garage、RBU、ResExcellence、realsofware.com等へのリンクと共に、質問やリクエストを送るためのeメールのリンクがあればよいです。そのサイトは次のように呼ばれるでしょう。"REALLYbasic: REALbasicプログラムのための基礎"。
しかし、私がこのようなプロジェクトに時間と労力を費やす前に、あなたにこのようなサイトがすでに存在しているのかご存知であるかお聞きするのが賢明だと思いました。またもし存在しないのであれば、このようなサイトに大きな需要があると思われますか。
あなたがとても忙しいことは承知の上ですが、お返事いただければうれしく思います。
お仕事がんばってください
Terry Findlay
Terryさんへの回答ですが、私は全く新しいREALbasicのサイトが必要だとは感じていません。Terryさんの提案はREALbasic Universityの理想的なコンテンツとして思い浮かびました。しかし、現在のRBUにTerryさんの提案を取り入れるにはどうすればよいでしょうか?
そこが問題です。Terryさんの協力とともに、初心者用(プロ用にも)のいくつかの優れた手引きを導入するためにRBUに修正を加え、アップデートしていくことになるでしょう。例えば、私がこれと思ったアイデアのひとつは、用語集を拡張することです。ただ用語を定義するだけでなく、その機能を実際に示すコード集を含めるのはどうでしょうか?editFieldコントロールを例に挙げると、それは用語集に書かれていますが、どのように使えばよいのか説明がありません。FolderItemsは用語集にもありませんが、それは特に初心者をはじめ、全てのユーザがつまづくところです。
このように付加していくことで、私はRBU 用語集がとても役に立つコード用例集になると思います。言うまでもなく、用語集のフォーマットをこれをサポートするために訂正しなければなりませんし、それは一夜でできるものでもありません。しかし未来に目を向けてください。やがて待ちに待った改善がなされるでしょう!
私がBenさんの手紙について考えていたそのときに、Terryさんからそれに関する手紙を受け取ったことを偶然の一致というにはまだ充分ではないにしても、次にBenさん本人からの手紙が来たのです!
Marcさん
しばらく前に(rbu062の記事)、私はRealBasicを使ってOOPを学ぶことの難しさについてコメントしました。RBの操作を解説するチュートリアルの情報が不十分だという意見から、年老いた犬に新しい芸は仕込めないかもしれないとの意見までありました。私は"年老いた犬"として、誰かが婉曲して問題の核心を退けてしまうことに笑わずにいられません。実のところ、説明が不十分だと、より多くのトリックを盲目的に学ばねばなりません。気弱な者、強い信念や充分な時間をもてない者はただ学習を中止して、そのような人たちの貢献の可能性は葬りさられるのです。私の場合、忙しい日からやっと開放された余暇の時間で、新しい課題に取り組んでいるのです。
話を要点に戻しましょう。前回、私が述べたプログラム―受注/納品書のプログラムは、フォームの印刷を除いて(初めて)完成しました。4ページのプログラムは、キー入力(プルダウン・メニュー)と次のページを選択するボタンの両方を持つNetscapeのような戻る/進むキーを含むメニュー・ページを含んでいます。
名前を持つ2つのファイルは、入力/保存/取り消し(請求書と送付先の)ができます。全てのリンクが記憶されるので、元のアドレスからの保存/取り消しができます。注文フォームのページは、スプレッドシートのように機能するリスト・ボックスです。価格とともに注文/請求される項目のファイルが読み込まれます。数量が選択(数値だけ)でき、拡張部分とページの集計は金額表示されます。"ゼロ・キー"で数量を消去して、その他の注文を処理できます。
集計ページは、印刷されたページのように完全にフォーマットされています。会社名と住所のロゴ・ボックス(全てテキスト)、自動入力される日付ボックス、02-324.567のように年号と通年した日付と3桁で表したその日の時間で表される状番号があります。私は連番システムを作りたかったのですが、番号を覚えたくないし、整数の連番システムも好きではないので、この方法で送り状番号を付けました―これはただ私の好みです。集計ページでは、税率と発送/手数料の入力が可能です。全ての数値は右揃えに整えられています―これで算定処理をしやすくなっています。属性ウィンドウでの行端揃え機能はRB4.0.2では機能しません。
残りの仕事は、集計ページを用紙に印刷することです。私はまだこの機能の情報を探していて、その実装に取り掛かってもいません。完全に分断された細切れの情報が散乱しているだけで、複数ページをプリンターに出力する良い例が見つかりません。すぐに動作するやり方は、Appleの"take a picture"コマンドのOA-4を使うことです。それで画像はすぐに印刷されます。その方法は荒っぽいですが、うまく機能します。おそらくこれを自動で行い、RB内部の複雑な処理をスキップするRBスクリプトやApplescriptを書く簡単な方法があるでしょう。
私は専門家がどのようにこのプログラムの目的を成し遂げるのか興味があります。私はグローバル項目を一元管理する必要があることは知っています。このプログラムのある部分は動作して、他の部分が動作しないのか、私は依然として理解できません。
多くの改善すべき点がありますが、プログラムは使えるようになってきています。あなたが検討できるようコードを添付します。このプログラムは、全てのプログラムの骨子をなしていますので、これがうまく行けば別の4つか5つのプログラムがすぐに出荷されるでしょう。
それでは
Ben Gravely
Benさん、素晴らしいですね!最新情報をありがとうございました。あなたのプロジェクトが発展したことを聞いてうれしく思いますが、私は残りの仕事をお手伝いできればと思います。ここで提案ですが、"改造"コラムというのはどうでしょうか?
これは、グラフィック・デザインの分野(私の前歴)では常に行われています。デザイナーは、粗悪なデザインのニュースレターを取り上げ、華やかに見えるようデザインし直し、変更前後の記事を公開して、その変更の理由を説明します。私がグラフィック・デザインを学び始めたときに、このコラムは私のお気に入りでした。私は実用的な見本として、そこから多くのことを学びました。
他にも、これに興味のある人がいれば、REALbasic Universityのレギュラーパートで"メークオーバー"コラムができると思います。できの悪いソースコードを私に送ってください!
イベント駆動プログラミングを視野にいれて、"OOP University"を開始します。
REALbasic Developerの12月/1月号が、12月に販売されました。ここでその内容を簡単に紹介します:

10月に新しく定期購読された人は、月末に第2刊が郵送されます。(現在の購読者は、10月中にRBDが配達されます。)
RBDのどの号でも、バックナンバー注文フォームを通じて注文することができます。
今週はお便りはありません。
RBU-Jの通知サービス!コラムが発表されるたびに日本語版REALbasic Universityのお知らせの emailがあなたに届きます。登録・削除は ここ から。
INDEXに戻る