---
# System prepended metadata

title: 【レンタックス】クローズ物件リスト配信
tags: [実装]

---

# 【レンタックス】クローズ物件リスト配信

## 目次

- [【レンタックス】クローズ物件リスト配信](#レンタックスクローズ物件リスト配信)
  - [目次](#目次)
  - [改版履歴](#改版履歴)
  - [背景・要旨](#背景・要旨)
  - [概要](#概要)
  - [実装](#実装)
    - [Kintoneから建屋データ取得](#Kintoneから建屋データ取得)
    - [i-SPから部屋データ取得](#i-SPから部屋データ取得)
      - [取得項目(クローズ物件)](#取得項目クローズ物件)
      - [取得項目(WEBクローズ)](#取得項目webクローズ)
  - [実装の方針](#実装の方針)

## 改版履歴

- 2023/07/17 M.kitahata 新規作成

## 背景・要旨

- レンタックスでは毎月1日「クローズ」物件のEXCELリスト配信を行っている。
- また東エリアではオーナー担当と営業店にて「WEBクローズ」物件の共有を行っている。
  →何れの方法もレンタックスの運用負荷が大きく、営業店との認識の乖離も発生している。

## 概要

- 建物単位の情報として、Kintone.オーナーリストに募集形態(クローズ・WEBクローズ・オープン)の情報を登録する。
- 部屋単位の情報として、i-SPの部屋台帳にはメモ欄に「クローズ」「WEBクローズ」を記載する。
- クローズ物件については更にステータスを「家主調整中」とする。
- 上記のKintone・i-SPから対象物件の情報を抽出し、営業店向けに定期的に配信を行う。

## 実装

- 1.KintoneからAPIで対象の建屋・募集形態を取得
- 2.i-SPの部屋台帳から「クローズ」「WEBクローズ」対象の情報を取得
- 3.リスト作成・営業店に配信

## Kintoneから建屋データ取得

- 対象AP:オーナーリスト
- 条件:管理切れを除く、「クローズ」または「WEBクローズ」にチェック有り
- 項目:物件名・物件住所・募集形態・クローズ店舗
- 募集形態:ドロップダウン
- 物件名:文字列__1行_
- 物件住所:文字列__1行__0
- 募集形態:募集形態
- クローズ店舗:クローズ店舗
- クローズ時備考:クローズ時備考
- エリア:ドロップダウン_0
- オーナー担当:ユーザ選択
## WEBクローズフォーマット修正

## Kintone-i-SP I/F検討
- JSONファイルをI/Fとして利用する。
- i-SP側にはファイルパスを引数として渡す。

## i-SPから部屋データ取得

- 項番1で取得した建屋について、部屋台帳から情報を取得する。
- クローズ物件：ステータスが家主調整中、メモに「クローズ」(≠WEBクローズ)
- WEBクローズ物件:空室、メモに「WEBクローズ」
- クローズ物件の場合、WEB掲載に必要な情報を記載する。
- WEBクローズ物件の場合、空室WEB経由で情報は入手できる為、対象の物件が特定出来れば良い

## 取得項目(クローズ物件)

| 項目      | サンプル値                                                    | 区分  |
| ------- | -------------------------------------------------------- | --- |
| エリア     | 東  タブ2 テーブル6                                                    | 建屋 |
| 最寄駅     | 阪神鳴尾 テキスト26                                                  | 建屋  |
| 駅徒歩     | 4分 テキスト27                                                      | 建物 |
| 建物名称    | パラディオンⅢ  テキスト１                                                | 建物 |
| 部屋番号    | 305  テキスト2                                                    |  部屋   |
| 間取      | 1LDK  テーブル30                                                   |   部屋  |
| 所在地     | 兵庫県西宮市里中町2-9-11  テキスト18・19・20                                        |  建物   |
| 種別      | マンション  テーブル17                                                  |  建物   |
| 専有面積    | 42.16㎡   テキスト6                                                |  部屋   |
| 礼金      | 150,000                                                  |  部屋   |
| 家賃      | 95,000  位置は変動                                                |  部屋   |
| 共益費     | 5,000                                                    |   部屋  |
| 水道代     | 検針                                                       |  部屋   |
| 広告料     | 1ヵ月                                                      |  部屋   |
| 鍵場所     | AL:呼1732、部屋ジョイナー4649                                     |  部屋   |
| 現況      | 退去予定                                                     |  部屋   |
| 担当      | 担当:窪田  タブ2　テキスト3                                                  |  建屋   |
| 駐車場・駐輪場 | ※バイク(原付)駐輪不可                                             | 部屋  |
| 広告用メモ   | ＊鍵交換代19,800円（税込）＊退去時ハウスクリーニング代22,000円（税込）＊礼金1ヵ月の場合、ＢＫ2ヶ月 | 部屋|

- 部屋メモ:テキストエリア0

### 賃料・敷金情報
- 賃料項目と金額を指定して入力する為、他のテキスト項目と異なり位置は動的に変わる。
- **テーブルの内容を走査して項目の有無を調査する必要が有る。**
- 賃料情報欄
- 家賃・共益費・「定額水道料」は賃料項目を調査の上情報を取得する。
- 敷金は位置固定
- 礼金も位置固定
- 入居促進料も位置固定

## 取得項目(WEBクローズ)

| 項目  | サンプル値        |
| --- | ------------ |
| 担当  | 巽            |
| 物件名 | EsCourt      |
| 住所  | 東大阪市吉田１－７－１６ |
| 号室  | クローズ対象の号室    |
| クローズ条件  |  空室期間2ヶ月            |


## データ取得と通知処理のI/F
- JSONファイルへ出力
- Dictionary→JSONをテスト
- 匿名オブジェクト→形式が単純な場合
- **データクラス→再利用性が必要な場合や複雑な構造**
- ディクショナリ→構造が単純な場合
- 今回はデータクラス

## 通知処理

- AOSPublicationCheckを参考に作成
- 上記データを**現行のEXCELと同様**の形式で作成
- 営業店にメール通知
- JSONファイルの読込み
- [x] データクラスをプロジェクト化(出力と読込で共有)
- [x] JSONファイル→デシリアライズメソッド追加
- ファイルパス:IN
- OUT→List<>
- [x] ファイル読込
- [ ] EXCEL作成
- ヘッダ編集
- データオブジェクトを各エリアに分割するには？→LINQでリスト分割

## 実装の方針

- C#で実装
- i-SPからのスクレイピングはChrome-Seleniumを採用する。
- ※本来は動作環境ではないが、実装及び参照系である事を考慮してこの方針とする。
  - 動作確認した所、**Seleniumでエラーが発生**。
  - 他サイト(CyberManager)**では正常に動作した為サイト依存と考える**。
- 代替案としてSelenium-IEDriverを利用する。
- [Selenium公式サイト](https://www.selenium.dev/ja/documentation/ie_driver_server/)
- [Microsoft EdgeでIEモードを自動化する](https://learn.microsoft.com/ja-jp/microsoft-edge/webdriver-chromium/ie-mode?tabs=c-sharp)
- WEBdriverとSessionTimeOut(Edgeは表示されるものの、Serverと通信出来ていない)
- 保護モードを有効→無効で揃える(どちらかで揃えるのが要件として必要)
- 無効で揃える必要あり

## メモ
[System\.Text\.Json で型が不定のJSONを扱う\(\.NET\) \| Qreat](https://qreat.tech/3292/)
[C\#で不定形JSONを自在に扱いたい \- Qiita](https://qiita.com/rana_kualu/items/b4fab77d4c5c4f6fd3da)

### :satisfied: 実装時メモ
- [x] 建物が複数の場合のJSON出力
- [x] 建屋閲覧の起動→モーダルの起動処理をクリックと合体させてリトライ
- [x] BackRoomListのログ修正(建屋一覧になっている)
- [x] JSONの出力パスをデスクトップに
- [x] 建屋名のクリアはJSで実行
- [x] 検索ボタンがクリックされない(クリックが完了していない)
- クリックが失敗するケース・成功するケース両方有り？
- 確率の問題か？
- [ ] エリアの出力時に「エリア」の文字を削除する。
- [ ] 担当は全角スペースで分割した1件目を
- [ ] 広告料は「ヶ月」編集を
- [ ] 専有面積は㎡を付与する
- [ ] クローズ物件リスト取得
- [x] メール送信共通クラス化
- [ ] Kintone取得実装
- 専有面積４・鍵場所24
- 14日
- :tiger: 
- WEBクローズフォーマット作成
- [x] JSON→OBJに変換
- [x] 建屋が見つからない場合の処理を追加
- 建屋検索処理は見つかる/見つからないをbool値で返却
- 「メゾン新石切2番館」でエラー
- [x] Kintone取得項目
- ==エリア:ドロップダウン_0==
- ==オーナー担当:ユーザ選択==
## WEBクローズフォーマット修正
- [x] Kintone取得データ→Jobjectをグローバル化
- [ ] 