vieweditattachhistorytopchangessearchhelp

開発者用 UI もろもろ

numerator:denominator:jinro:jinro2: なんて長いメッセージ名なんぞつけたらコーディングのときタイプが大変だろゴルァ…と思いませんでしたか? たとえば、nume:deno:jin:jin2: にしたって通じるんだからいいじゃん…とか。--sumim - 2002-12-05, 15:23:30

結論から申し上げると後者は推奨されません。ちなみにメソッド定義で用いた引数を受け渡すための偽変数名がゆがめられているのは、同名のインスタンス変数とコンフリクトしないようにするため(メソッド中ではインスタンス変数と同名の一時変数や偽変数は宣言/使用することができません)で省略が目的ではありません。--sumim - 2002-12-05, 15:28:44

>長いメッセージ名なんぞつけたらコーディングのときタイプが大変だろ
あはは(汗)考えても見なかったです.コーディングの時は一回書く(または定義を参照)した後はコピペですから.タイピングが大変とか,ミスタイプとか考えてもみませんでした(汗)むしろ,メッセージ名にしろ,変数名にしろ,「ちゃんと書いてあれば一目で判るから,いらんことで悩まなくてよろしい」派の人(他の開発環境でも)なので.--人狼 - 2002-12-05, 15:36:29
>偽変数名がゆがめられているのは、同名のインスタンス変数とコンフリクトしないようにするため
了解しました.それでもnumeratorの偽変数がnumeIntegerと言うのは「分子でね,整数だよ」と判りやすくて感心しておりまする.--人狼 - 2002-12-05, 15:39:01

あはは(汗)考えても見なかったです.
それでは話が進まないので(^_^;)、そう思った人がいるとしませう(笑)。でも安心(ぉぃ!。最初の何文字か、たとえば、numera くらいまで入力して cmd-q をタイプするとフルでメッセージセレクタが表示されます。いっぱつで表示されなくても、繰り返しタイプすることで呼び出すことができるでしょう。ここで注意していただきたいのは、出てくるメッセージセレクタは、単純なスペルのパターンマッチングで呼び出されているだけなので文脈、つまり、それが送られるはずレシーバがたとえ明示的にされていたとしても、それには左右されません。--sumim
- 2002-12-05, 16:25:31

cmd-q とペアで覚えて用いたいのが、cma-A(cmd-shift-a)です。これは、cmd-q で呼び出したメッセージセレクタに引数を挿入するのに役立つ特殊な tab キーのような働きをします。cmd-q でメッセージセレクタ呼び出し直後は、最初の引数挿入欄にキャレットがあるので、そのまま引数を入力。その後、cmd-A をタイプすると、次の引数入力欄にキャレットが移動する…というふうに使います。--sumim - 2002-12-05, 16:27:52

cmd-q は、どんなスペルで始まるかを正確に記憶していないと使えませんが、たしかこんなフレーズを含んだメッセージだったなぁ…との記憶をたどって、そのメソッドを持つクラスを確認したり、ブラウズしてソースを見てみたいときは、気になるフレーズを選択して、cmd-W をタイプします。メソッドファインダが起動して、指定したフレーズを含むキーワードセレクタ(とそれに準ずるもの)を列挙。クリックして定義されているクラスを確認したり、ブラウザを改めて開くことも可能です。--sumim - 2002-12-05, 16:31:12

逆にソースコードを鮮烈に覚えていて、もしくは、メッセージを表示するタイプのメソッドで、そのなかで文字列として特徴的なフレーズを含むことが分かっているなら、そのフレーズをタイプして選択し、cmd-E とすることで該当するメソッドを一覧することが可能です。--sumim - 2002-12-05, 16:34:20

キーボードショートカットではありませんが、テスト的に設けた特定のメッセージカテゴリ(ここでいうなら 'squab testing' のようなもの)に含まれるメソッドを列挙することも、
Smalltalk browseAllMethodsInCategory: 'squab testing'
を do-it することで可能です。--sumim
- 2002-12-05, 16:36:07

>それでは話が進まない
すみません(汗)主観を述べるだけで話しの流れを考慮してませんでした(大汗)一通り試してみました.cmd-q,cmd-Aは便利ですね.今どきのIDEは頼みもしないのに(笑)レシーバ(に相当するもの)に合わせて山ほど候補を表示してくれるのですが,たいがいは,違うところで選択してしまい,かえって手間が増えてしまいます.そう言う意味ではIntentionallyに呼び出すこちらの方が使い勝手は良いです.cmd-q,cmd-A共に,行き過ぎた時に戻るキーがあれば便利ですね.その点,cmd-Wはリスト形式なので更に使い勝手が良いです.--人狼 - 2002-12-05, 16:39:55

すでに愛用しておられる browse-it にもいろいろなバリエーションがあります。browse-it(cmd-b)は元来、クラス名に対してのみ用いられるべきものでしたが、機能が拡張され、メッセージセレクタを選択して(引数と余計なスペースは除いておく必要があります)brwose-it することでそのメッセージセレクタを持つメソッドを一覧できるようにもなっています。本来ならこれは、implementors of it と呼ぶべき機能で、cmd-m(iMplementers...)に割り振られています。browse-it と違いはないので、browse-it にその機能があると知った後は、あえてこのキーコンビネーションを覚える必要もないとは思いますが、念のため。--sumim - 2002-12-05, 16:41:18

>文字列として特徴的なフレーズを含むことが分かっている
う〜ん,これは自分でコーディングしている範囲を対象にする時には便利そうですね.--人狼 - 2002-12-05, 16:43:42
Smalltalk browseAllMethodsInCategory: 'squab testing'
これは,私たちが使っているところの環境であるSmalltalkであっても,オブジェクトして使えると言う,とんでもない事をさらっと書いてますね(大汗)--人狼 - 2002-12-05, 16:44:45

implementors of it と併せて覚えておきたいのが senders of it(cmd-n、seNder...)です。選択したメッセージセレクタをその記述中で用いているメソッドを列挙します。注目しているメソッドが、どんなシチュエーションで起動されるのかを把握しておきたいときに便利です。--sumim - 2002-12-05, 16:45:10

>そのメッセージセレクタを持つメソッドを一覧できるようにもなって
いや,このウィンドウでbrowse-itだよ,と言われても少し違和感がありますね(汗)cmd-mの方が僕にはしっくるくるかも知れません(偏屈ですかね(笑))--人狼 - 2002-12-05, 16:47:08
>senders of it
numerator:denominator:にcmd-nをするとnumerator:だけでもヒットしてしまいますね.--人狼 - 2002-12-05, 16:49:08

環境であるSmalltalkであっても,オブジェクトして使える
こいつの正体はただのグローバル変数に束縛されているシステム辞書というインスタンスなのですが、例に挙げたものとか、おっしゃってもおられるとおりに環境自体と解釈してもおかしくないメッセージが多数用意されています。余談で「お約束」でもある話ですが、Smalltalk _ nil とこの変数に nil を束縛させ換えるとシステムは死ぬのも、そんなニュアンスで捉えるとちょっと興味深いものがありますね。--sumim
- 2002-12-05, 16:49:21

numerator:denominator:にcmd-nをするとnumerator:だけでもヒットしてしまいますね.
それは具体的にはどういうことでしょうか?--sumim
- 2002-12-05, 16:52:42

>ただのグローバル変数に束縛されているシステム辞書というインスタンス
ありゃ,そうでしたか.それは失礼を.でも,例示頂いた物なんかは,環境そのものっぽいですね.他にもそう言うメッセージがあるのですか.気分の問題なんでしょうが,システム辞書にnilを束縛させたら,無かった事にして辞書を再編成して欲しいかも.これでシステムが死ぬと言うのは,どういう思想なのか興味深いですね.--人狼 - 2002-12-05, 16:54:43
>具体的にはどういうことでしょうか?
すみません,間違いでした.--人狼 - 2002-12-05, 16:56:30

無かった事にして辞書を再編成して欲しい
実は、システム辞書はその名の通り、オブジェクトの辞書で、具体的にはクラスをその要素として束縛しています。nil としてしまうことは、クラスの束縛を解いてしまうので、クラスは存在できなくなる(オブジェクトは他者からの束縛があってこそ存在できる原則)…ので、辞書の再編成どころか、辞書としての存在もできない、という流れでいいと思います。かなり話を単純化していますが(笑)。--sumim
- 2002-12-05, 17:00:02

>クラスの束縛を解いてしまうので、クラスは存在できなくなる
なるほど.単純化して頂かないと理解出来ませんので(汗)今はこの程度で.(今は…と書くと「いつかは」って突っ込まれるかな(笑))--人狼 - 2002-12-05, 17:07:21

いや、そんなたいそうな話ではなくて「なにも束縛しているのはシステム辞書ばかりではなかろうに…というつっこみも可能…」というだけの話です。では、元に戻して。開発者用というわけではありませんが、do-it や print-it 、クラスやメソッドといった事柄に通じるようになってきてはじめて意味を持つのが、cmd-6 のカラー化以外のオプションです。Do itPrint it はその項目名が示すようにメッセージ式を選択してこのオプションを指定することにより、クリックするだけでメッセージ式を評価、Print it ならその結果を挿入する…という機能を文字列に付加します。Link to ... of class はクラスを(最後の Link to method はクラス名にメッセージセレクタを併記したとき)に、それぞれが示す情報を表示する機能を付加します。Edit hidden info はその機能の付加されたテキストの内部表現を露呈させ、それを改めて編集すること可能にし、Copy hidden info はそこで <> で括られる“実行部分”のみをコピー(して別の場所にペーストして再利用)するための機能を提供します。--sumim - 2002-12-05, 17:42:01

開発用ショートカットに戻ると、そのものズバリなのが、よく利用する ifTrue: および ifFalse: を挿入するための cmd-T と cmd-F 。こんなもののためにキーを2つも割り振っちゃって良いの…?とも思いますが、たしかにこの二つのフレーズはよく使います。すでに、触れたかも知れませんが、cmd-V は今、システムに手を入れているとして登録されたユーザーのイニシャルと、日時を挿入する機能を有します。メソッドに加えた修正に関するコメントなどに追記しておくと親切かと思います。--sumim - 2002-12-05, 17:46:26

>「なにも束縛しているのはシステム辞書ばかりではなかろうに…というつっこみも可能…」
むぅ,まだつっこめません.修業がたりないです(苦笑)Do itPrint itはOKですが,Link to ... of classEdit hidden infoCopy hidden infoは,今一つビンと来ないです.う〜む.--人狼 - 2002-12-05, 17:49:43
>cmd-T と cmd-F
これはよく使うのであれば,別々の方が親切ですね.(真偽判定なので,本当によく使うと思います)一気にifTrue:ifFlase:と出てきて,カーソルを戻してcmd-Aと言うもの面倒ですし.cmd-Vは試してみました.コメントに追記するのが楽になりますね.--人狼 - 2002-12-05, 17:51:57

UI がらみということで、ブラウザの中程にあるボタンも紹介しておきます。browse は、どんな形態のブラウザからも、選択している項目に対してフルブラウザを表示します。senders は先ほどの senders of it のもうすこし賢いバージョンで、表示中のメソッドで用いられているメッセージセレクタのいずれの senders も呼び出すことができます。implementors もしかりです。versions はそのメソッドのバージョン履歴を呼び出します。バージョンブラウザでは、各バージョンにどのような変更が加えられたかを、取消線(削除)と赤字(追加)で表現しようと努力します。ただ、努力しているだけなのでそれが実を結んでいるかどうかは別です(笑)。適当なバージョンを選んで、revert ボタンを押すことでそのバージョンに戻すことができます。いろいろいじくってテストしたあと、結局、元からシステムにあったバージョンに戻すという場合は remove from changes ボタンを押しておくと、システム全体の変更履歴に跡が残りません(これについては後述)。inheritance はオーバーライドしているメソッドを、順に列挙して一覧できるようにしてくれます。hierarchy は、クラス階層ブラウザを開きます。inst vars はすでに使いましたね。ここでは代入だけでなく、参照しているメソッドをすべて列挙します。class vars もしかりです。source と書かれているところのオプションは今はいじらないほうがよいでしょう。--sumim - 2002-12-05, 17:57:10

こんなところでお時間でしょうか。--sumim - 2002-12-05, 17:57:42

えぇ.すみません,残業しないやつで(汗)--人狼 - 2002-12-05, 17:59:18

ご紹介頂いたブラウザのボタンを色々と試してみました.(remove from changesは後述との事ですので触れてませんが).いやぁ多機能ですね.こりゃ便利です.--人狼 - 2002-12-06, 08:55:35

では、その後述について。Squeak では、おおきくわけて3つの方法で環境を(場合によっては切り取って)保存することができます。2つはすでに触れた、仮想イメージまるごと保存とプロジェクトの保存です。プロジェクトの保存については、デスクトップ上のモーフもインスタンスの状態で書き出し、読み込み先の環境でその再現に努める。努めるだけなので、かならずしも再現が成功するとは限らないリスク付き、扱えるオブジェクトがモーフだけという制限付きだが、オブジェクトを保存できるという意味では画期的というというようなことはお伝えできていると思います。さいごのひとつは、定義つまりソースコードを吐きだす…という方法です。たとえば、MyFraction をブラウザで開き、クラスペインの黄ボタンメニューから fileOut(私好みの書式に従うなら file-out)を選択すると、MyFraction.st というテキストファイルがカレントディレクトリに作られます。なお、このとき、MyFraction class の定義も同時に出力されます。このファイルを FileList などを用いて、file-in することで、別の環境にも MyFraction を再現することができます。--sumim - 2002-12-06, 11:37:53

>仮想イメージまるごと保存とプロジェクトの保存
これは大丈夫です.プロジェクトの保存はリスク付きなのですね.理解が足りていませんでした.モーフだけと言う制限はOKです.
>定義つまりソースコードを吐きだす
実際に出力してみました.自分で作ったクラスを誰かに配付するには,この方法を使うのですね.--人狼 - 2002-12-06, 11:46:36

クラス定義の file-out は、今のクラスについてだけでなく、ブラウザの各ペイン(クラスカテゴリ、クラス、メッセージカテゴリ、メッセージ)のおのおのについてそれに属する(もしくはメッセージリストペインの場合は選択したメソッドのみ)の .st での出力が可能です。--sumim - 2002-12-06, 11:51:15

>ブラウザの各ペインのおのおのについてそれに属する
え?どれどれ.おぉ,すごいですね.素晴らしい.--人狼 - 2002-12-06, 11:55:06

このように出力の範囲を自由に設定できることは、これはこれで便利なのですがこれだけではちょっと足りません。例えば、今までの作業の流れであったように、Fraction や Object などの既存のオブジェクトにピンポイントで手を加えることも十分想定しうるからです。ちょっと話がはずれますが、既存のクラスに対して手を加えてもいいものかどうか…ということについては、いろいろ考え方があります。総じて、他人に迷惑がかからないなら自分の幸せを追求して(既存のクラスにどんどん手を入れる)のは差し支えない、他人に迷惑が及んだり、賛同を得られない可能性があるものについては、1)ごり押しする、2)辛抱強く利を解いて説得する、ことでそのまま通すか、スキルとセンスに合わせて構造的・機能的・理論的な現状復帰・現状維持が可能なような実装に焼き直して、ユーザーに選択の余地を残す…というパターンが多いようです。まあ、社会生活の営みと同じですわな(笑)<基本がなってない私には自分で言っていて耳がイタイ(^_^;)。--sumim - 2002-12-06, 12:02:19

さて、話を戻して、こうして分散して手を加えたものを管理するのはとても大変です。なので、Smalltalk ではシステムが実は裏でやってくれています(笑)。それがチェンジおよびチェンジセットというものです。--sumim - 2002-12-06, 12:08:18

まずチェンジ(changes)ですが、システムは普段、自らに加えられた変更を逐一、.changes ファイルへ書き出してます。なお、これはいってみれば“垂れ流し”なので、当然 .changes ファイルは肥大化していく運命にあります。整理する機能もありますので、極端に巨大化したら考えたほうがよいでしょう。垂れ流し故のメリットもあります。たとえば、システムを強制終了もしくは異常終了した場合でも、仮想イメージが正常に保存されたかどうかに関わらず、チェンジは最後の瞬間までの作業を記録してくれています。そのため、チェンジのデータベースを当たって、必要な操作を再現してゆけば(具体的には file-in する)保存せずに終了した直前の状態に仮想イメージを近づけることが可能です。--sumim - 2002-12-06, 12:16:19

具体的には、デスクトップメニュー → changes... → recently logged changes... を選択すると終了(QUIT)や、save(SNAPSHOT)といった、チェンジの考える区切りごとにまとめられたリストが呈示されるので、自分が復活させたい操作を行なった時期を選んでブラウズします。このブラウザのリスト部分は複数選択が可能になっているので、不要なものを排除(選択しないように)しながら、注意深く操作することで保存し損ねた環境の復活が可能になる…という流れです。まあ、非常に面倒な作業なのでめったにやりたくはありませんが、必要になることもあるので方法は知っておきたいものです。--sumim - 2002-12-06, 12:26:56

チェンジは緊急時、受け身的なものですが、この情報をより積極的、能動的に活用しようというのがチェンジセット(ChangeSet)で、ここで本題に戻ります。プロジェクトは仮想のデスクトップを提供するという機能の他に、ひとつのチェンジセットを持ってそこにクラスの定義変更を自動的に記録してゆくという働きもこなしています。プロジェクトを切り換えると定義変更の記録先であるチェンジセットも切り替わります。なので、同じプロジェクトでひとつのテーマにしぼって作業をすれば、そのテーマに関わるシステムの改変はすべて同じチェンジセットに記録される…というからくりです。チェンジセットの内容は Tools の奧に隠れている Change Set というウインドウで確認することができます。ペインが一見、複雑そうですが、最上段右側以下はただのクラスブラウザです。最上段左側ペインは、既存のチェンジセットの(プロジェクトと対応しているものと、そうでない宙ぶらりんのものも含めた)リストになっています。チェンジセットウインドウを開いた直後に選択されているのが、今のプロジェクトに対応したチェンジセットです。実はプロジェクトの名前はチェンジセットの名前に準じています。--sumim - 2002-12-06, 12:37:52

>社会生活の営みと同じですわな
ちゅー事は,私は既存のクラスを触らない方が良さそうです(苦笑)--人狼 - 2002-12-06, 12:42:35
>チェンジの考える区切りごとにまとめられたリストが呈示される
なるほど.そう言う用途に使えるのですね>チェンジ.かなり細かく取られていますね.驚きです.これで,誤って復活させた場合,直前に戻れるのでしょうか?復活も一つの変更なので,チェンジに記録されてるかな?--人狼 - 2002-12-06, 12:48:52
>積極的、能動的に活用しようというのがチェンジセット
チェンジセットはプロジェクト毎なのですね.きめ細かいですね.
>実はプロジェクトの名前はチェンジセットの名前に準じて
と,言う事はプロジェクトの名前を変更しているつもりで,実はチェンジセットの名前を変更していた,と言う事なのでしょうか?--人狼 - 2002-12-06, 12:50:35

復活も一つの変更なので,チェンジに記録されてるかな?
それもそうですが、それ以前に保存しないで再起動…ってのはなしですか(^_^;)。--sumim
- 2002-12-06, 12:53:14

>保存しないで再起動
大正解です(大汗)いや,その通り.--人狼 - 2002-12-06, 12:54:26

実はチェンジセットの名前を変更していた,と言う事
え〜と。事実関係はコードを見てみないと分からないのですが(爆、たぶんそういうことだと思います(ちょーいーかげんモード)。--sumim
- 2002-12-06, 12:55:56

いまさらなんですが(^_^;)、さいごの「--人狼」の後に、ひとつ改行を入れて行を改めてから[この内容を挿入]ボタンを押していただけるようお願いしてもいいですか?--sumim - 2002-12-06, 12:58:12

>たぶんそういうことだと思います
なんだか,そんな気がします(笑)
>ちょーいーかげんモード
いや,よろしいのでは(汗)コードを見て厳密に定義しなくてはならないようなものではなさそうですし.--人狼 - 2002-12-06, 12:58:37

了解しました>改行--人狼 - 2002-12-06, 12:59:40

ああ、これでだいぶラクができます(^_^;)。--sumim - 2002-12-06, 13:01:49

突然ですが,この週末は新田原へ行っております.月曜日に帰宅しますので,それまではアクセス出来ませんのでご了承ください.--人狼 - 2002-12-06, 13:01:36


>これでだいぶラクができます
すみませんでした.--人狼 - 2002-12-06, 13:03:09

了解です。>新田原 ときに新田原ってどこですか?--sumim - 2002-12-06, 13:03:14

>ときに新田原ってどこ
宮崎県児湯郡です.宮崎市のちょっと北.航空J隊の吉があります.--人狼 - 2002-12-06, 13:04:13

>航空J隊の吉が
おめでたいな>自分--人狼 - 2002-12-06, 13:04:49

そっち関係でしたか(^_^;)。--sumim - 2002-12-06, 13:05:18

はい,VX9000抱えて行って参ります(^^;--人狼 - 2002-12-06, 13:05:54

やはし…(笑)。

チェンジセットに戻りましょうか…(^_^;)。と、申しましてもチェンジセットリストペインからも file-out は可能…でおしまいなのですが(爆--sumim
- 2002-12-06, 13:08:33

これで複数のクラスにまたがった定義変更も一括で出力可能なわけです。--sumim - 2002-12-06, 13:09:15

>チェンジセットリストペインからもfile-outは可能
はい,確認しました.一番下にあるコードのペイン以外ではfile-out可能でした.--人狼 - 2002-12-06, 13:10:25

>複数のクラスにまたがった定義変更も一括で出力可能
にゃるほど.一気にがっ!と.好みです(笑)--人狼 - 2002-12-06, 13:11:24

ただこのチェンジセット。運用には若干の注意が必要です。クラスやメソッドなどの削除や名称変更も記録されているので、まっさらな仮想イメージに、ここで file-out した.cs ファイルを file-in しようとすると、存在しないクラスやメソッドを削除したり名前を変更しようとしてノーティファイアが出てうまく読み込めないことがあるからです。そうした情報を排除する機能もありますが、いずれにせよ、チェンジセットは普段から気付いたときにメンテナンスしておく必要があるものであるとの認識が大切です。--sumim - 2002-12-06, 13:17:19

話をずっと戻して、くだんの remove form changes ボタンやそれを用いる理由はここにあります。テスト目的で手を加えたメソッドもチェンジセットに登録されますが、元のバージョンに戻した時点で、それはチェンジセット情報としては無用のものになります。そこで、オリジナルバージョンに戻す作業と一緒に、チェンジセットから削除する習慣をつけてけば、後のチェンジセット情報のメンテナンスのときに余計な仕事が増えなくてよい…と、そういう話でした。--sumim - 2002-12-06, 13:19:50

>file-in しようとすると、存在しないクラスやメソッドを削除したり名前を変更しようとして
むむ.それは落とし穴です.気付きませんでした.いや,確かにそうですね.
>チェンジセットは普段から気付いたときにメンテナンス
心がけます.--人狼 - 2002-12-06, 13:22:18

>オリジナルバージョンに戻す作業と一緒に、チェンジセットから削除する
それは,例えばですね.Objectのカテゴリからsquab testingを削除した後に remove form changesをすると,Objectsquab testingについては,痕跡も含めて無かった事になるのでしょうか?(チェンジには残る…としても)--人狼 - 2002-12-06, 13:24:24

ただ、オリジナルに戻すからと言って、自分の新規に記述したメソッドについてはこのボタンを押してはいけません(そんなことはしない?(笑))。つい押してしまったときは、コードペインで改行後 delete などとして無意味な変更を加えた後、accept して、チェンジセットへ再登録しておきましょう(笑)。--sumim - 2002-12-06, 13:25:05

>自分の新規に記述したメソッドについてはこのボタンを押してはいけません
え?あれ?(大汗)ここの理由が判ってないかも知れません.--人狼 - 2002-12-06, 13:31:16

無かった事になるのでしょうか?
やってみましたが、そうみたいですね。想定しておられる操作の後、チェンジセットを file-out して、それを Mac のテキストエディタか、FileList で(←当然、こっちっすよね(笑))開いて、Object についての言及があるかどうか検索をかけてみればわかると思います。--sumim
- 2002-12-06, 13:33:00

理由が判ってない
当たり前すぎてお考えが及ばないだけかと。つまりチェンジセットには、既存定義の修正だけでなく新規に追加した定義(クラスやメソッド)も記録されるので、そうして追加された自作のクラスやメソッドでも、remove from changes すればチェンジセットの記録から簡単に消えてしまうから気を付けてくださいね…というお話です。--sumim
- 2002-12-06, 13:36:46

>Object についての言及があるかどうか検索
やってみました.考えていた通りでした.いやいや,削除系は試すのが怖いです.(だから,保存しないで再起動すれば大丈夫だろ>自分)--人狼 - 2002-12-06, 13:44:46

>チェンジセットの記録から簡単に消えてしまうから気を付けてください
了解致しました.何か特別な制限でもあるのかと思ってしまいました(汗)--人狼 - 2002-12-06, 13:46:21

チェンジセットの編集には便利なツールがあります。その名もチェンジソーター(dual change sorter)。名前は大仰ですが、先のチェンジセット(simple change sorter)が2つ横に並んだような姿ってだけのことです。推測ですが、これが Font Mover、のちの Font/DA Mover の UI のヒントになったのではないかと(まあ、この手の UI は CUI ベースのころからあるので少々穿ちすぎ…かも知れません(^_^;))。右と左で別々のチェンジセットを選択して、項目をクラス、メソッドごとに移動したり複製することが可能です。複数のチェンジセットの内容をマージして、不要な方を削除してしまうこともできます。--sumim - 2002-12-06, 14:44:24

新しいチェンジセットを作成するのには、チェンジセットリストの黄ボタンメニューから new change set... を選びます。現在のプロジェクトに別のチェンジセットを管理させたいときは、そのチェンジセットを選んで make changes go to me を選びます。このとき、チェンジセットウインドウのタイトルは指定したチェンジセット名に変更が記録されることを示す内容に変わります。--sumim - 2002-12-06, 14:49:04

>その名もチェンジソーター
実はさきほどChange setと間違えてこれをデスクトップに出してしまい慌てました(汗)この手のUIは結構好きなので嬉しいです.Font/DA Moverとは懐かしい.--人狼 - 2002-12-06, 14:50:21

>チェンジセットウインドウのタイトルは指定したチェンジセット名に変更が記録されることを示す内容に変わり
かつ,NavigatorフラップでPREVすると,当然ですがプロジェクトの名称も変更されているのですね.ところで,そもそもチェンジセットはどこに記録されているのでしょう?--人狼 - 2002-12-06, 14:55:19

そもそもチェンジセットはどこに記録されているのでしょう?
ChangeSet のインスタンス…で答えになっていますか?(^_^;)--sumim
- 2002-12-06, 15:02:45

>答えになっていますか?
えぇ,疑問は一気に氷解です.にゃるほど.--人狼 - 2002-12-06, 15:03:28

差分・バージョン管理についてはもういくつか“技”があります。こうして提供された .cs や .st ファイルですが、file-in するときに、File-in to New することで新規チェンジセットを作成(これはどのプロジェクトにも属さない、いわゆる宙ぶらりんのやつです)してそこに読み込み時に生じる一時的な変更記録を(現在のチェンジセットを汚すことなしに)まとめてくれます。これはもう、使ってご存じでしたよね。さらに、FileList のファイルリストペインの黄ボタンメニューから browse code を選ぶとシステムブラウザライクなウインドウが表示され、システムブラウザ感覚でコードを文字通りブラウズできます。ただし、ここでは編集して accept することはできないので注意してください。選択したクラス、メッセージカテゴリ、メソッドを remove することで、file-in 時に無視することができます。ところで、file-in すると、既存のメソッドとまったく同じものでも、バージョン履歴に蓄積されてしまいます。そこで最上段のファイル名もしくは、クラスやメッセージカテゴリペインの黄ボタンメニューで remove existing を選び、既存のメソッドと同一のものをすべて無視することで、こうした無用のバージョン履歴蓄積を避けることが可能です。また、提供された新しいバージョンの .cs で、何が変更されたのかを明示的にするのにも役立ちます。なお、この状態で file-out することもできますが、この場合、オーサーイニシャルやタイムスタンプが消えてしまうのでこの方法は推奨できません。どうしても差分ファイルを作って file-out したいときは、いったん file into new changeset でいったん file-in して、そのチェンジセットを吐きだすと同じことができるのでそうするのがよいでしょう(でなければ、先の仕様を変更するか(爆))。マニアックな TIPS でした(^_^;)。--sumim - 2002-12-06, 15:20:08

>差分・バージョン管理についてはもういくつか“技”があります
ほぇぇ.色々な技がありますねぇ.一気には覚えられないなぁ(汗)このページ(一連のやり取り全て)を保存して,参照しながら操作していって,いつかは身に付けたいです.今回教えて頂いたTIPSは,これからかなり役立ちそうです.--人狼 - 2002-12-06, 15:24:18

最後にひとつ、プロジェクトのファイルへの保存ですが、このとき、チェンジセットが空でないとその内容を含めるかどうかを尋ねてきます。自作のモーフや既存のモーフでも自作のクラスやメソッドとの係わりを持たせている場合は、必ずプロジェクトファイルにチェンジセットも同梱する必要があります。ま、こんなところで。--sumim - 2002-12-06, 15:33:29

>チェンジセットが空でないとその内容を含めるかどうかを尋ねてきます
確認しました.
>必ずプロジェクトファイルにチェンジセットも同梱
なるほど.覚えておきます.--人狼 - 2002-12-06, 15:40:09

このページを編集 (32470 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 2431 times.