基本
- 目標,すなわちどのようにアウトプットするのかを,認識します.
- インプットand/orコンテキストを把握します.
- アウトプットに近い情報から作ります.
- 導入部を作ります.そして中間は順不同で作り,導入からアウトプットまでを,とりあえずつなげてみます.
- 通しで確認します.その結果をもとに,全体や細部を変更します.
- 目標に合っているか,通しで確認します.さらに全体や細部を調整します.
- 自分が納得できる状態に至るか,時間が来たら,作業終了です.
応用例1: プレゼン
- 発表に関する情報を確認します.具体的には,発表する場所,年月日,予定開始時刻,持ち時間です.複数人が発表するなら,自分が何番目なのか,他にどんな人が発表するかも押さえておきたいものです.
- 聞き手を想定します.自分の発表で,何を知ってもらいたいかを決めます.さらに,自分の発表を始める前に,聞き手が何を知っていて何を知っていないかを洗い出します.
- PowerPointを開きます.「アウトライン」に切り替え,(全体の)タイトルと,各スライドのタイトルを並べます.「何を知ってもらいたいか」を意識し,タイトルの並びや,一つ一つの日本語表現をチェックします.
- 各スライドに,話すための情報を乗せていきます.使えそうな素材を調査し,図・写真・表などを入れます*1.
- 全体ができたところで,通しでしゃべってみます.話しにくいところ,矛盾する箇所,重複する内容などが見つかれば,修正します.
- 改めて「聞き手が何を知っている/いないか」「聞き手に何を知ってもらいたいか」「持ち時間」を確認します.その観点で,不要な説明・図・写真・表を取り除きます.逆に,必要と感じたらスライドを追加して,情報を増やします.
- 通しでしゃべってみます.その際,スライド単位で時間を計ります*2.他と比べて時間の長いスライドは,スライドの内容and/or話すことを減らすか,スライドを分割します.修正したスライドだけでしゃべってみて,時間を計ります.
- リハーサルをします.実際の発表と同じPC,同じプレゼンマウスを使用します.ここでは通しの時間を計ります.しゃべったあとで,要修正箇所を紙に書き出し,修正します.
- 質問対策を考えます*3.
- 前日の夜はぐっすりと眠り,本番へ!
応用例2: プログラミング
自由にプログラムを作るというよりは,授業など,かなりの制約のもとで書くことを想定し,手順を並べてみます.言語はCです.
- 課題文をよく読みます.テキストエディタを開いて,課題文*4全文をコピー&ペーストします.1行開けて,課題文の中の重要な語句を抜き出します(語句ごとに,改行します).
- 出力フォーマットを把握します.複数行からなる少々複雑なものは,やはりダウンロードして,単一のファイル(例えばoutput1.txtという名前に)としておきます.
- 入力方式を理解します.まず,どのようにして入力を獲得するか*5を知り,それに基づいて,入力例and/or実行コマンド例を書いたファイルを作ります.
- コーディングに取りかかります.まずは出力用関数とmain関数を定義します.
- mainは,出力用関数の呼び出しとreturn 0;だけです.
- 出力用関数は,printfまたはfprintfで並べて,先ほどの出力ファイルの内容をアウトプットするだけとします.
- ソースファイルの先頭に,ファイル名・機能(目的)・作成者情報などをコメントとして書きます.
- コンパイル・実行して,期待通りの出力になることを確認します.
- 入力用関数(入力を獲得するための関数)を定義します.そしてそれを,main関数から呼び出します*6.さしあたり,入力を受け取ったことが分かるような出力を書いておきます.コンパイル・実行して,入力に応じて期待通りの値を取得していることを確認します.
- 「課題文の中の重要な語句」を見直します.未知語は,書籍やWebで調査します.コーディングにおいてどのように取り入れればよいかを考え,実際にコードにします.ここでは,一つ以上の関数を新たに定義することになります.
- 関数をつなぎ合わせて(入力用・出力用関数の修正もしながら),「とりあえず動くプログラム」を完成させます.
- 動かしてみます.
- ファイルを通して眺めます.コードが汚ければ,整理(リファクタリング)します*7.
- ファイルを通しで見直します.
- 呼び出しているライブラリ関数を一つ一つ点検し,課題で「使用してはならない」と書かれていれば,別のに変更します.対応するヘッダファイルをインクルードしていなかったら,します.
- 課題で「〜を使用せよ」と書かれているのに使用していなければ,どこで使用すればよいかを検討してから,コードにします.
- 再帰呼び出しや,静的変数を使用しているなら,その妥当性を確認します.それでもなお必要と判断したら,関数のコメントにそのことを書いておきます.
- main関数が複雑になっていたら,「入力」「処理」「出力」の3つになるよう,呼び出し方(合わせて関数の定義)を再構成します.
- 再度いくつか実行し,課題文の中にある入力例に対して,出力例の通りに出力すること,また少し入力を変えてみて,期待する出力になることを,確認します.
- 入出力の仕様,コードの内容の両面で,これ以上改善のしようがないとなれば,提出します.
*1:Web上の情報を入れるときは,URLを,出典としてスライド上に書くか,(PowerPoint内の)ノートに記しておきます.
*2:zjsがおすすめです.ただし,PowerPointとzjsの両方を,1台のPCで操作するのは難しいので,2台使うか,スライドを6upカラーで印刷して見て話し,zjsを操作するといいでしょう.…主客転倒だなあ.
*3:発表のみで,質問の時間がない場合でも,考える時間をとりたいものです.「何は話さないか」が確認できるからです.
*4:Web上にあるものとします.
*5:標準入力=キーボードから/コマンドラインで/ファイルからの3通りが,基本でしょう.
*6:出力関数の呼び出しは,コメントにしておきます.
*7:一つ修正するたびに,コンパイル・実行をしていきたいものです.
*8:一つの関数が,複数の箇所から呼び出されるのは,特に問題ありません.
*9:仮引数と同じでかまいません.というか,関数定義のコードをコピー&ペーストして,ペースト先の行末にセミコロンを置くだけで,関数プロトタイプとなります.関数定義における「{」は,関数定義行に書くのではなく,その直後に独立した行として書くほうが,いいですね.強制はしませんが.