2012-01-01から1年間の記事一覧

静的解析と動的解析(1)

アプリの解析をする時の方法として、 2種類の解析方法があります。 静的解析と動的解析です。 静的解析は、アプリを動かさずに コードを解析することです。 これは、検索やgrepを使ったり メモを取ったりしながら、コードを読んでいって解析します。 なので…

wxWidgets移行中

しばらく更新が途絶えていましたが、 今まで、CLIで作っていたものを、wxWidgetsに完全移行中です。 なので、ちょっと時間がかかっています。 その理由としては、 VCランタイムが不要になる Linux版も作れる というところが大きいです。 gccでコンパイルして…

ver.0.65が公開されます

ver.0.65が公開されます。 http://www.vector.co.jp/soft/winnt/prog/se493923.html まだ、サーバーには反映されてないですが 近日中に反映されると思います。 どうぞ宜しくお願いします。 変更内容 Layoutの罫線を、│、┼、┤、など細い線に対応。 バグ改修 …

仕様とは何か?

今日は前回の続きです。 仕様とは何か? 要求仕様とは何か? 前回は、聞いてない要求仕様を 後から出されて、つらい思いをしましたが 要求仕様は、逆に武器にすることも出来ます。 例えば、身長が181cmの男性を紹介して 「やっぱり、もう少し高いほうがいい…

仕様とは何か?

今日は、仕様とは何か? について話してみたいと思います。 仕様とは何か? 要求仕様とは何か? それは、理想の男性のタイプと解きます。 とある女性から、好みのタイプを聞きました。 ・背が高くて、180cm以上 ・頭がいい という事です。 そこで、身長が181…

設計について

前回のスコープの続きになりますが スコープは、必要最低限で狭くします。 ただ極端にやり過ぎると、変数の定義位置が まばらになって、分かりづらくなったり 後々スコープを広げる変更が多くなったりします。 基本的には、狭くしていいと思いますが ある程…

設計について

変数つながりで、変数のスコープについて話してみたいと思います。 スコープとは、変数の使える範囲のことです。 関数の外で、ファイルの先頭などに定義された変数は、ファイル内のどこでも使えます。 関数の中で定義された変数は、関数の中だけで使えます。…

設計について

前回まで変数の初期化に関して話していたので それに関連して 変数Aというものがあって、それに関連する 変数A1、変数A2 があるとします。 ここで、初期化を行う時に 変数Aがキーとなっていて、 変数Aだけ初期化しておけば問題ない時に、 変数A1、変数A2も一…

設計について

今日は、変数の初期化位置について、 前回は触れなかった 関数Aを抜ける時に、初期化する場合ですが 今のところ、このケースが適している というものを、見たことがありません。 実際のソースは、見たことがありますが それが何故だったのか思い出せません。…

設計について

前回の変数の初期化位置の続きですが 初期化の目的が分かったところで、 元々の問題を考えてみましょう。 実は、答えは状況によって変わります。変数Bの更新契機が、関数Aにしかない場合は 関数Aの先頭で行うというので、問題ないと思います。 その初期化の…

設計について

今日は、設計についてですが 変数の初期化の位置について話してみたいと思います。 関数Aで使用する変数Bがあります。 この変数Bが、グローバル変数で この関数Aでだけ変更がある場合 初期化の位置としては、どこが適切でしょうか? ・関数Aを呼び出す直前 …

開発の流れについて(4)

今日は、また開発の流れについて、 別の流れを紹介します。 前回と逆の流れになります。 順番的には、 ・メインループから呼ばれる処理を一つづつ作成する ・メインループを作成する ・画面レイアウトを作成する 機能を一つづつ作成して、全て揃った後に画面…

開発の流れについて(3)

前回まで、実装と仕様書と単体テストの順番について 話していましたが、今回はどの部分から作るか? という順番について、話してみたいと思います。 順番的には、 ・画面レイアウトを作成する ・メインループを作成する ・メインループから呼ばれる処理を一…

ver.0.64が公開されます

ver.0.64が公開されます。 http://www.vector.co.jp/soft/winnt/prog/se493923.html まだ、サーバーには反映されてないですが 近日中に反映されると思います。 どうぞ宜しくお願いします。 変更内容 ConsoleウィンドウのテキストエリアのTAB文字数を4文字に…

開発の流れについて(2)

今回も開発の流れですが、 前回と違い、全体を先に書いてしまって 動かしながら作るパターンを考えてみました。 一通り書いてしまう 関数を定義する 引数、戻り値を決める 中身の処理を書く 仕様書を出力する 単体テストを出力する 単体テストをtry&errorで…

開発の流れについて(1)

今日は、開発の流れを書いてみたいと思います。 TextScriptで開発する時の流れです。 色々なパターンがあると思いますが、 今回は、一つづつパーツを作るパターンを説明したいと思います。 初めに、 ・関数の定義だけ作成する まずは、関数を分かっている分…

設計について(12)「else文」

今日は、ロジックで影響範囲を狭くする。 という話をします。 if文についてです。 早速、例を見てましょう。 if type == "ab" then -- 血液型ABの場合 end if type == "a" then -- 血液型Aの場合 end if type == "b" then -- 血液型Bの場合 end if type == "…

設計について(11)「べた書き」

今日は、べた書きについて説明したいと思います。 皆さんべた書きという言葉を、ご存知でしょうか? これは、マジックナンバーと似ていますが、 マジックナンバーが、数字だとすれば べた書きは、処理のことでしょうか 処理だけでなく、数字や変数も含まれる…

ドキュメント体系について(3)

今日は、またドキュメント体系の続きです。 これまで、階層とかレイヤーとか置き場所の話をしました。 置き場所が決まったら、次は各ドキュメントをつなぎます。 一つのドキュメントは、必ずどこかとつながっています。 どこにも関連しない独立したものとい…

ドキュメント体系について(2)

前回は、ドキュメント体系というものを説明しました。 それでは、どういう体系がいい体系でしょうか? まず階層が整理されているということは、 ドキュメントの種類ごとに、配置が決められている必要があります。 例えば、HTTP通信などのシーケンスに関して…

ドキュメント体系について(1)

ドキュメント体系について書いて見たいと思います。 設計ではなくドキュメントです。 まず、ドキュメントとはアプリの仕様というモヤモヤっとしたものを 何かしらの人に見える形に表したものです。 形の表し方は、色んなものがあります。 ○○仕様書といった、…

設計について(10)「条件式の最適化」

今日は、条件式の最適化についてです。 少し前に、条件式の省略について書きましたが、 それと似たような話です。 条件式が長くなった時に、最適化をすることがあります。 「if〜and〜or〜and」など見にくいものを、 trueで判定していたものをfalseにしたり…

チュートリアル(49)

今日は、ver.0.63で追加された「FileMove」について説明します。 これはファイルを移動もしくは、ファイルの名前を変える時に使います。 移動元のファイルが無い場合は、エラーで中断してしまいます。 移動先に既にファイルがある場合など、移動に失敗した場…

チュートリアル(48)

今日は、ver.0.63で追加された「GetType」について説明します。これは、変数の型を調べるものです。 アプリの変数の型が全て決まっていて、それが変わらないのであれば必要ありません。 色々と作っていくうえで、必要になることがあるかもしれないと思って追…

設計について(9)「関数の配置」

今日は、前回の続きで関数の配置についてです。 関数の配置は、関数をどこに置くかという話ですが 関数の目的が決まって、レイヤーも決まったら あとは、どういう風にグループ分けするのかという話だと思います。 このポイントとしては、その関数を他のアプ…

設計について(8)「関数のレイヤー」

今日は、前回の続きで関数の配置についてです。 前回は、関数は意味のある区切りにしましょう という話をしました。 関数が出来たら呼び出しを行いますが 呼び出しは、レイヤーを意識する必要があります。 例えば、AからBを呼び出して BからCを呼び出すと、 …

設計について(7)「関数の分け方」

今日は、関数の配置についてです。 関数の配置とは、いくつぐらいに関数を分けて どのように配置するか? という話です。 基本的には、共通して行われる処理を関数にして 効率良く使い回せるようにします。 しかし、効率だけを考えて最適化を行ってはいけま…

チュートリアル(47)

今日は、ver.0.63で追加された 単体テストの複数実行について説明します。 作成した関数の単体テストは、作成した時だけではなく 変更があった時や、他の関数を変更して影響がある時などに実施されると思います。 影響の確認を行うだけの時は、沢山作られた…

ver.0.63が公開されます

ver.0.63が公開されます。 http://www.vector.co.jp/soft/winnt/prog/se493923.html まだ、サーバーには反映されてないですが 近日中に反映されると思います。 どうぞ宜しくお願いします。 変更内容 PromptウィンドウのTAB文字数を4文字に変更。 Promptウィ…

設計について(6)「関数名」

今日は、関数名についてです。 これについても色々あると思いますが、 取り敢えずお勧めを書いておきます。 関数の目的が分かる名前にするというのが、 もちろん一番大切なことですが、その他で言うと、 先頭を小文字にして、あとは単語の区切りを大文字にし…