予約機能の組み込み

予約機能の組み込み

単一商品の予約リストを表示するための仕組みは、BookingListControllerクラスで、BookingListController.xibファイルにオブジェクトの定義があります。 こちらは基本的にはItemListControllerクラスと同じようなものです。 予約リストは、サーバ側で予約されていない期間についての情報も挿入して戻されるので、後は単にリストに記載するだけです。

写真の右側の商品説明のような箇所は、UIWebViewというWebブラウザと同等なクラスを利用しています。 そこに、プログラムで生成したHTMLをセットして、表にしています。単なるテキストのためのクラスUILabelがありますが、 スタイル付きのテキストやあるいはレイアウト結果を表示したい場合は、UIWebViewを使います。 もちろん、HTMLだけでなく、CSSについても効果的に利用することで、デザイン性を高めることになるでしょう。

予約を入れる機能はReservationControllerクラスであり、ユーザーインタフェースは ReservationController.xibで定義しています。 このクラスは実用にするには、もっときちんと作り込まないといけませんが、ここではモックアップ的な体裁しか整えていない点はご了承ください。 テーブルの読み込みだけでなく、書き込みのためには、いろいろ複雑な処理が絡みます。また、ピッカーの表示を行わないといけません。 ここではピッカーだけを説明します。

iPhone OSではポップアップ・メニューがありません。 そのため、画面半分を使って回転するコントロールを持った「ピッカー」を使って選択入力をする必要があります。 もちろん、クラスとして定義されていますが、日付や時刻用のものと、汎用的なものがあります。 前者は選択肢はもともと持っているので、選択したときの処理の組み込みでOKです。 選択したという「イベント」が発生したときに、別のインスタンスのメソッド呼び出しを行う仕組みがあり(アクション)、それを利用しています。

汎用的な選択肢を持つピッカーはピッカーのdataSourceというアウトレットの先に選択肢の問い合わせを行います。 このサンプルでは、例えば顧客を選択するのに、顧客の一覧を返すように、ReservationControllerクラスで応答するメソッドを定義してあります。

サンプルにない機能で業務アプリに要求されるもの

駆け足でiPhoneアプリケーションを紹介しましたが、雰囲気が分かるようなもの程度です。 一般には、データの検証をさまざまな場面で行う必要があります。例えば、予約する日程にすでにブッキングが入っている場合どうするか?

もちろん、適当にIFで分岐すればいいのかもしれませんが、業務ソフトの場合、こうした処理は用途に応じて組み込む必要があります。 例えば、予約がぶつかった場合、仮予約として入れて後で処理をするのか、そもそも受け付けないでエラーを出すのか、 あるいは重複する日程を排除して予約を入れるか、これは利用する状況次第です。

しかしながら、このようなデータに関する制約は、コントローラ内で吸収するというのが1つの方針です。 ただし、動作によっては追加のユーザー・インタフェースも必要になります。

そして、業務ソフトの多くは利用者が誰なのかによって大きく違います。例えば、このような観葉植物レンタルにしても、 レンタル先の顧客が使うのであれば、認証を行った上で顧客の選択は行わないようにするのが通常でしょう。 一方、営業担当者が使うのであれば、しかるべき認証により、担当者の選択は不要にするのが一般的でしょう。 ただ、あえて認証しないで選択させるという方向性もあります。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30