古くなった実家、もう壊したほうがいいのだろうか」
解体業者に見積もりを頼む前に、誰かに相談したほうがいい?」
壊して更地にしたら、売れやすくなるのか、それとも損をするのか分からない」
古くなった空き家を前にすると、「壊してすっきりさせたい」という気持ちになるのは自然なことです。ご近所への気がかりや、管理の負担もあると思います。
ただ、解体はやり直しができません。壊した後で「そのまま売ったほうがよかった」「建て替えができない土地だった」と分かっても、元には戻せないのです。この記事では、岡山市で空き家を解体する前に相談したい7つのことと、そのまま売る・解体して売る・活用するを比べる考え方を、計算の例とあわせてまとめました。
空き家を解体する前に、①再建築できるか、②そのまま売った場合の査定額、③解体の見積もり(アスベストの調査を含む)、④固定資産税の変化と1月1日、⑤3,000万円特別控除の取壊しの要件、⑥補助の対象になるか、⑦解体した後の使い道の7つを確かめましょう。判断の順番は「土地→建物→出口」です。古い家でも、そのまま売ったほうが手元に残る額が多いことや、買主が解体する前提で売れることもあります。岡山市の除却補助は、空家法の「特定空家等」が対象で、古いだけの空き家は対象になりません。解体業者に見積もりを頼む前に、不動産会社で「そのまま売った場合」の査定を取っておくと、比べやすくなります。
解体の前に相談したい理由|壊すと戻せないこと
| 壊した後に起こりうること | なぜか |
|---|---|
| 建て替えができない | 再建築できない土地(前の道路に2m以上接していないなど)では、新しく建てられないことがある |
| 古家を使いたい買主を逃す | リフォームして住みたい、倉庫として使いたいなど、古家付きで買いたい人もいる |
| 土地の固定資産税が上がる | 1月1日に建物がないと、住宅用地の特例が外れる |
| 補助が使えない | 補助は、事前相談・申請の前に契約・着工すると対象外になる |
| 税金の特例の要件 | 相続した空き家の3,000万円特別控除は、取壊しの時期や書類が要件に関わる |
解体の判断は、土地の条件 → 建物の状態 → 出口(誰が使うか)の順番で考えると迷いにくくなります。土地が再建築できない、雨漏り・シロアリ・傾きの有無、買う人・借りる人がいるか。この順番で確かめていきましょう。
解体の前に相談したい7つのこと
| # | 相談したいこと | 相談先 | 確かめる理由 |
|---|---|---|---|
| ① | 再建築できるか(接道・市街化調整区域) | 不動産会社・岡山市の窓口 | できない土地なら、壊すと建て替えられない |
| ② | そのまま売った場合の査定額 | 不動産会社 | 解体して売る場合と比べるため |
| ③ | 解体の見積もり(アスベストの事前調査、ブロック塀・庭木・浄化槽の撤去を含むか) | 解体業者(2〜3社) | 見積もりの範囲で金額が大きく変わる |
| ④ | 固定資産税の変化と1月1日 | 不動産会社・岡山市(資産税課) | 1月1日に建物がないと、その年の土地の税が上がる |
| ⑤ | 3,000万円特別控除の取壊しの要件 | 税理士・税務署 | 相続した空き家なら、取壊しの時期・書類が要件に関わる |
| ⑥ | 補助の対象になるか | 岡山市 空家対策推進室 | 対象は特定空家等。事前相談・申請の前に契約しない |
| ⑦ | 解体した後の使い道 | 不動産会社 | 売る・駐車場・貸す・置いておくで、壊すべきかが変わる |
おすすめの順番は、②の査定を先に取ってから③の見積もりを頼むことです。そのまま売った場合と、解体して売った場合の手元に残る額を比べてから決められます。再建築できない土地の売り方は「岡山で「再建築不可」の空き家を売る現実的な方法」で、解体費用の相場は「【岡山】解体費用の相場を解説|空き家・実家の解体前に知りたい費用の目安」で紹介しています。
売却・活用と比べる|4つの出口
| 出口 | 向いているケース | 良いところ | 気をつけること |
|---|---|---|---|
| そのまま売る(古家付き土地) | 建物が使える、買主が解体する前提でも買い手がいる | 解体の費用が先にかからない。固定資産税も上がらない | 建物の不具合の告知が大切。価格は解体の費用を考えて決まることが多い |
| 解体して売る(更地) | 新しく家を建てたい人が多い地域、整った形の土地 | 買う人が土地の状態を見やすい | 解体の費用が先にかかる。売れる前に1月1日を迎えると土地の税が上がる |
| そのまま貸す・使う | 建物の状態がよい、借り手が見込める | 家賃収入。建物を残せる | 修繕・管理の費用。一度貸すとすぐに売れないことも |
| 解体して活用(駐車場など) | 駅や住宅地の近くで駐車の需要がある | 建物の管理がいらない | 解体・整地の費用。更地の固定資産税。需要がないと埋まらない |
売る場合の「そのまま」と「更地」の違いは「空き家は「そのまま」と「更地」で買い手が変わる|岡山市の売却で知っておきたい違い」で、解体の費用を売主・買主のどちらが負担するかは「岡山で空き家を売るとき、解体費は誰が負担する?」で紹介しています。
数字で見る|壊してから売ると、手元に残る額は増える?
例:岡山市内、土地60坪・木造30坪の古い空き家(数字はすべて仮の例です)
| 項目 | そのまま売る(古家付き土地) | 解体して更地で売る |
|---|---|---|
| 売却価格 | 800万円 | 900万円 |
| 解体の費用 | 0円(買主が解体) | おおむね140万円 |
| 仲介手数料(上限) | 33万円 | おおむね36.3万円 |
| 手元に残る額(税金・登記の費用の前) | おおむね767万円 | おおむね724万円 |
この例では、更地のほうが100万円高く売れても、解体の費用がかかる分、手元に残る額はそのまま売るほうがおおむね43万円多い計算です。もちろん、地域や土地の形によっては、更地のほうが早く・高く売れることもあります。だからこそ、両方の金額を出して比べてから決めることが大切です。
解体して駐車場にした場合の回収の目安
例:同じ土地を解体して、月極駐車場(5台・月5,000円)にする場合(数字はすべて仮の例です)
| 項目 | 金額の目安 |
|---|---|
| 解体・整地の費用 | おおむね160万円 |
| 駐車場の収入(5台×月5,000円×12か月、満車の場合) | 年30万円 |
| 更地の土地の固定資産税 | 年おおむね12.6万円 |
| 差し引き(年) | おおむね17.4万円 |
| 解体・整地の費用の回収 | おおむね9年 |
満車が続いた場合でも、回収におおむね9年かかる計算です。空きが出れば、さらに長くなります。活用を考えるときは、地域の駐車の需要を先に確かめましょう。
解体するなら知っておきたい手続き
| 手続き | 内容 | 誰がするか |
|---|---|---|
| 見積もりの比較 | 2〜3社に、同じ範囲(建物・ブロック塀・庭木・浄化槽・家財)で見積もりを依頼 | 所有者 |
| アスベストの事前調査 | 2023年10月からは、資格を持つ人による調査が必要。解体する床面積の合計が80㎡以上なら、結果の報告も必要 | 解体業者 |
| 建設リサイクル法の届出 | 解体する床面積が80㎡以上なら、工事の7日前までに届出 | 所有者(業者が代わりに手続きすることが多い) |
| 電気・ガス・水道の停止 | 解体の前に停止・撤去の手続き。水道は工事で使うことも | 所有者 |
| ご近所へのあいさつ | 工事の音・ほこり・車の出入りの説明 | 解体業者・所有者 |
| 建物の滅失登記 | 解体から1か月以内に、建物がなくなったことを登記 | 所有者(土地家屋調査士に依頼することも) |
解体の時期は、1月1日をまたぐかどうかに気をつけましょう。固定資産税は1月1日の状態で決まるため、売れる前に1月1日を迎えると、その年の土地の税が上がることがあります。
固定資産税はどのくらい上がる?
住宅が建っている土地は、住宅用地の特例で固定資産税が軽くなっています(200㎡以下の部分は課税標準が6分の1)。解体して更地にすると、この特例が外れます。
実際の税額は、負担調整のしくみがあるため「6倍」になるとは限らず、土地の固定資産税がおおむね4倍前後になる例が多いとされています。建物の税はなくなるため、土地と建物の合計では、2倍前後になる例もあります。正確な金額は、岡山市の資産税課や納税通知書でご確認ください。
岡山市の解体(除却)の補助
岡山市の「空家等適正管理支援事業(除却)」は、空家法の「特定空家等」(倒壊などの危険がある、衛生上有害であるなど)が対象です。古いだけ・空いているだけの空き家は対象になりません。
| 項目 | 内容 |
|---|---|
| 対象 | 岡山市内の特定空家等(勧告を受けたものを除く) |
| 補助 | 除却・附帯工事の費用の3分の1(上限60万円) |
| 受付 | 令和8年度は2026年5月1日〜12月18日(予算に達し次第終了) |
| 条件 | 申請の前に事前相談(予約制)が必要。市内の施工業者による工事 |
| 問い合わせ | 岡山市 建築指導課 空家対策推進室(086-803-1410) |
補助を受けられなくなるよくある失敗は「契約前に申請を!岡山市の解体補助金でよくある失敗」で紹介しています。
当社ができること・できないこと
| できること | できないこと |
|---|---|
| そのまま売った場合・解体して売った場合の査定と比較(岡山市北区・中区・東区・南区、玉野市、瀬戸内市、備前市、総社市、倉敷市〈倉敷市は売買のご相談〉) | 解体工事そのもの(解体業者へ) |
| 再建築できるか・区域の確認、駐車場などの活用の見通し | 補助の対象になるかの判断(岡山市へ) |
| 解体業者のご紹介と見積もりの比較のお手伝い、買主が解体する前提での売却 | 税金の計算・申告(税理士・税務署へ) |
| 解体するまで・売れるまでの空き家管理、写真・動画でのご報告 | 売却価格や売れる時期のお約束 |
よくある質問
古い空き家は、解体してから売ったほうが売れやすいですか?
一概には言えません。新しく家を建てたい人が多い地域では更地のほうが売れやすいこともありますが、解体の費用がかかる分、手元に残る額は少なくなることがあります。そのまま売った場合と解体して売った場合の査定を比べてから決めることをおすすめします。
解体業者と不動産会社、どちらに先に相談すればいいですか?
不動産会社で「そのまま売った場合」の査定を先に取り、そのうえで解体業者に見積もりを頼むと比べやすくなります。再建築できない土地かどうかも、解体の前に確かめておきましょう。
岡山市の解体の補助は、どの空き家でも使えますか?
いいえ。岡山市の除却の補助は、空家法の「特定空家等」が対象で、古いだけ・空いているだけの空き家は対象になりません。対象になる場合も、申請の前に事前相談が必要で、契約・着工の前に手続きをする必要があります。
解体すると固定資産税はどのくらい上がりますか?
住宅用地の特例が外れるため、土地の固定資産税は上がります。負担調整のしくみがあるため6倍になるとは限らず、おおむね4倍前後になる例が多いとされています。固定資産税は1月1日の状態で決まるため、解体の時期にも気をつけましょう。
相続した空き家の3,000万円特別控除を使いたい場合、先に解体したほうがいいですか?
取壊しは要件のひとつですが、2024年1月1日以後の売却では、売った翌年の2月15日までに買主が取り壊す場合も対象になります。先に解体するかどうかは、税理士・税務署に要件を確かめたうえで決めましょう。
空き家の解体、見積もりを取る前の比較から一緒に
そのまま売った場合と解体して売った場合の査定、再建築できるかの確認、駐車場などの活用の見通し、解体業者のご紹介まで。解体するか決まっていない段階でもご相談いただけます。ご相談・査定に費用はかかりません。
- 電話で相談する:086-239-3296(10:00〜18:00/水曜定休)
- LINEで相談する(空き家の住所と、建てた年・建物の外観の写真を送っていただくだけでも大丈夫です)
- メールで相談する:minikuru@bc.wakwak.com
※売却価格や売れる時期をお約束するものではありません。補助の対象は岡山市、税金は税理士・税務署にご確認ください。
壊すかどうか迷うのは、家を大切に思っているからです。
古くなった実家を前に、どうするか迷うのは当然のことです。解体は最後の手段ではなく、選択肢のひとつ。そのまま売る、貸す、活用するとも比べながら、ご家族が納得できる形を一緒に探しましょう。
最終更新日:2026年10月14日
確認先:岡山市「空家等適正管理支援事業(除却)」(令和8年度)、大気汚染防止法・石綿障害予防規則によるアスベストの事前調査、住宅用地の特例。制度・補助は年度で変わります。
(この記事は一般的な情報の整理です。金額の例は仮の数字です。補助の対象の判断は岡山市、税金は税理士・税務署が行います。当社は売却価格や売れる時期をお約束できません。)
- 株式会社ミニクルホーム
- 所在地:〒700-0026 岡山県岡山市北区奉還町二丁目19番14号(JR岡山駅西口 徒歩7分)
- 電話:086-239-3296/FAX:086-239-3323
- メール:minikuru@bc.wakwak.com
- LINE:https://line.me/ti/p/kcG_qerYMM
- 営業時間:10:00〜18:00/定休日:水曜日・不定休・GW・年末年始
- 宅地建物取引業免許:岡山県知事(3)第5473号
- 業務内容:売買仲介・賃貸仲介・賃貸管理・空き家管理および対策相談・内外装リフォーム・空室対策相談・保険代理店
- 対応エリア:岡山市北区・中区・南区・東区、玉野市、瀬戸内市、備前市、総社市、倉敷市(倉敷市は売買のご相談)
- 代表:城井 仁(宅地建物取引士・賃貸不動産経営管理士、不動産実務経験25年以上)
CUSTOMER VOICE
お客様の声
Googleマップへ寄せられたミニクルホームのお客様の声を、 プライバシーに配慮して一部抜粋・匿名化してご紹介します。
※Googleマップに投稿された口コミの一部を、 意味を変えない範囲で抜粋・匿名化して掲載しています。 口コミは個人の感想です。
<!– ミニクルホーム|Googleマップ口コミスライダー(WordPress カスタムHTML用) –>
<section id=”mh-google-voice” class=”mhgv” aria-labelledby=”mhgv-title”>
<style>
#mh-google-voice,
#mh-google-voice * { box-sizing: border-box; }
#mh-google-voice {
–mhgv-green: #0d766e;
–mhgv-green-dark: #075b56;
–mhgv-green-light: #eaf7f5;
–mhgv-yellow: #f5b301;
–mhgv-text: #253238;
–mhgv-muted: #6b7478;
–mhgv-border: #dde7e5;
–mhgv-bg: #f6faf9;
–mhgv-white: #ffffff;
width: 100%;
padding: 64px 16px;
background: var(–mhgv-bg);
color: var(–mhgv-text);
font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”,
“Hiragino Kaku Gothic ProN”, “Hiragino Sans”,
“Yu Gothic”, Meiryo, sans-serif;
}
#mh-google-voice .mhgv-inner {
width: min(1180px, 100%);
margin: 0 auto;
}
#mh-google-voice .mhgv-heading {
text-align: center;
margin-bottom: 34px;
}
#mh-google-voice .mhgv-kicker {
display: inline-block;
margin: 0 0 8px;
color: var(–mhgv-green);
font-size: 13px;
font-weight: 800;
letter-spacing: .12em;
}
#mh-google-voice h2 {
margin: 0;
font-size: clamp(26px, 3.3vw, 38px);
line-height: 1.35;
letter-spacing: .02em;
}
#mh-google-voice .mhgv-lead {
max-width: 760px;
margin: 12px auto 0;
font-size: 15px;
line-height: 1.9;
color: var(–mhgv-muted);
}
#mh-google-voice .mhgv-slider {
position: relative;
}
#mh-google-voice .mhgv-viewport {
overflow: hidden;
border-radius: 18px;
touch-action: pan-y;
}
#mh-google-voice .mhgv-track {
display: flex;
gap: 20px;
will-change: transform;
transition: transform .55s cubic-bezier(.22,.61,.36,1);
}
#mh-google-voice .mhgv-card {
flex: 0 0 calc((100% – 40px) / 3);
min-width: 0;
display: flex;
flex-direction: column;
min-height: 360px;
padding: 26px 24px 24px;
background: var(–mhgv-white);
border: 1px solid var(–mhgv-border);
border-radius: 18px;
box-shadow: 0 12px 35px rgba(20, 65, 62, .08);
}
#mh-google-voice .mhgv-card-top {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 15px;
}
#mh-google-voice .mhgv-label {
display: inline-flex;
align-items: center;
min-height: 30px;
padding: 5px 11px;
border-radius: 999px;
background: var(–mhgv-green-light);
color: var(–mhgv-green-dark);
font-size: 12px;
line-height: 1.4;
font-weight: 800;
}
#mh-google-voice .mhgv-stars {
color: var(–mhgv-yellow);
font-size: 18px;
letter-spacing: 1px;
white-space: nowrap;
}
#mh-google-voice .mhgv-card h3 {
margin: 0 0 14px;
font-size: 19px;
line-height: 1.55;
color: #1d2b30;
}
#mh-google-voice .mhgv-review {
margin: 0;
font-size: 15px;
line-height: 1.95;
color: #3e4a4f;
}
#mh-google-voice .mhgv-person {
display: flex;
align-items: center;
gap: 11px;
margin-top: auto;
padding-top: 22px;
}
#mh-google-voice .mhgv-avatar {
width: 42px;
height: 42px;
flex: 0 0 42px;
display: grid;
place-items: center;
border-radius: 50%;
background: var(–mhgv-green);
color: #fff;
font-weight: 900;
}
#mh-google-voice .mhgv-person strong {
display: block;
font-size: 14px;
}
#mh-google-voice .mhgv-person span {
display: block;
margin-top: 2px;
color: var(–mhgv-muted);
font-size: 11px;
}
#mh-google-voice .mhgv-arrow {
position: absolute;
top: 50%;
z-index: 5;
width: 48px;
height: 48px;
padding: 0;
border: 0;
border-radius: 50%;
background: #fff;
color: var(–mhgv-green-dark);
box-shadow: 0 8px 24px rgba(0,0,0,.12);
font-size: 30px;
cursor: pointer;
transform: translateY(-50%);
}
#mh-google-voice .mhgv-arrow:hover {
background: var(–mhgv-green);
color: #fff;
}
#mh-google-voice .mhgv-prev {
left: -24px;
}
#mh-google-voice .mhgv-next {
right: -24px;
}
#mh-google-voice .mhgv-dots {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 8px;
margin: 24px 0 0;
}
#mh-google-voice .mhgv-dot {
width: 9px;
height: 9px;
padding: 0;
border: 0;
border-radius: 50%;
background: #c7d5d3;
cursor: pointer;
}
#mh-google-voice .mhgv-dot.is-active {
width: 25px;
border-radius: 10px;
background: var(–mhgv-green);
}
#mh-google-voice .mhgv-actions {
margin-top: 30px;
text-align: center;
}
#mh-google-voice .mhgv-map-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-height: 50px;
padding: 12px 24px;
border-radius: 999px;
background: var(–mhgv-green);
color: #fff !important;
text-decoration: none !important;
font-size: 15px;
font-weight: 800;
box-shadow: 0 8px 20px rgba(13,118,110,.18);
}
#mh-google-voice .mhgv-map-btn:hover {
background: var(–mhgv-green-dark);
}
#mh-google-voice .mhgv-note {
max-width: 900px;
margin: 18px auto 0;
color: #7b8386;
font-size: 11px;
line-height: 1.75;
text-align: center;
}
@media (max-width: 1024px) {
#mh-google-voice .mhgv-card {
flex-basis: calc((100% – 20px) / 2);
}
#mh-google-voice .mhgv-prev {
left: -12px;
}
#mh-google-voice .mhgv-next {
right: -12px;
}
}
@media (max-width: 680px) {
#mh-google-voice {
padding: 46px 12px;
}
#mh-google-voice .mhgv-heading {
margin-bottom: 24px;
}
#mh-google-voice .mhgv-track {
gap: 14px;
}
#mh-google-voice .mhgv-card {
flex-basis: 100%;
min-height: 340px;
padding: 22px 20px;
}
#mh-google-voice .mhgv-arrow {
width: 42px;
height: 42px;
font-size: 26px;
}
#mh-google-voice .mhgv-prev {
left: -6px;
}
#mh-google-voice .mhgv-next {
right: -6px;
}
}
</style>
<div class=”mhgv-inner”>
<header class=”mhgv-heading”>
<p class=”mhgv-kicker”>CUSTOMER VOICE</p>
<h2 id=”mhgv-title”>お客様の声</h2>
<p class=”mhgv-lead”>
Googleマップへ寄せられたミニクルホームのお客様の声を、
プライバシーに配慮して一部抜粋・匿名化してご紹介します。
</p>
</header>
<div class=”mhgv-slider” data-mhgv-slider>
<button
class=”mhgv-arrow mhgv-prev”
type=”button”
aria-label=”前のお客様の声へ”>
‹
</button>
<div class=”mhgv-viewport”>
<div class=”mhgv-track”>
<!– 口コミ1 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>正直な物件説明</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
まさに正直不動産。注意点まで教えてくれました
</h3>
<p class=”mhgv-review”>
まさに正直不動産。気になっていた物件について、
事故物件であることや管理面の注意点なども教えてくれました。
安心して物件探しを任せられました。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>A</span>
<div>
<strong>ご利用者A様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
<!– 口コミ2 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>入居・退去の対応</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
入居時も退去時も丁寧に対応してくれました
</h3>
<p class=”mhgv-review”>
入居時も退去時も丁寧に対応してくださり助かりました。
LINEでの対応も文字に残るので、
電話だけより確認しやすいです。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>B</span>
<div>
<strong>ご利用者B様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
<!– 口コミ3 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>難しい条件の部屋探し</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
難しい条件でも迅速かつ柔軟に対応
</h3>
<p class=”mhgv-review”>
難しい条件の中、迅速かつ柔軟な対応で、
ようやく住めるところが見つかりました。
不安なこともLINEで相談できて助かりました。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>C</span>
<div>
<strong>ご利用者C様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
<!– 口コミ4 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>遠方からの引越し</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
遠方からの引越しも丁寧にサポート
</h3>
<p class=”mhgv-review”>
遠方からの引越しで分からないことだらけでしたが、
何から何まで丁寧に対応してくださり、
本当に助かりました。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>D</span>
<div>
<strong>ご利用者D様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
<!– 口コミ5 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>地域情報・物件提案</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
土地の事情も分かり、納得して決められました
</h3>
<p class=”mhgv-review”>
難しい条件での物件探しでしたが、
多数の物件をご案内いただき、
納得して決めることができました。
土地の事情も参考になりました。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>E</span>
<div>
<strong>ご利用者E様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
<!– 口コミ6 –>
<article class=”mhgv-card”>
<div class=”mhgv-card-top”>
<span class=”mhgv-label”>親身な対応</span>
<span class=”mhgv-stars”>★★★★★</span>
</div>
<h3>
借りる側の目線で考えてくれました
</h3>
<p class=”mhgv-review”>
借りる側の目線で考えてくださるので有り難かったです。
気さくな不動産屋さんで、
希望もお願いしやすく助かりました。
</p>
<div class=”mhgv-person”>
<span class=”mhgv-avatar”>F</span>
<div>
<strong>ご利用者F様</strong>
<span>Googleマップの口コミより一部抜粋</span>
</div>
</div>
</article>
</div>
</div>
<button
class=”mhgv-arrow mhgv-next”
type=”button”
aria-label=”次のお客様の声へ”>
›
</button>
<div class=”mhgv-dots”></div>
</div>
<div class=”mhgv-actions”>
<a
class=”mhgv-map-btn”
href=”https://maps.app.goo.gl/kAcBtagKnSdBqHNi7″
target=”_blank”
rel=”noopener noreferrer”>
Googleマップで口コミを見る ↗
</a>
</div>
<p class=”mhgv-note”>
※Googleマップに投稿された口コミの一部を、
意味を変えない範囲で抜粋・匿名化して掲載しています。
口コミは個人の感想です。
</p>
</div>
<script>
(() => {
const root =
document.getElementById(‘mh-google-voice’);
if (!root) return;
const viewport =
root.querySelector(‘.mhgv-viewport’);
const track =
root.querySelector(‘.mhgv-track’);
const cards =
[…root.querySelectorAll(‘.mhgv-card’)];
const prev =
root.querySelector(‘.mhgv-prev’);
const next =
root.querySelector(‘.mhgv-next’);
const dotsWrap =
root.querySelector(‘.mhgv-dots’);
let index = 0;
let timer = null;
let startX = 0;
let diffX = 0;
let dragging = false;
function perView() {
if (window.innerWidth <= 680)
return 1;
if (window.innerWidth <= 1024)
return 2;
return 3;
}
function maxIndex() {
return Math.max(
0,
cards.length – perView()
);
}
function buildDots() {
dotsWrap.innerHTML = ”;
for (
let i = 0;
i <= maxIndex();
i++
) {
const dot =
document.createElement(‘button’);
dot.type = ‘button’;
dot.className = ‘mhgv-dot’;
dot.addEventListener(
‘click’,
() => {
index = i;
update();
startAuto();
}
);
dotsWrap.appendChild(dot);
}
}
function stepSize() {
const first = cards[0];
if (!first)
return 0;
const gap =
parseFloat(
getComputedStyle(track).gap
) || 0;
return (
first.getBoundingClientRect().width
+ gap
);
}
function update() {
if (index > maxIndex())
index = maxIndex();
if (index < 0)
index = 0;
track.style.transform =
`translate3d(${
-index * stepSize()
}px,0,0)`;
[…dotsWrap.children]
.forEach(
(dot, i) => {
dot.classList.toggle(
‘is-active’,
i === index
);
}
);
}
function goNext() {
index =
index >= maxIndex()
? 0
: index + 1;
update();
}
function goPrev() {
index =
index <= 0
? maxIndex()
: index – 1;
update();
}
function stopAuto() {
if (timer)
clearInterval(timer);
timer = null;
}
function startAuto() {
stopAuto();
timer =
setInterval(
goNext,
5500
);
}
prev.addEventListener(
‘click’,
() => {
goPrev();
startAuto();
}
);
next.addEventListener(
‘click’,
() => {
goNext();
startAuto();
}
);
viewport.addEventListener(
‘pointerdown’,
e => {
dragging = true;
startX = e.clientX;
diffX = 0;
stopAuto();
}
);
viewport.addEventListener(
‘pointermove’,
e => {
if (!dragging)
return;
diffX =
e.clientX – startX;
}
);
function finishDrag() {
if (!dragging)
return;
dragging = false;
if (
Math.abs(diffX) > 45
) {
if (diffX < 0)
goNext();
else
goPrev();
}
diffX = 0;
startAuto();
}
viewport.addEventListener(
‘pointerup’,
finishDrag
);
viewport.addEventListener(
‘pointercancel’,
finishDrag
);
window.addEventListener(
‘resize’,
() => {
buildDots();
index =
Math.min(
index,
maxIndex()
);
update();
}
);
buildDots();
update();
startAuto();
})();
</script>
</section>




