新ブログの更新状況

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HomeRecipe 0.2.2 公開

HomeRecipe 0.2.2 Mac ( Mac OS X 10.2 - )
HomeRecipe 0.2.2 Win ( Windows 2000/XP/Vista )
使用期限:2010年12月31日まで

HomeRecipe 0.2.2を公開します。

使用期限が切れて1週間ほど公開が遅れてしまい、申し訳ありませんでした。 残念ながら、今回も使用期限を延長しただけです。 写真管理ソフトのPhotoMaster 3の開発が長引いていて、なかなかHomeRecipeの方に手が回らない状態です。 ただ、これまでは、一点集中でやってきましたが、これからは、適度に分散させながら、平行して作業していくことにします。 今は、コンセプトを練り直していて、理想となるイメージを想い描いているところです。 開発する意欲は十分にありますので、熟成されていくのを楽しみにお待ちください。

今後とも、HomeRecipeを、よろしくお願いします。

スポンサーサイト

HomeRecipe 0.2.1 公開

HomeRecipe 0.2.1 Mac ( Mac OS X 10.2 - )
HomeRecipe 0.2.1 Win ( Windows 2000/XP/Vista )
使用期限:2009年12月31日まで

HomeRecipe 0.2.1を公開します。

前回のバージョンから2年近く間が空いてしまい、申し訳ありませんでした。 その直後から、iKeyboard 3の開発に入り、基礎から覚えるタイピングが発売され、その後は、PhotoMaster 3の開発へと移ってしまったので、使用期限が切れたまま、放ったらかしになっていました。 今回は、使用期限を今年末まで延長し、最新の開発環境でビルドし直しただけのバージョンですが、使用期限が切れるまでには、本格的に開発を再開する予定です。

嬉しかったのは、この2年の間に、料理レシピ管理ソフトを作るぞ!という、HomeRecipeの決意表明をしたブログ記事に、24もの拍手を頂いたことです。 「料理レシピ管理ソフト」というキーワードで検索してこられた方も、たくさんいます。 これらのことは、HomeRecipeのコンセプトに賛同してくれる人達がいること、しっかりとした料理レシピ管理ソフトが求められていること、ということでもあります。 今は、不景気の影響で家食が流行っているようですが、これを機に、家庭料理の良さが広まってくれたら楽しいだろうな、と思います。

残念ながら、現在のバージョンは、まだ開発初期の段階なので、大量のレシピを管理するには無理があります。 でも、「ここが使いやすかった」「ここをこうしてもらえると嬉しいな」といった意見を頂けると、とても嬉しいです。 「面白そうなソフトですね」とか「これからに期待しています!」といった感想を聞かせてもらえると、とても元気が出ます。 また、拍手ボタンをクリックしてもらうだけでも、期待されてるんだなぁ、と実感が湧きます。

皆さんのご協力を、心からお待ちしています。

HomeRecipe 0.2.0 公開!

お待たせしました。HomeRecipe 0.2.0を公開します。

0.1.0からは、全てを作り直しての再出発です。 0.2.0の特徴として、0.1.0では閲覧と編集が分離していたのを、統合して直接編集できるようになっています。 現状では、レシピの分類や写真の貼付はできませんが、将来的にはどちらもできるようになりますので、ご安心ください。

HomeRecipe 0.2.0は、そのバージョン番号からもわかるように、開発途中のソフトで、早期の情報収集を目的として公開しています。 試用された方は、この記事のコメントやメールなどで、その感想をぜひお知らせください。 なお、試用期限は2008年1月31日までで、それまでには新しいバージョンを公開する予定です。 正式版は、2,000円程度のシェアウェアになります。

料理レシピ管理ソフトは、今ではすっかり廃れてしまって、その代わりにクックバッドなどのオンラインサービスが大盛況です。 それらは、レシピの数も膨大で、なかなか操作性も優れており、料理に関わる豊富な話題も提供していて、とても魅力的です。 でも、自分の気に入ったレシピだけを手元に置いておきたい、非公開で自分の料理の記録を残していきたいと思っている人も多いのではないでしょうか。

より良い食生活を楽しむために、ぜひ一緒にHomeRecipeを育てていきましょう!

評価ができるようになったよ

ついに、レシピの評価ができるようになりましたよ。

スクリーンショットを見てまず気づくのが、追加や削除のボタンがついたことです。 これで、だいぶ完成品っぽくなってきました。 その代わり、今回はもう間に合いそうもないということで、写真を扱う部分は隠しています。 写真の扱いに関しては、ちょっとしたアイデアを持っているので、今後に期待していてくださいね。

献立ウインドウには、新たに評価リストが加わって、評価の入力ができるようになりました。 評価の入力も、ダイアログを表示せずに、インラインで直接行うことができます。 評価の値は、直接数字を入力する他にも、矢印キーで増減させることができます。 今のところ、評価の値に制限は設けていないんですが、この辺りは今後じっくりと調整していきますね。

細かい修正としては、献立ウインドウの料理リストを選択した時に、レシピウインドウのレシピリストが連動するようにしました。 これまでは、ダブルクリックで連動するようにしていたんですが、わざわざワンクッション置く必要はありませんからね。 また、評価の入力は献立と料理の両方を選んでいる時にしかできないようになっているんですが、この操作の流れが、0.1.0よりもわかりやすくなっています。

足りない部分はまだまだたくさんあるんですが、今回はここまでで機能の追加は終わりにします。 最後に一通り動作を見直して、簡単な説明書を書いたら、いよいよ公開です。 一時はどうなることかと思いましたが、なんとかなるものですね。 ただ、最後の方はちょっとやっつけ仕事になってしまっていたので、しっかりリファクタリングして次に繋げていかないといけませんね。

HomeRecipe 0.2.0は、いよいよ明日公開です。お楽しみに!

読み書きできるようになったよ

ついに、レシピと献立の保存と読み込みができるようになりました。

早速、もっちりベーグルを追加してみました。 これで、とりあえずレシピ管理ソフトとしての体裁はできあがったわけで、ほっと一安心です。 ただ、写真や評価はまだ扱えませんし、レシピや献立の分類もできない状態です。 使い勝手もとても良いとはいえない状態なので、まだまだやるべきことはたくさんあります。 それでも、一から作り直して2週間でここまで来れたというのは、私にしては上出来だといえるでしょう。

ファイルはXMLで記録するようにしているんですが、その整形部分でつまずいてしまいました。 REALbasicにはDOMの簡易版が搭載されているんですが、そのままだと要素が全て詰めて記録されてしまうんですよ。 仕方がないので、改行やインデントは自分でやらなきゃならないわけですが、それがどうにもややこしいんですよね。 XmlNodeのCreateTextNodeを使って改行やタブを追加していくわけですが、どのNodeのCreateTextNodeを使うかによって、整形結果が異なってくるんですよ。

XMLの整形問題は解決したんですが、今度は0.1.0との互換性の問題が出てきました。 0.2.0では、データ構造そのものが変わっているので、ファイル構造も変わっています。 また、0.1.0にあって0.2.0で扱っていないデータもあるので、仮にコンバータを作ったとしても、データの取りこぼしが出てしまいます。 そういうわけで、今回は0.1.0のファイルの読み込みは見送って、0.1.0と0.2.0を独立して動作するようにしました。 なにぶん、開発途中のソフトゆえ、ご理解のほど、よろしくお願いします。

公開予定の20日まであと2日。ラストスパートで頑張るぞ!

レシピと献立の連携

レシピウインドウ 献立ウインドウ

レシピと献立の連携ができるようになりましたよ。

レシピと献立を連携させるためには、その両方を同時に表示させる必要があります。 これまでは、どちらも同じ大きさのウインドウで、同時に表示させるには無理があったので、献立ウインドウをダイエットさせることにしました。 カレンダーは、一番場所を取るし、必ず必要なわけでもないので、ボタンで呼び出すようにしました。 料理リストも5つほど表示できれば十分でしょう。 最後に、ウインドウをフローティングウインドウにして、常に最前面で表示するようにしました。

献立に料理を追加するには、レシピリストで追加したい項目をダブルクリックするだけです。 また、料理リストの項目をダブルクリックすると、今度はその料理のレシピが表示されます。 今のところ、操作方法はダブルクリックだけですが、将来的にはドラッグ&ドロップや専用ボタンなどでもできるようにする予定です。

と、ここまでは順調だったんですが、料理リストの順番を並び替えられるようにしたところ、なぜかアプリケーションが強制終了するようになってしまいました。 たいした処理はしていないし、どこにも問題はなさそうなんですが…。 とりあえず、デバッガで1ステップごとに追跡して、問題の場所を探していきます。 どうやら、日付データを取得するところで落ちているようです。 でも、ちゃんとエラー対策はしてるのになぁ。

HomeRecipeでは、Einhugur SoftwareのプラグインであるCoreClassesのObjectCollectionクラスを使ってデータを管理しているんですが、どうもそのInsertメソッドが怪しいんですよね。 どうやら、Insertを行うと、最後のデータの一部が破壊されてしまうようです。 そこで、ビルトインのInsertメソッドを使わずに、オーバーライドする形で自前のInsertメソッドを用意したところ、やっと動作するようになりました。 一応、拙い英語(箇条書き?)でバグレポートを送っておきましたが、ずいぶん時間を取られてしまいました。

公開予定の20日まであと4日。本当に大丈夫かなぁ…。

レシピの編集が可能に

ついに、レシピを自由に編集できるようになりましたよ。

レシピ、食材、手順の全てにおいて、追加、修正、削除ができるようになって、だいぶ形になってきました。 実は、まだ写真の表示や編集ができなかったりするんですが、これは優先順位が低いので、もっと後での実装になります。 場合によっては20日の公開には間に合わないかもしれませんが、最終的には必ず実装しますので、ご安心ください。 その代わり、レシピの編集はずっとやりやすくなっているので、期待していてくださいね。

今回の追加点は、レシピリストと手順リストで、項目の追加と削除だけなんですが、思ったより時間がかかってしまいました。 それこそ、ただ機能を追加するだけなら簡単なんですが、機能を追加する度に構造が複雑になってしまうんですよね。 しかも、うっかりレシピリストと手順リストの作業を同時進行させてしまったので、余計に複雑感が増してしまいました。 昨日、作業の段取りをしっかりしなきゃと反省したばっかりだったのに、これじゃいけませんね。

とりあえず、頭がいっぱいいっぱいになりながらも一通りの機能を実装し終えて、ぐっすり寝てから再びソースを検証してみると、あちこちミスが目立ちました。 急がば回れといいますが、やっぱり焦ったり欲張ったりしてはいけませんね。 私の通った高校は仏教校だったんですが、授業の開始前には1分間の黙想タイムがありました。 これが、意外と集中できて良かったんですよ。 今度から、仕事前には黙想して心を落ち着けてみようかな。

次は、献立ウインドウの編集に入るわけですが、今度はレシピウインドウとの連携が絡んでくるので、ちょっとややこしくなってきます。 ただ単にデータをやりとりするだけなら簡単なんですが、これもより最適な答を見つけるには、時間がかかりそうです。 このレシピと献立の連携がうまくできれば、評価はすんなりと実装できるはずなので、ここは踏ん張りどころです。

公開予定の20日まであと5日。焦りと不安がよぎる今日この頃です。

食材リストの編集

食材リストが、編集できるようになりましたよ。

HomeRecipe 0.1.0では、いちいち編集ダイアログが出てきて鬱陶しかったんですが、インラインで直接編集できるようになりました。 各項目は、ダブルクリックまたはenterキーで即編集できます。 食材やフォルダの追加や削除、並び替えもできるようになっています。 こうして、直接編集できるのって、やっぱり快適ですね。 開発初期の頃から、余計なダイアログはなくしたいと思っていたんですが、やっとそれを実現できました。

今のところ、編集できるのは食材リストだけですが、引き続き手順リスト、レシピリスト、献立ウインドウと、編集機能を実装していきます。 一通り編集ができるようになったら、今度はファイルの入出力を実装していきます。 それが終われば、レシピの分類や、各ウインドウの本格的なレイアウト作業に入ります。 実は、ちょっとした内緒の新機能も付け加える予定なので、楽しみにしてくださいね。

今のところ、一番複雑でやっかいだった食材リストですが、頑張ってリファクタリングをしたおかげで、かなり構造がシンプルになってきました。 リファクタリングを学んでいたおかげで、なんとかペースを乱さずに来れましたが、以前の私なら、きっと途中で煮詰まって停滞していたことでしょう。 ただ、今回も作業の段取りをあまり考えずに思いつくままに実装を進めてしまったので、結果的に回り道をしてしまいました。 この辺りは、今後の課題ですね。

HomeRecipe 0.1.0では、見た目はシンプルでも、どこか取っ付きにくいところがあったんですが、間に合った邪魔なものがなくなって、ずっと身近な存在になっているような気がします。 寒い屋外で分厚いコートを着て抱き合っていたのが、暖かい部屋でコートを脱いで抱き合えるようになった感じ? 素肌で触れ合うにはまだまだ早いかもしれませんが、順調に愛が育っているのを感じます。

公開予定の20日まであと6日。開発は次第にヒートアップしていきます。

献立ウインドウができたよ

HomeRecipeの献立ウインドウですよ。

気分転換のつもりで手を出したスタイルシートにうっかりはまり込んでしまったので、気持ちを入れ替えてHomeRecipeの開発再開です。 先週は、レシピウインドウで一通り表示できるようになったので、次は献立ウインドウです。 ウインドウのレイアウト自体は、動作確認用の暫定的なものですが、テスト用のサンプルデータをちゃんと表示できるようになりました。 左は献立データの一覧、真ん中は選択した献立の日付と写真、右は献立のレシピ一覧となっています。

新しい献立ウインドウでは、中央にでんと構えたカレンダーが目を引きます。 このカレンダー自体は、サードパーティー製のプラグインをほぼそのまま使っているだけなんですが、やっぱりカレンダーがあるとわかりやすいですね。 食生活って、曜日と密接な関わりがありますよね。 日曜日は家族みんなで楽しめるような料理、月曜日は仕事や学校で頑張れるような料理、金曜日は一週間の疲れを癒せるような料理。 そんなことを考えながら献立を作れたら楽しいだろうな。

内部構造も、驚くほど単純になっています。 これまでは、レシピリストと献立リストは全くの別物として扱っていたんですが、共通する部分を抽出してみました。 データ定義の時にも、レシピデータや献立データの共通する部分をまとめていたおかげで、表示用のリストボックスも同じやり方で単純化させることができました。 ついこの間まで、せっせとコピー&ペーストしていたことを思うと、ずいぶん進歩したものです。

この部品の共用化のおかげで、レシピと献立だけじゃなくて、評価や他のデータも、最小限の追加だけでリストボックスを作れるようになりました。 扱うデータが違うから、処理が重複するのは仕方がないと思って諦めていたんですが、その気になればちゃんと効率化できるもんなんですね。 あまり先のことは考えずに、現時点で最も単純な答を出すように心掛けるようにしているのが功を奏しているようです。

そう、今までの私のプログラミング・スタイルは、最初にやりたいことをしっかり決めてから、早く作りたい!と我慢できなくなったところで、勢いに乗って一気に作り上げるというスタイルだったんですよね。 我慢できなくなった時が、仕様が十分に煮詰まった時。 後は、早くそれが動いているところを見たいという欲望の勢いに任せていました。 なので、最初のうちは調子良くても、途中で何かにつまずいてしまうと、途端に失速して開発が停滞してしまっていたんですよ。

一度失速してしまうと、欲しいと思っていたものが、作らなければならないものに変わって、欲しくなくなってしまうんですよね。 真っ直ぐに下りていく滑り台なら良かったんですが、大抵はS字型の曲がりくねった滑り台なので、場合によっては途中で上り坂を上らなければならなくなります。 XPエクストリームプログラミングを学んだおかげで、そのS字の波がずいぶん穏やかなものになったように思います。

公開予定の20日まであと8日。この調子で頑張ります!

レシピリストができたよ

HomeRecipeに、レシピリストが加わりましたよ。

XPエクストリームプログラミングにならって、最も必要な部分から、最小限の内容を実装していったら、本当にあっという間にここまでできてしまいました。 HomeRecipe 0.1.0からの流用もあるわけですが、心的な負担はずいぶん減ったような気がします。 もし、これにレシピデータとデータの読み込み処理を加えたら、それでもう立派なレシピ閲覧ソフトになってしまうんですから、この開発速度はかなりのものですね。

MT Log Readerの時も、かなりハイペースで開発が進んでいましたが、当時はまだリファクタリングを知らなかったので、内部構造はかなり歪んできています。 MT Log Readerの開発が止まっているのも、欲しい機能をだいたい実装し終わったというだけじゃなくて、これ以上増改築をするのは厳しいという判断からでもあります。 その点、今度のHomeRecipe 0.2では、こまめにリファクタリングをしているので、いつも快適な状態から作業を始められます。

新たに追加したレシピリストですが、最小限のレシピ情報だけを表示するようにしています。 まだそれ以外のデータが揃っていないということもありますが、他に必要な情報があれば、それが必要になってから追加していくことになります。 ただ、レシピリストはレシピの一覧を表示するためのものなので、レシピ以外の情報は、なるべくそれ以外の適切な場所に表示するようにするつもりです。

また、材料リストにも細かい修正をしています。 グループ化された項目とそうでない項目との違いがわかりにくかったので、グループ化された項目の左側に、フォルダと同じ色のラベルをつけることにしました。 このラベルのおかげで、その項目がグループ化されていることが一目でわかります。 最初のスクリーンショットと見比べると、見やすさがずっとアップしているのが良くわかりますね。

公開予定の20日まであと11日。この調子で頑張るぞ!

材料と手順が揃ったよ

HomeRecipeで、手順リストが表示できるようになりましたよ。

手順リストは、各手順の写真を表示するようにしたのが、一番の変更点です。 以前は、写真があるかないか、○と×でしか表示していなかったんですよね。 もちろん、内部構造もバッチリです。 ただ、このリスト、ひとつの項目に3行表示できるようにしているんですが、インラインで編集させると、1行表示になってしまうんですよ。 これは、REALbasicのListBoxの仕様なので仕方がないんですが、困ったものです。

手順リストでは、一行当たりの情報量が多いので、一行おきに色分けをして、識別しやすいようにしています。 食材リストも、フォルダの部分だけ色分けしてたんですが、普通の項目でも、食材と分量を囲うように背景をつけることにしました。 これで、食材と分量の対応がずっとわかりやすくなりました。 また、なるべく目に負担をかけないように、色は薄めにしてあります。 どうです、見やすいでしょ?

これで、レシピ表示の基本部分ができあがりました。 HomeRecipe 0.1.0では、レシピの表示はHTML、編集はListBoxというように使い分けていたんですが、表示も編集もListBoxに統一することにしました。 HTML表示の方が表現力があって楽しめるんじゃないかと思ってたんですが、HomeRecipeはレシピを眺めるためのソフトじゃなくて、レシピを育てるためのソフトですからね。 さっとレシピを修正できたほうが、ずっと便利なはずです。

もちろん、レシピのHTML形式での書き出しもできるようにする予定です。 レシピの印刷も、HTML形式で書き出した後に、ブラウザで印刷するようになるかと思います。 自前で印刷用の処理を行うのは、手間がかかりますからね。 その代わり、テンプレートをいくつか用意して、好みのデザインで印刷できるようにするつもりです。 そのために、今はスタイルシートの勉強をしているところです。

次は、いよいよレシピのブラウズ部分に取りかかるわけですが、献立や評価との兼ね合いもあるので、ここは慎重に進めていかなければなりません。 また、レシピを育てるという観点から、進化系統図のようなものも実現できたら面白いだろうな、と考えています。 とにかく、データの流れ、そして操作の流れを、もう一度しっかりと見直して、わかりやすくて扱いやすいレシピ管理ソフトにしていきたいですね。

というわけで、この調子で頑張るぞ!

新しい食材リストだよ

HomeRecipeの新しい食材リストですよ。

これは ハリボテじゃなくて、ちゃんとテスト用のレシピデータを表示させたものです。 これまでとの違いは、階層表示に対応したことです。 これまでも、見出しを入れることはできたんですが、階層表示にしたことで、中身を折り畳んだり、グループを丸ごと移動させたりということができるようになりました。 今のところ、項目の表示と並べ替えしかできませんが、これから項目の追加や削除などの機能を追加していきます。

食材リスト以外にも、基本的なデータクラスはほぼ実装できています。 あれこれ勉強したおかげで、クラス構造がすっきりして、実にわかりやすくなりました。 前には11個もあったレシピクラスのメンバ変数も、何と4つにまで減らすことができました。 いやいや、やればできるもんですね。 その代わり、データクラスの数は12個から14個に増えたわけですが、無駄な重複がなくなって、ひとつひとつがとてもシンプルになりました。

そして、それぞれのデータクラスに対応する形で、表示用のコントロールクラスを実装していきます。 その第一弾が、この食材リストというわけです。 そして、第二弾が手順リスト、第三弾がレシピ全体のHTML表示となります。 そこまでできれば、後はレシピに至るまでの道筋を用意すれば、とりあえず完成です。 すでに、必要なクラスの個数がわかっているので、作業がとても楽になりました。 20日には、絶対に間に合わせるぞ!

ところで、この食材リストなんですが、項目の並び替えで、予想以上に手間がかかってしまいました。 階層表示をしなければ、リスト自体はREALbasicがお任せで並べ替えてくれるので、対応するデータの並び替え処理をするだけで済むんですが、階層表示にすると、リスト項目の並び替えも自分でやらなきゃならなくなるんですよ。 それなのに、下位の階層に項目を追加する命令がないじゃありませんか。

結局、移動先の階層を一旦閉じてから再び開くという方法で切り抜けましたが、リスト項目とデータ項目を同期させるための処理も複雑になってしまって、ずいぶん苦労しました。 実は、ListBoxのCellTagでリスト項目に識別用のタグがつけられるんですが、その型がVariantなんですよ。 ここでObjectを参照できるようにしてくれたら、処理がずっと楽になったんですけど…。 こういうところが、REALbasicって抜けてるんですよね。

ただ、そのおかげで、これまで勉強してきたことを、自分の経験として吸収できたように思います。 たとえば、階層表示ということで、最初はNodeクラスにParentとChild()をつけて、多階層に対応させてたんですが、処理が複雑になり過ぎて、テストやデバッグが面倒になってきました。 でも、実際の食材リストは2階層しか使わないので、現状では多階層に対応することは過剰機能です。 そこで、2階層の食材リストに最適化させたところ、ずっと処理が簡単になりました。

「現状で最も単純な実装をすること」というのは、XPエクストリームプログラミングで繰り返し言われてきたことです。 ところが、階層表示というだけで「多階層に対応できるようにした方が良さそうだ」と、ありもしない将来性に惑わされてしまい、わざわざ問題を難しくして苦労を背負い込んでしまっていたんですね。 以前の私なら、将来への投資ということで意地になって実装させて、ますますシステムを複雑にしていたことでしょう。

というわけで、早め早めのリファクタリングで頑張ります!

プロフィール

K-Hyodo

K-Hyodo

本名:兵頭 薫
鹿児島の30代男性
ソフトウェア作家を目指す

コメント・拍手は大歓迎!

K-Hyodo's Soft

どのソフトも、
Mac & Windows 両対応!

iKeyboard 3

本気で覚えるための、
キーボード練習ソフト。

ベクターソフトレビュー


PhotoMaster 2

撮影を楽しむための、
デジカメ写真管理ソフト。

ベクターソフトレビュー

Vector Best Online Soft of 2004


iKeyboard 2

ブログを読み返すための、
バックアップ表示ソフト

窓の杜 今日のお気に入り


マルチプラットフォームの統合開発環境REALbasicで開発しています。

Twitter

 

カレンダー

08 | 2017/03 | 09
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

ブログ内検索

アクセスカウンター

読書メーター

K-Hyodoさんの読書メーター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。