3.松前城

3.松前城

日本100名城

基本情報

住所 北海道松前郡松前町字松城144番地
電話 0139-42-3060(松前城資料館)
築城年 1854年

営業情報

開館時間 開館時間: 9:00~17:00(入館は16:30まで)
入場料 ●大人(高校生以上)360円  ●小人(小・中学生)240円  ●幼児無料
休館日 12月11日~4月9日(冬期休館)

歴史と概要

松前城(福山城)は、1854年(安政元年)に完成した日本における最後期の日本式城郭です。江戸時代末期、外国船の出没に備えて幕府が松前藩に築城を命じ、松前家17代藩主・松前崇広により5年の歳月をかけて築かれました。当初1606年(慶長11年)に松前慶広が築いた福山館を前身とし、海防強化の必要性から本格的な城郭として拡張・整備されたものです。設計は当時の三大兵学者の一人である高崎藩の市川一学が担当しました。

築城の背景と特徴

幕末期、ロシアなど外国船の日本近海への出没が頻繁になり、特に津軽海峡の警備強化が急務となりました。松前城は海に面した立地を活かし、三の丸に7基、城外に9基の砲台を設置して海防に重点を置いた設計となっています。天守側の内壁には厚い欅板を重ねるなど、砲撃に対する防御も考慮された近代的な築城技術が用いられました。これらの特徴により、松前城は「旧式築城では日本最後のもの」とされています。

箱館戦争と戦いの舞台

完成から14年後の1868年(明治元年)、戊辰戦争の最終局面である箱館戦争において、松前城は重要な戦場となりました。11月5日、土方歳三率いる旧幕府軍が松前城を攻撃し、激しい戦闘の末に城は落城。松前藩兵は城に火をかけて退却し、城下町の4分の3が焼失する大きな被害を受けました。翌年、新政府軍が城を奪回しましたが、明治維新後の1871年(明治4年)に天守などの建物は解体されました。

現在の松前城

復興天守(松前城資料館) 1949年(昭和24年)に火災で国宝だった木造天守が焼失しましたが、町民の強い願いにより1960年(昭和35年)に鉄筋コンクリート製の復興天守として再建されました。内部は松前城資料館として活用され、築城時の資料や古写真、北前船関連資料などが展示されています。
現存する文化財 築城当時から残る唯一の建造物である本丸御門は、国の重要文化財に指定されています。また、本丸御殿の表玄関も当時のまま保存され、本丸御門前の広場に移築されています。

松前公園と桜の名所

松前城址を中心とする約15万平方メートルの松前公園は、「日本さくら名所100選」に選定される北海道有数の桜の名所です。約250種・1万本の桜が植えられ、早咲きから遅咲きまで約1か月にわたって様々な品種の桜を楽しむことができます。特に松前生まれの桜も約100種あり、松前を代表する「南殿」や「血脈桜」の系統など、ここでしか見られない貴重な品種も多数植栽されています。毎年春の「松前さくらまつり」には20万人以上の花見客が訪れます。

見どころと周辺観光

展望スポット 復興天守からは津軽海峡を一望でき、晴れた日には本州も見渡すことができます。天守最上階からの眺望は、北海道最南端の地ならではの絶景スポットとして人気です。
松前藩屋敷 幕末の松前城下町を再現したテーマパークで、武家屋敷や商家など14棟が復元されています。当時の暮らしや文化を体験できる施設として、松前城とあわせて訪れたいスポットです。

文化的価値

松前城は日本式城郭として最後に築城された城であり、近世城郭から近代要塞への過渡期の特徴を示す貴重な遺構です。城跡は1935年(昭和10年)に国の史跡に指定され、本丸御門は重要文化財として保護されています。

アクセス・見学情報

JR木古内駅からバスで約100分、「松城」下車徒歩5分。函館からも直行バスが運行されています。車では函館から国道228号線で約2時間。桜まつり期間中は交通規制があるため、公共交通機関の利用がおすすめです。無料駐車場も完備されています。

アクセスマップ

散歩記録

散歩記録準備中

御城印情報

御城印画像
価格: 要確認(販売あり)
販売場所: 松前城資料館

スタンプ情報

スタンプ画像
設置場所: 松前城資料館(復興天守内)
border-light); } .breadcrumb-nav { font-size: 0.9rem; color: var(--color-text-light); } .breadcrumb-nav a { color: var(--color-text); text-decoration: none; transition: color 0.3s ease; } .breadcrumb-nav a:hover { color: var(--color-accent); } .breadcrumb-nav span { margin: 0 0.5rem; color: var(--color-text-light); } .breadcrumb-nav .current { color: var(--color-text); font-weight: 600; } /* ヒーローセクション - 控えめなサイズ */ .castle-hero { background: var(--color-primary); color: white; padding: 1.5rem 0; border-bottom: 1px solid var(--color-border); } .hero-content { display: flex; align-items: center; justify-content: center; } .castle-title-box { text-align: center; border: 2px solid rgba(255, 255, 255, 0.3); padding: 1rem 2rem; border-radius: 0; background: rgba(255, 255, 255, 0.1); display: inline-block; } .castle-title { font-size: 1.8rem; font-weight: 600; margin: 0 0 0.5rem 0; line-height: 1.2; letter-spacing: 0.5px; } .castle-badge { background: var(--color-accent); color: white; padding: 0.3rem 0.8rem; border-radius: 0; font-weight: 500; font-size: 0.8rem; letter-spacing: 0.5px; display: inline-block; } .castle-badge.zoku100 { background: #27ae60; } /* 2カラムレイアウト */ .two-column-layout { background: var(--color-background); padding: 2rem 0; } .layout-wrapper { display: grid; grid-template-columns: 1fr 320px; gap: 3rem; max-width: 1200px; margin: 0 auto; } /* メインカラム */ .main-column { display: flex; flex-direction: column; gap: 2rem; } /* セクションヘッダー */ .section-header { margin-bottom: 1rem; } .section-title { font-size: 1.3rem; font-weight: 600; color: var(--color-text); margin: 0; padding-bottom: 0.5rem; border-bottom: 2px solid var(--color-border); background: none; } /* テーブル形式の情報表示 */ .info-table { width: 100%; border-collapse: collapse; margin-bottom: 1rem; background: var(--color-background); border: 1px solid var(--color-border-light); } .info-table th, .info-table td { padding: 0.8rem 1rem; text-align: left; border-bottom: 1px solid var(--color-border-light); } .info-table th { background: var(--color-background-alt); font-weight: 600; color: var(--color-text); width: 30%; font-size: 0.9rem; } .info-table td { color: var(--color-text); font-size: 0.9rem; } .info-table tr:last-child th, .info-table tr:last-child td { border-bottom: none; } /* コンテンツラッパー */ .content-wrapper { background: var(--color-background); padding: 1.5rem; border: 1px solid var(--color-border-light); line-height: 1.7; } .content-wrapper h2 { font-size: 1.4rem; font-weight: 600; color: var(--color-text); margin: 1.5rem 0 1rem 0; padding-bottom: 0.5rem; border-bottom: 1px solid var(--color-