131.村上城

131.村上城

続100名城

基本情報

住所 〒958-0837 新潟県村上市二之町(臥牛山)
電話 0254-53-7511(村上市役所生涯学習課文化行政推進室)
築城年 16世紀前期(明応末期頃)

営業情報

開館時間 自由散策(24時間)
入場料 無料
休館日 無休(ただし冬期は積雪のため危険)

1. 村上城の概要

村上城は、新潟県村上市にあった日本の城(平山城)で、別名舞鶴城(まいづるじょう)、本庄城(ほんじょうじょう)と呼ばれています。村上市街地東端にそびえる臥牛山(標高135メートル)の頂に築城され、歴代の村上藩主の居城でした。国の史跡に指定されており、2017年に続日本100名城の一つに選定されました。現在は天守櫓・門などの城郭建造物は存在しませんが、城跡一帯には戦国時代に築かれた竪堀・虎口などの遺構と、江戸時代に築かれた石垣の遺構が混在して残っています。

2. 村上城の歴史

臥牛山に初めて城が築かれた年代は定かではありませんが、戦国時代(16世紀初頭)に、越後揚北衆の本庄時長あるいは息子の本庄房長によって築城されたとみられています。当時は本庄城と呼ばれており、木柵で防御された中世式の城郭でした。永禄11年(1568年)、城主本庄繁長は上杉謙信に反旗を翻し、1年に亘り籠城し、謙信に抵抗しましたが、伊達氏、蘆名氏の斡旋を受け入れ降伏しました。慶長3年(1598年)に村上頼勝が入城し、櫓や堀などの改築を始め、元和5年(1619年)に堀直寄が入城して改築を完成させました。享保5年(1720年)以後は内藤氏が代々城主を務め、明治維新を迎えました。

3. 村上城の構造と特徴

村上城は標高135mの臥牛山に築かれた城で、戦国時代には本庄氏の本拠地として、永禄11年(1568年)の上杉謙信との籠城戦など、幾たびもの戦いが繰り広げられました。江戸時代に入ると、村上氏・堀氏・松平氏らの城主によって城の改造と城下町の建設が行われ、村上城は北越後の中心拠点として整備されました。現在では戦国時代に築かれた竪堀・虎口などの遺構と、江戸時代に築かれた石垣の遺構が混在して残り、その姿が貴重であるとして、平成5年に村上城跡は国史跡に指定されました。

4. 村上城の見どころ

山頂までの道は整備され、約20分ほどで登ることができ、村上のシンボルとして近隣住民はもちろん、観光客もたくさん訪れる名所です。城跡からは村上市街や日本海を一望でき、晴れた日には佐渡島も見ることができます。山頂の本丸跡には石垣の遺構が残り、四ツ門跡では二の丸と三の丸との間にあった通用門の石垣を見ることができます。続日本100名城のスタンプは、おしゃぎり会館、東北電力ネットワーク村上電力センター、村上城跡保存育英会の3ヶ所に設置されており、御城印は村上城三の丸に位置する藤基神社で購入できます。

5. アクセス情報

JR羽越本線村上駅から徒歩約30分でアクセスできます。バスもありますが本数は限られています。村上駅から城跡までは道案内もあり、迷うことなく到着できます。駐車場は城山児童公園付近に無料駐車場があります。ただし、満車の場合は村上市役所や村上市郷土資料館などの無料駐車場を利用できます。入山は自由で24時間可能ですが、冬期は積雪のため危険な場合があります。また、近年クマの出没が確認されており、入山禁止となる場合もあるため、事前に村上市役所への確認が推奨されます。

アクセスマップ

散歩記録

散歩記録準備中

御城印情報

御城印画像
価格: 300円
販売場所: 藤基神社

スタンプ情報

スタンプ画像
設置場所: おしゃぎり会館(9:00-16:30)
東北電力ネットワーク村上電力センター(24時間)
村上城跡保存育英会(9:00-12:00、平日のみ)
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-