KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

「DTM練習会」のあゆみ(2021年~2026年)

皆さんこんにちは。KMC ID: samebat(さめばと)と申します。

この記事では、私が2021年から参加し、運営を引き継いだ、KMC内での「DTM練習会」(パソコンを使って音楽を作る会)の活動内容や変遷を記したいと思います。

私は2022年から2025年までDTM練習会を担当していましたが、その間ブログの更新があまりなされていませんでした。

その理由はシンプルで、私が更新を怠っていたからです。本当にすみません。

しかし、この間のDTM練習会には本当に色々なことがありました。

オンラインから対面へという動きの中で、様々な講座や企画が開かれ、様々な変化が起き、落ち着いて記事を書く暇もありませんでした(本当はあったと思いますが、なかったということにさせてください)。

この記事では、2021年から現在まで、DTM練習会でどのようなことが行われていたか、DTM練習会に何があったのかを、私の視点から記載したいと思います。

2026年新歓の様子

参加に至るまでの経緯(2020~2021)

2020年、大学入学・コロナ禍・一人暮らしを同時に経験した私は、周りに頼れる人がほとんどいない中で、授業は全てオンラインになり、サークルにも入れず、不安や無気力に襲われる日々が続きました。

その時に、パソコンを使って音楽を作る「DTM」を始めました。

2021年、ゲームのBGMが作りたいと思い、京大マイコンクラブに入会しました。

サークル内プロジェクトの1つである「DTM練習会」はオンライン(ディスコード)で開かれていました。

週に1度、作曲や音楽に関心がある人が集まり、講座を開いたり作ってきた曲を聴き合ったりするような会です。

2009年頃から続いており、コロナ前までは対面で活動していたようです。

オンラインでの活動(2022~2023)

2022年から、DTM練習会の担当を任されました。

内容は前例を踏襲し、講座回と鑑賞会を週ごとに交互に行う形式で進めていました。

前期は新入生に向けて作曲ツールの導入から基礎的な音楽理論を教え、後期は持ち回りで参加者それぞれが喋りたいことを喋る、というスケジュールでした。

参加者はちらほらいたものの、オンラインの時代に参加した新入生はその後サークルにあまり定着しませんでした。

サークルの性質として、大学を卒業した後も所属し続けることができるため、2023年から2024年は、大学院生や社会人を中心とした5人前後の固定メンバーによって支えられていました。

この固定メンバーというのは、対面で集まったりせずとも、一人で勝手に曲を作ってしまうような作曲経験者や、音楽への興味が絶えない人たちでした。

オンラインの中でも、実りはありました。経験者が中心のため、少し踏み込んだ内容の話をしたり、参加者の持ち回りで講座を開いたりすることもできました。

長年参加していたメンバーは、オンライン時代を生き延びた老兵としての一体感が生まれました。

対面化の構想とオンライン活動の中断(2024)

2024年は、少し変化がありました。

サークル内で活動を対面中心にしようという動きが出始め、DTM練習会でも新歓講座を対面で行いました。

新歓講座では、DTMを体験してもらうような会を開きました。日程は一日のみでした。

しかしその後、前期の練習会を開くことはできませんでした。

理由は大きく2つありました。

1つは、私が大学院に入り、授業が忙しくなったこと。もう1つは、私がオンラインでの活動に慣れきってしまい、対面で活動することが億劫になってしまっていたことです。

対面でやらなきゃ、という意識はずっとあったものの、今までのオンラインでの活動はどうするか、ハイブリッドでの開催ができないかなど、色々なことを考えてしまい、なかなかタイミングがつかめず、その影響でオンラインの方も開催を中断していました。

新しい人も入ってきてはいたのですが、継続的な参加には及ばず、練習会を引き継げる若手がいないという問題もありました。

DTM練習会は、オンライン活動によって高齢化が進んでいることが徐々に明らかになっていきました。

2024年の後期から、とりあえず対面での開催は置いておいて、これまでのオンラインの練習会を再開しようと思いました。

練習会で定期的に集まり、音楽やそれ以外の他愛のない雑談をすることが、自分の心理的な健康の維持にどれだけ貢献していたかを、中断期間に実感したためです。

2024年後期の練習会は、それまで講座回だったものを自由回として、何か話したいことがある人にはそれを話してもらい、無ければ単に集まって作業をしたり雑談をする時間にしました。

誰かが講座をやらなければいけないという義務感を完全に無くし、目的があろうがなかろうが定期的に集まる場を設ける、ということを優先しました。

対面とオンラインの2軸での活動(2025)

心理的に若干の余裕が出てきた私は、対面での練習会を再開させたいと思うようになりました。

そこで、2025年から、初心者・新入会員向けの対面練習会と、経験者・老兵向けのオンライン練習会を同時に走らせ、2軸体制を取ることにしました。

対面練習会は部室で、オンラインはディスコードで行っています。

ハイブリッドでの開催も考えましたが、経験者が初心者向けの講座を聴くのは釈迦に説法であり、初心者と経験者を分けた方がいいと判断しました。

ただ、完全に分離するのは面白くないので、対面組とオンライン組の交流の機会はたまに設けています。

オンラインは他のメンバーに運営を任せ、自分は対面の方に力を入れました。

対面練習会では、講座回と鑑賞会を週ごとに交互に行い、制作は各自でやってくる、というそれまでの形式ではなく、講座・制作・鑑賞を1日のうちにその場で行うプログラムに変更しました。

1人で家で曲を作ってこれるのは限られた人であり、その場で手を動かすということが初心者には何より重要だと実感したためです。

練習会後は近くのご飯屋さんに行くのが通例となっており、コロナ禍以前のような状況に戻ってきたと言えます。

担当者の引き継ぎ(2026)

2025年の対面練習会で、熱心な新入生が定着してくれたので、担当を引き継ぎました。メインの講座はその後輩に任せ、自分はその補佐役に回りました。

全ての講座をいきなり1から作り上げるのは困難なため、2025年度のスライドはすべて共有しました。応用的な講座をする際だけ自分が前に立ちました。

練習会が今後も続いていくためにも、自分が何年も担当している状況は良くないと思っていたため、今回引き継げたことは幸運でした。

おわりに

コロナ禍をきっかけにオンラインでの活動が定着し、そこから対面活動を復活させることは、かなりのエネルギーを必要としました。

しかし、時間とともに心理的な余裕が生まれ、周囲の助けも借りながら、対面とオンラインという2軸の活動形態に落ち着かせることができました。

2009年頃から続くDTM練習会は、DTMをやってみたい、音楽の話がしたいという参加者の熱量によって支えられてきたと思います。

この先どのような変容を遂げるのかは分かりませんが、来る者拒まず去る者追わずの精神で、その時々でやりやすい形を模索し、試行錯誤していただきたいと思います。

今後とも、DTM練習会をよろしくお願いいたします。また、DTMに興味がある方がいらっしゃいましたら、ぜひ覗きに来ていただければと思います。

おまけ「2021年~2026年の講座・企画一覧」

DTM練習会では、その年の担当者のみならず、それぞれに多種多様な関心を持つ沢山の参加者が講座や企画を開いています。

ここ5年間のDTM練習会でどのような活動が行われていたかを、以下に記したいと思います。何らかの参考になれば幸いです。

2021年

DTM練習会(前期)

  • 初回説明(domino)
  • メロディーの話
  • コードの話
  • リズムの話
  • 耳コピの話
  • DAWの話

夏休み

  • オンラインコンポージング大海

DTM練習会(後期)

  • sasakure.UK学入門-メロディとコードの観点から「ささくれ節」を考察する-
  • サンプル学入門
  • かわいいは正義
  • 曲構成と曲分析の話
  • アニソンbootlegの話
  • リズム学入門
  • 조선음학은 좋아(朝鮮音楽はいいぞ)

DTM練習会extended

  • もちーふ?みたいな何かのお話
  • 最近のボカロ事情
  • メロディーの理論

BGM練習会

  • お題「雨」
  • お題「遊園地」
  • お題「最初の町」
  • お題「王道RPGの通常戦闘曲」
  • お題「あるイラストに合った世界観のフィールド曲」
  • お題「好きなキャラクターを選んでそのキャラクターのテーマ曲を作る」
  • お題「前回選んだキャラクターとの戦闘曲」
  • お題「港町」
  • お題「スタッフロール」

2022年

DTM練習会(前期)

  • 初回説明・環境構築(domino)・自己紹介
  • メロディーの話
  • コードの話
  • リズムの話
  • 耳コピの話
  • DAWの話
  • 前期のまとめの話

DTM練習会(後期)

  • わくわくパーカッションタイム
  • どきどきパーカッションタイム
  • 合唱について
  • 吹奏楽の話をしちゃう!
  • 創作活動の方法と精神(音楽を中心に)

夏休み

  • 鑑賞会
  • お歌詞会(歌詞に関することを各々話す会)

春休み

  • 鑑賞会
  • 春をテーマにした曲を作ろう(春じゃなくても可)
  • すごい勢いで自分語りをするだけ
  • なんかしっくりこない時にやるやつ

2023年

DTM練習会(前期)

  • DTM超入門
  • 初回説明・自己紹介
  • メロディーの話
  • コードの話
  • リズムの話(ベースとドラム)
  • 編曲の話
  • ミックス・マスタリングの話
  • 前期のまとめの話

DTM練習会(後期)

  • 気になっている音楽
  • キリンジのエイリアンズの歌詞
  • NewJeansのDittoについて
  • 音楽に関すること色々
  • マリオカート8DXの曲を聴く
  • フュージョンって何

夏休み

  • 鑑賞会

BGM練習会

  • お題「最初の町」
  • お題「汎用イベント曲:哀愁」
  • お題「雪の遺跡」かつ「ラストダンジョン」

2024年

新歓

  • DTMをやってみよう!(全2回、対面)

夏休み

  • 曲布教会

DTM練習会(後期)

  • 初回説明
  • 動画鑑賞「口琴とは / 演奏動画 ほか」
  • 鑑賞会&自由回

DTM練習会Extended(春休み)

  • 鑑賞会&自由回
  • お歌詞会(歌詞に関することを各々話す会)

2025年

新歓

  • 導入編
  • メロディ・コード編
  • ドラム・ベース編
  • 応用編

対面DTM練習会(前期)

  • 初回説明・自己紹介・DAWの導入(Waveform free)
  • 4536進行(王道進行)、6つの基調和音
  • 6451進行(小室進行)、ドラム・リズム
  • カノン進行、ボイシング、ベース
  • 4361進行(丸サ進行)、クオリティチェンジ、セブンスコード
  • 2516(ツーファイブワン)、機能和声(トニック・ドミナント・サブドミナント)
  • 今までのコード進行を使って曲を1コーラス作ってみよう!

夏休み(ハイブリッド)

  • SoundQuestを読む会(序論、準備編、メロディ編Ⅰ章)
  • DTMLT大会

対面DTM練習会(後期)

  • ボカロの調声について
  • 戦闘曲を作る
  • シンセであそぼう
  • 3拍子の曲を作ろう
  • みんなの曲を聴き、ギターを触る
  • magical 8bit plugをいじろう(チップチューンの作り方)
  • NFお疲れ様会(ご飯を食べに行くだけの会)
  • クリスマスっぽい曲を作ろう!
  • ケンタッキーを食べる会
  • ケーキを食べる会→クリスマスパーティー2025と合同開催
  • 正月っぽい曲を作る
  • 来たい人が来てしたいことをする(テスト期間)
  • ただ集まってご飯を食べに行くだけの会

春休み(対面・ハイブリッド)

  • かっこいいメロディのつくりかた
  • コードを決めて作曲
  • ステムを見る
  • 耳コピ
  • 編曲について考える会(プロジェクトファイルを見る)
  • きらきら星をアレンジしよう
  • チューリップをアレンジしよう
  • サウンドクエストを読む(古典派1~3)
  • クラシックっぽい曲を作ろう→chiptuneを作ろうに変更
  • ちょうちょをアレンジしよう
  • マルチリレー作曲
  • DTMLT大会

オンラインDTM練習会

  • 自己紹介の会(ハイブリッド開催)
  • オーケストラの本 を読む
  • コード進行100個聞く
  • Cubaseの知らねー機能
  • 本気の作業
  • コード感しみこませ祭り(おためし)
  • 曲聞いてしゃべる
  • 好きな曲聞かせまくり大会

2026年(8/26時点) 新歓

  • 導入編
  • メロディ・コード編
  • ドラム・ベース編
  • 応用編

対面DTM練習会(前期)

  • 初回説明・自己紹介・DAWの導入(Cakewalk Sonar)、4536進行(王道進行)、コード(基本)
  • 6451進行(小室進行)、ドラム・リズム
  • カノン進行、転回形とボイシング、ベース
  • 4361進行(丸サ進行)、ノンダイアトニックコード、セブンスコード
  • 2516(ツーファイブワン)、機能和声(トニック・ドミナント・サブドミナント)
  • 今までのコード進行を使って曲を1コーラス作ってみよう!

夏休み

  • サウンドクエスト実践
  • シンセの使い方
  • ステム解剖で遊ぼう→スイカ割りに興じたため消滅
  • 音楽のあれこれを語る(好きな音楽、音楽遍歴、アコギの奏法など

オンラインDTM練習会

  • よく名前聞くリズム、よく名前聞くコード
  • 音源モジュール年表を眺める
  • 家庭用ゲーム機の内蔵音源
  • なんかスケールの話
  • 「洞窟」の曲を書いてくる
  • 本気の作業
  • メロディーについて語る会

キュアアルカナ・シャドウが「シャッフル」するときの分散和音を再現する

みなさん初めまして。KMC-ID: samebat(さめばと)と申します。 KMCでは主にDTM練習会に関わっています。

友人の影響で見始めたアニメ「名探偵プリキュア!」にハマっており、毎週の放送を楽しみにしています。

今回は、「名探偵プリキュア!」に登場するキュアアルカナ・シャドウの変身バンクで、効果音として鳴っている分散和音を再現してみたいと思います。

該当シーン

該当するシーンは、0:19あたりから始まります。

youtu.be

キュアアルカナ・シャドウが「シャッフル」と言った後、ティアアルカナロッドの上部にあるカード型の装飾を、手でくるくると回します。

この動作が3回行われるのですが、その際に効果音として分散和音が、低音から高音に向かって鳴っています。

3回の分散和音はすべて異なっており、後ろで鳴っている伴奏と合わせて聴くと、1回目と2回目は心地よく聞こえ、3回目はぶつかっているように思います。

これらの分散和音を再現して、どのようなスケールに位置しているのか、後ろの伴奏と合わせた際にどのような効果を持っているのかなどを分析してみます。

方法

解析にはWaveToneを使います。音源の中で、どのピッチが強く鳴っているかをサーモグラフィーのように表示してくれるフリーソフトです。

WaveToneでおおよそのあたりをつけた後は、自分のきらめき(音感)に従ってDAW上で再現していきます。

1音1音が細かく、エフェクトもかかっているので、今回は実際に聞こえてくる音を頼りにして、簡略に再現しました。

それぞれに、再現した音声ファイルと、音を確認する用の楽譜も掲載しています。

1回目

soundcloud.com

音名表記だと、「ミシレミラレファ#」となります。

ミラレという4度の幅が、神秘的な印象を与えているでしょうか。

伴奏ではCM7が鳴っています。

分散和音はCM7のアヴェイラブルなテンションになっているため、調和しています。

2回目

soundcloud.com

音名表記だと、「ソ シ♭レミソ シ♭レミソ シ♭レミソ」となります。 

1回目よりも長くなっていますね。

分散和音はGm6のコードトーンとなっており、雅で冷たい印象があります。

伴奏のB♭M7とも親和性が高く、こちらも調和して聴こえます。

3回目

soundcloud.com

音名表記だと、「レミラドレ ミファ#ラド ミファ#ラド ミファ#ラレファ#」となります。

分散和音はD9のコードトーンとなっており、力強く展開する印象があります。

この場面、伴奏はCからC#に移行しています。

Cと分散和音は親和性が高いですが、C#と分散和音はかなりぶつかります。

前半部のCでの親和性を考慮し、C#からは伴奏に受け渡すような構造になっているでしょうか。

全体

3回の分散和音を通して聞いてみましょう。

今回は、伴奏もついています。(ボイスはVOICEVOXの四国めたんを使用)

soundcloud.com

だいたい合ってそうな雰囲気を感じます。

変身バンク最後の分散和音

変身バンクの一番最後にも分散和音は鳴っており、それも再現したいと思います。

soundcloud.com

「ファソラ♭ドレ」を4回繰り返しています。

これは「雲井ペンタトニック」と呼ばれるスケールです。

エキゾチックで雅な印象が感じられ、変身完了のSEとしてばっちり決まっていると思います。

終わりに

伴奏とSEがどのようなワークフローで制作されているかは分かりませんが、1回目、2回目のハーモニクス上の親和性は意図されたもののように思われます。

3回目は直後にブラスのメロディが入ってくるので、伴奏への受け渡しが考慮されているかもしれません。

みなさんも、分散和音の響きを味わいながら、変身バンクを見てみてはいかがでしょうか。

おまけ

変身バンク全体を雑に耳コピしたものも置いておきます。

soundcloud.com

確定コンを実施しました!

こんにちはあるいはこんばんは、id:taitai1207、kmc-id:鯛鯛です。 KMCの2か月にわたる新歓の締めである確定コンの様子を書き連ねようと思います。

2026年度の新歓

今年もたくさんのイベントが開催されました。新2回生の興味関心度合いが今ブームでもある機械学習に向いていたこともあり、機械学習関連の新歓イベントが多く行われていた印象があります。

今年もたくさんの新入生が入部してくださりめちゃくちゃ感謝です。

これは部員の方が作ってくれた新入部員の過去四年の遷移を示しているグラフです(6/16時点)。

40人近くの部員が入ってくれて嬉しいです(こうしてみると去年はすごいですね)。

確定コン

本題に入ります。今回は八瀬の里(詳細はこちら)というところでBBQを行いました。

新入生19人と49代14人が参加してみんなでBBQをしました。人数の関係で48代以上の方々は参加できない事態になっていたのが少し残念でした。

BBQの内容

手ぶらBBQセットにソフトドリンクをつけるといったセット内容で楽しみました。

お肉は鶏肉と豚肉の2種類あって、野菜や枝豆などあってたくさん食べられて満足でした(筆者はBBQにいったとき病み上がりだったので食べられる量がいつもより少なくなっていたので参考になるかは微妙ですが)。焼きそばセットも用意されていて結構食べ物のバリエーションは多かったです。

あと飲み放題で瓶コーラやラムネ、オレンジジュースなどを飲めて素晴らしかったです。栓抜きとか全然経験なかったので最初は苦戦していました。

全体的に満足でした。

確定コンの様子

新入生と49代がたくさん交流できてよかったなと思っています。僕は近くにいた新入生とは新歓期に結構話をしていたのでかなり苦難していました。隣以外のテーブルの様子はそこまで把握していませんが、みんないっぱい食べたり飲んだり話したりしていました。隣の部員は新入生にいろいろなことを吹き込んでいてすごいなぁと感心?していました。

あとは室内BBQだったのもあってか、かなり暑かったです。通路で涼んでる新入生や部員もいたし、最後のほうではBBQ会場の外に出ている人もいました。

締め

これからKMCの活動も本格的になっていくので、たくさんのことに触れてがんばっていきます!

KMC内でのGameJamを開催しました!第一回!

こんにちは! id:autamnpoteto こと、KMC ID:akinooimoです。

KMCでは毎年「みんなでゲームを作る!(通称:みんげー)」というプロジェクトで、11月のNF(京都大学十一月祭)での展示に向けてゲームを開発しています!

(例年の様子は、KMCの公式サイト よりご覧ください)

そこから時は流れて3月。ちょうど春休みの時期のこと。 「みんげー以外でも、みんなでゲームを作るイベントをもう一度したい!」という動きが、当時の1回生を中心に起こり始めました。

そして、新たな試みとして……

🚀 KMC内ゲームジャム第一回を開催しました!

まずは「ゲームジャムって何?」という方のために簡単にご説明します。


💡 ゲームジャムとは?

出された「テーマ」に沿って、限られた時間(今回は5日間!)の中でイチからゲームを作り上げる、ゲーム開発のお祭りです! 大学内やネット、はたまた世界規模のものまで、本当に色々な場所で開催されています。

❓ 今回のゲームジャムの規模は?

記念すべき初回となる今回のサークル内ゲームジャムには、なんと約14名が参加してくれました!

それぞれの特技や開発経験などをもとに、今回は2チームに分かれて開発を進めることに。 ほぼ全員が「みんげー」での開発経験者でしたが、それ以外にも独自に制作を積んできた強者たちも多く参加してくれました!

❕ 記念すべき第一回のテーマは「破壊」

このお題をもとに、みんなでアイデアを出し合って開発がスタート! 開発は部室+DiscordのKMCサーバーで行われ、時に熱い会議をし、時に雑談を交わしながら、賑やかに開発を進めていきました!


🎮 無事に完成したゲームを紹介!

怒涛の5日間を駆け抜け、両チームとも無事にゲームを完成させることができました! それぞれのチームが生み出した、個性豊かな完成作品を紹介させていただきます。

🥊 1.「アラームブレイカー アラレちゃん!」

アラレちゃんが目覚まし時計をひたすらぶん殴る、白熱のQTEアクション!

  • 参加メンバー: Yukun1107, biuntri, creeamsoda, taitai, akkey, chocomimi

かなりのQTE能力(画面の指示に合わせた素早いボタン入力)が求められ、絶妙な制限時間にドキドキが止まりません。 また、アラレちゃんが時計を殴るアニメーションの可愛さも、ぜひ見てほしいポイントです!

こちらは unityroom にて公開中ですので、今すぐ実際に遊んでいただくことができます!

アラームブレイカー アラレちゃん! | フリーゲーム投稿サイト unityroom


🃏 2.「slay the spaire 3D」

襲い来る敵にカードをぶん投げて倒す、爽快物理カードアクション!

  • 参加メンバー: imai, nora, harumaki, akinooimo, epen+アールグレイ伯爵

少し油断するとすぐ倒されてしまうので、1秒も気が抜けないハラハラしっぱなしのプレイ体験! 絶妙に愛嬌のある敵に、カードをガンガンぶん投げる快感を得られるのはこのゲームだけです! (※こちらは残念ながら unityroom には公開されていません……!部室などでぜひ!)


🐙 試遊会 兼 打ち上げの様子

最後の5日目には、完成したゲームの試遊会を兼ねた打ち上げを開催しました!

ゲームを作った人もそうでない人も集まり、みんなでたこ焼きパーティーを決行!

開発中のトラブルや裏話で大笑いしながら、自分たちの作ったゲームやお互いのゲームをプレイし合い、最高に盛り上がった時間になりました。


✨ おわりに:是非遊んでみてね & NFも見に来てね!

今回、メンバーが全力で駆け抜けて作ったゲーム(アラレちゃん)は、以下のリンクから実際に遊ぶことができます。ぜひプレイしてみてくださいね!

👉 アラームブレイカー アラレちゃん!をプレイする(unityroom)

そして、KMCでは毎年秋のNF(十一月祭)にて、部員が制作したゲームの試遊・展示を行っています! 一般の方の来場も大歓迎ですので、ぜひ私たちのサークルの作品を遊びに来てください!

参加したメンバーのみなさん、本当にお疲れ様でした!また次回のゲームジャムでお会いしましょう!

変愚蛮怒をブラウザで遊べるようにしてみました

id:hanazukiです.わたしがKMCに入部したころは,いつ部室に顔を出しても決まって同じ人が奥の部屋のこたつに座っていて,その先輩はゲームを作っているんだか遊んでいるんだか専攻は何なのかどこに住んでいるのかよく知らなかったのですが,とにかく後輩の面倒見がよく,わたしは先輩の作ったり遊んだりしていた変愚蛮怒へんぐばんどというゲームを教えてもらいました.変愚蛮怒はローグライクと呼ばれる種類のロールプレイングゲームで,ターミナル上で動くように全てが文字で表現されています.@が主人公,pが人間,oがオーク,緑の#が木,青い~が水溜まりといった具合です.

変愚蛮怒のプレイ画面: はじまりの街は~#に囲まれ,宿屋や商店が立ち並ぶ.通りには野犬Cがうろついているのが見える.街の外には鬱蒼とした#が広がり,小山^の麓には洞窟>もあるようだ.何か邪悪な者たちの根城になっているに違いない.

何かオプションを付けてビルドすると,文字の代わりにモンスターの画像を出したりもできるらしいですが,やったことがないので詳しくは知りません.文字をじっと見ているとだんだん人間やオークや森や池に見えてくるので,特に支障なくいつもテキストモードで遊んでいます.

初めにチュートリアルとして受けられる「もの言えぬ証人 (Dump Witness)」クエストでは冒険者が家の中で不審死しているので様子を見てこいと言われます.実はこの家の間取りはKMCの部室を模していて*1,酔っぱらいの薬*2の横に転がってる屍は部員なんだよ*3……なんてセールストークを先輩から聞かされて*4,確かにお風呂場に箱が積んである*5し,バルコニーに殺人蜂もいる*6と興味を惹かれて遊び始めました*7

当時のKMCの計算サーバにはこのゲームがインストールされていて,自宅や大学にいるときも部室にSSH接続して冒険をしていたものでした.他に遊んだことがあるローグライクは『わくわくぷよぷよダンジョン』と『チョコボの不思議なダンジョン』シリーズくらいなもので,ローグライクというものにそこまで詳しいわけでも愛着があるわけでもないのですが,変愚蛮怒はいまでも時折ふと遊びたくなります.

今は部室のサーバにはインストールされていないし,SSHの時代でもないので,もうちょっと手軽に遊べるようになるといいなーと思って,ブラウザで動くようにしてみました.現時点では,昨日リリースされた3.0.2-beta3をベースにしていて,バージョン3.0系列のベータ版を追いかけるように更新をしてゆくつもりでいます(変愚蛮怒の開発チームとは完全に独立した試みです).ゲーム内容には手を加えていないので,公式のスコアサーバーに墓標を立てられるようにもしています.オフラインでも遊べるはずなので,旅のお供にもどうぞ.

ブラウザ版はプログレッシブウェブアプリ(PWA)になっていて,ブラウザで「アプリをインストール」(Chrome, Edge)や「ドックに追加」(Safari)などの操作をしてもらえば,^nなどを含むほとんど全てのキー操作を使えるようになります.もしおかしな挙動があれば,ヘルプメニューからフィードバックを送ってもらえると助かります*8

変愚蛮怒本体はC++で書かれているのでEmscriptenでWebAssemblyにコンパイルして,SvelteとXterm.jsで書いたフロントエンドにcursesのインターフェイスをでっち上げて繋いでいます.セーブデータや設定はIndexedDBに保存するようになっていて,設定のエクスポート・インポート機能をおいおい実装したいと思っています.Windows版に使われているBGM・効果音もWeb Audioで再生するようにしてみました.これまでSSH越しに遊んでいてもちろん音はなかったので新鮮な感じがしますね.スコアの投稿にはlibcurlが使われていましたが,fetch APIに差し替えています.

ソースコードはGitHubで公開しています.変愚蛮怒オリジナルからの差分は,オリジナルと同じMoria/Angbandライセンスに加えて,将来OSS化したくなったときに備えてMITライセンスのデュアルライセンスとしますが,現状で全体としてはより制約が厳しい方のMoria/Angbandライセンスになります.

*1:連中は学外の木造アパートを隠れ家にしているらしい.

*2:20歳未満の部員が酔っぱらいの薬を飲んだら牢屋行きになる.

*3:朝に部室へ行けば転がっている部員を見ることができるそうだ.

*4:噂を信じちゃいけないよ.

*5:浴槽の底には古代のアーティファクトが眠っているらしい.

*6:通常,バルコニーに巣食っているアシナガバチは部員を殺害しない.

*7:変愚蛮怒は常習癖がつきやすい.君はもう手遅れだ.

*8:多少のバグでも報告してほしいそうだ.

京都最強の通りをPageRankで決めたい

こんにちはこんにちは、 id:crashrt です。

京都の交差点って命名規則が面白いですよね。 四条河原町とか河原町三条とか、多くの場合は交差する通りの名前を組み合わせたものになっています。 そしてどうやら大きな通りを先にすることが多いみたいです(河原町通よりも四条通の方がでかい、みたいに)。

交差点名から通りの強さを決めたい

交差点名から勝敗が分かるなら、当然「京都最強の通り」が気になってきます。 四条河原町と河原町三条という交差点の名前から、四条>河原町>三条、みたいな順番を作るというのを続けたらランキングができそうです。 実際には他にも順番を決める要素がありそうですが、それらを全部無視して交差点名だけで勝敗を決めたらどうなるのか、というのは気になります。

忘れないうちに一旦KMCのSlackに書いておきました。 KMCには部員ごとにmemoチャンネルというものがあり、ここでは各々自由気ままに発言をしています。 一般的にはtimesとか呼ばれているやつですね。 今回もいつものごとくmemoチャンネルに雑に書き込んでいました。

単純なランキングは作れなかった

すると部員からコメントが来ました。 七条堀川 / 堀川五条 / 五条大宮 / 大宮七条みたいなサイクルがあって推移律が壊れているみたいです。 簡単には順序を決められなさそうですね、残念...

しかも調べてみると、三条御前 / 御前通四条 / 四条河原町 / 河原町三条という別のサイクルもありました。 思ってたより入り乱れている...

そんな話をしていると色々と最強候補の情報が集まってきました。これは最強を見つけたい。

他にも京都の通りに関する知見が集まってきました。

PageRankで強さを決める

最強を決めるからには評価基準を決めないといけません。 一番シンプルなのは順番に並べることだったのですが、推移律が壊れていたので断念。 他には勝敗数とかもありますが、四条とか河原町に勝つのとそこら辺の通りに勝つのが同じ点数なのはちょっと違う気がします。

強い通りに勝ってる通りはより強い、みたいなことができると嬉しいわけです。 なんか強いページにリンクされているページは強い、という構造に似ていますね。 ということでweb検索で有名なPageRankというアルゴリズムを採用することにしました。 情報検索の講義で習ったのが懐かしい。

PageRankは、ざっくり言うと「点数が矢印の向きに流れていく」という感じです。 「負けた通り」→「勝った通り」に矢印を張ると、勝った通りに点数が集まります。 たくさん点数を持っている通りから流れてくる点数は大きいので、「強い通りに勝った通りはより強い」という雰囲気を反映できます。

また、実際のPageRankでは点数の一部を全体に配り直すような処理も入っています。 そのため、今回のようにサイクルがあったり、負けていない通りがあったりしても、とりあえずいい感じに点数を計算できます。

今回のルール

改めてルールを整理しますが至ってシンプルで「交差点で先に名前が来る方が勝ち」です。 百万遍みたいな交差点は引き分けとして扱い、勝敗のカウントには入れません。 もちろん実際の交差点名の順序は様々な要素で決まっていると思いますが、今回はそのあたりの事情をすべて無視し、「名前で先に来たら勝ち」という雑なゲームとして扱います。

なお、交差点名の表記には多少の揺れがあります。 今回は Google Maps の表記を優先し、次に信号、最後に近くのバス停名を見る、という雑な優先順位で決めました。 なので「本当はそっちじゃなくない?」というケースはたぶんあります *1

ランキングに参加させる通りはかなり雰囲気で選んでいます。 東西/南北の長くて交差点名になるくらいの大きな通り、という感じなので網羅性はありません。 厳密に選んだ訳ではないのでランキングも細かい部分は色々揺れると思います...

実装

ということで実装しました。Codexが。

GitHub - kmc-jp/kyoto-street-rank: 京都で最強の通りを見つけたい · GitHub

やってることはとてもシンプルです。 通りと交差点をSQLiteで管理して、そこからグラフを作り、NetworkXでPageRankを計算する、という感じです。 弱い通りから強い通りに点数を渡すようにしたいので、各交差点について「弱い通り」→「強い通り」の向きにエッジを張っています。

あとはデータベースを操作したり結果を確認するためのいい感じのWeb UIを作ってもらいました。 こういうのがサクッと作れるのはCoding Agentの良い部分ですね。

交差点一覧画面

交差点追加画面

西大路通が最強だった

結果は1位が西大路通、2位が葛野大路通、3位が高辻通となりました。 四条通とか河原町通、烏丸通、堀川通あたりの強そうなとこがTOP3に全く入らないのはちょっと意外ですね。

ランキング全体は以下の表のような感じでした *2

順位 通り PageRank 勝利数 敗退数 勝敗差
1 西大路通 0.080767 6 0 6
2 葛野大路通 0.078373 5 1 4
3 高辻通 0.077880 1 5 -4
4 四条通 0.077449 4 4 0
5 九条通 0.072799 6 2 4
6 七条通 0.068038 5 5 0
7 烏丸通 0.062804 9 2 7
8 河原町通 0.048416 7 3 4
9 堀川通 0.048103 8 2 6
10 大宮通 0.043909 3 7 -4
11 壬生川通 0.040963 2 3 -1
12 五条通 0.039209 4 6 -2
13 東大路通 0.033690 4 0 4
14 御前通 0.027723 1 5 -4
15 八条通 0.027659 2 3 -1
16 千本通 0.022212 4 3 1
17 白川通 0.021610 3 0 3
18 三条通 0.021310 2 7 -5
19 下鴨本通 0.018789 2 0 2
20 北山通 0.016597 1 3 -2
21 北大路通 0.016597 1 5 -4
22 今出川通 0.016597 1 5 -4
23 丸太町通 0.015978 1 5 -4
24 油小路通 0.011265 0 2 -2
25 御池通 0.011265 0 4 -4

ちなみにグラフはこんな感じです。 矢印は「負けた通り」→「勝った通り」の方向、色はPageRankを表していて赤 > 黄 > 青の順で強いです。

四条とか五条とか九条とか広い通りに勝ちまくってる西大路通はやっぱり強いですね。 東大路通も同じく無敗ではあるのですが、四条とかとは引き分けなのであまり点数を稼げなかったみたいです。

面白いのが高辻通で、勝敗数は1勝5敗なのですがPageRankでは3位になっています。 これはSlackで出てきた

四条と五条の両方に勝ってるのが西大路と葛野大路だけで、葛野大路は高辻に負けてるという感じ

が理由だと言えそうです。

四条とか五条みたいな広い通りにも勝っている葛野大路は当然強くて、今回も2位になっています。 高辻通はそんな葛野大路に唯一勝っている通りなので葛野大路から流れてくる点数を大きく受け取ることになり、点数が高くなったんだと考えられます。 とてもPageRankらしい結果ですね。

烏丸通や堀川通は勝利数だけ見るとかなり強いのですが、PageRankでは西大路通や葛野大路通ほど伸びませんでした。 単にたくさん勝つだけでなく、「誰に勝ったか」がかなり効いていることが分かります。

おわり

ということで、交差点名だけをもとに雑にランキングを作ってみたところ、京都最強の通りは西大路通ということになりました。 もちろんデータの選び方や交差点名の決め方で結果は変わりそうですが、思っていたよりそれっぽくなったしPageRankらしい動きも見れたのでかなり満足です。

京都の通り、奥が深いですね。

*1:例えば五条大宮は近くのバス停は大宮五条ですが五条大宮としています

*2: PageRankはパラメータとしてNetworkXのデフォルト値をそのまま使ったときの値になっています。

KMCごはん開拓部

こんにちはこんにちは、id:crashrt です。

京都って美味しいご飯屋さんがいっぱいありますよね。 百万遍まわりはもちろん、今出川通の東の方とか河原町三条あたりとか、いろんなところにご飯やさんがあります。 しかも、学生が気軽に行けるような価格帯のお店もたくさんあります。

せっかく京都にいるんだから色々行ってみたい、ということで現在KMCの有志でいろんなお店を開拓しています。 今回はその中でも特に良かったお店を紹介したいと思います。

京大周辺

さい菜ごはん

https://maps.app.goo.gl/oyVg9r3EVP48uaJP6

美味しくて健康的な感じがするの和風の定食がとても良い。学生だと少し安くしてもらえるのもありがたい。

南国サンサン食堂

https://maps.app.goo.gl/5kqYacHvr2vxSMLA9

沖縄のやんばる豚を使った料理が食べれます。生姜焼きがとても美味しかった。 1000円以内で食べれるのもありがたい。

イカヅチうどん

https://maps.app.goo.gl/RFioPyJ71e4BFpVM8

コシ強めのうどんが食べれるうどん屋さんです。開店前の時点で列ができるくらい人気。ちょっと早めに行くのが良さそうです。

本格中華料理 火楓源火鍋 京大店

https://maps.app.goo.gl/BtVcUjTLkoytKqhr6

定番な気はするけど、火鍋が食べれる中華屋さん

平わ

https://maps.app.goo.gl/pL77LcSktXHYwsnw6

カツとかハンバーグとかの定食が美味しかった。天ぷらとか鯛もあるらしい?

河原町三条〜四条河原町

ごはんや 一芯 京都

https://maps.app.goo.gl/aAmqLFEHZitkicaY8

2000円のちょっと良いランチがとても美味しい。 角煮は最高でした。鯛めしも良いらしい。大人気ですが平日の11時に行ったら割とスムーズに入れました。

京都ダイニング正義

https://maps.app.goo.gl/bYSDMC6crV4eurm8A

平日の昼なら1100円で美味しいステーキが食べれちゃうお店。 お肉好きな人はぜひ!

京都寺町 鯛めし槇

https://maps.app.goo.gl/GvVAiwYzyxv1Myx56

宇和島鯛めしが食べれるお店です。一人でも入りやすいのが個人的にはありがたい。

天丼まきの 京都寺町店

https://maps.app.goo.gl/3U6VrNc5sp28mV7i9

よく列ができている天丼やさん。天ぷらがめちゃ美味しいしボリュームもしっかりあります。 17時くらいに行ったら割とすぐ入れたので早めにいくのがおすすめです。

おわり

KMCごはん開拓部の活動を紹介しました。 ちょっと良さげなお店とかは一人では入りづらくても誰かと一緒なら入りやすくてとても良いですね。 散歩中に見つけたところとかSlackでOBに教えてもらったところとか行きたいお店はたくさんあるので、開拓はまだまだ続く予定です。

KMCごはん開拓部は開拓同行者を募集しています。興味のある方はぜひKMCへ!