わたねこコーリング

野良プログラマ発、日々のアウトプット

2025年第3四半期 プライムビデオで観た音楽系コンテンツ

2025年も残り3ヶ月。どうも最近は長いコンテンツを見る気力が減退気味で、プライムビデオのウォッチリスト消化が全然捗りません。という訳で今回も3本だけですが、ネタバレ御免の音楽系コンテンツ寸評でつ。

Rolling Stone ブライアン・ジョーンズの生と死

初期ストーンズの中核メンバーだったブライアン・ジョーンズのドキュメンタリー。周辺者へのインタビューは、毀誉褒貶のバランスを取るように配置されている印象で、中立的ではあるかも知れませんが制作者のアティチュードが見えてこない気がします。全体的に腰が引けていて薄味というか、物足りない印象。

ナイトクラビング:マクシズ・カンザス・シティ

NY パークサウスアベニューに1981年まであった、ミュージシャンや芸術家の屯するナイトクラブ兼レストランのドキュメンタリー。ウォーホルが通い詰め、NY ドールズ等多くのバンドが巣立っていったので、パンクや UG 専門のイメージがあるけど、J・レノン、G・ハリスン、ミック・ジャガー等メインストリームの大物ミュージシャンも通っていて(暴露話が面白いw)、デビュー直後のキッスも出演してたらしいです。MTV が始まった年に終焉したのも何やら暗示的。

METALCA メタルカ

ロックバンド・ミーツ・ゾンビなカルト風味邦画。本番に弱すぎるロックボーカル女子が野良ゾンビと出会い、そのデスボイスに魅入られて状況を突破して行く… というと魅惑的なプロットのように思っちゃうけど、結論から言うとビミョー… というかハッキリ言って全然面白くない。まず劇中のバンドも音楽も全然メタルじゃないのでまずそこで肩透かしを食らうし、展開や演技も全く振り切れてなく古い邦画のように高湿度でベタベタしてるし、これといって笑う処も無いし、てな感じでさっぱり楽しくないのです。なんだか貶しすぎで後味が悪いので、この映画の魅力を語ってくれる方がいたらコメント欄に反論をそうぞ。

銘柄テキスト選択+ワンアクションで「株探」表示する Chrome 拡張機能を書いてみた

TL;DR

ネット記事をブラウジングしていたら気になる企業や株式銘柄を見かけたので、それについて「株探」や「Yahoo! ファイナンス」等で調べてみた、というユースケースが日常茶飯事的にあります。その時の、テキストをコピー→「株探」等のサイトを開いてペーストして選択、というような作業が煩わしく、コンテクストメニューから「XXX を『株探』で表示」、みたいな Chrome 拡張無いかな… という欲求を何とかしてみたという話です。

作った

という訳で、Chrome 拡張機能は初めてでしたが、書いてみました。と言っても開発物は非常にシンプルで、以下の短い2ファイルだけです。

Chrome 拡張機能には、パッケージ情報を記したマニフェストファイル manifest.json のバンドルが必要なので、まずそれから。こんな感じです↓。実装する機能に応じて、permissions に必要な権限を明記してやるあたりで理解と知識が必要かと。

{
  "manifest_version": 3,
  "name": "クイック株探",
  "version": "0.1",
  "permissions": [
    "activeTab",
    "contextMenus",
    "scripting"
  ],
  "background": {
    "service_worker": "background.js"
  }
}

あともう1つはプログラム本体の background.js 。選択状態のテキストを取得して、それが銘柄コード(0〜9,A〜F からなる4桁の英数字)っぽかったら「株探」の銘柄チャートページへ、そうでないなら検索結果ページを、新しいウィンドウ(タブ)で開くだけです。

// 拡張機能がインストールされたときにコンテキストメニューを作成
chrome.runtime.onInstalled.addListener(() => {
    chrome.contextMenus.create({
        id: "openKabutanWithSelected",
        title: "選択した銘柄を株探で表示する",
        contexts: ["selection"]
    });
});

// コンテキストメニューがクリックされたときの処理
chrome.contextMenus.onClicked.addListener((info, tab) => {
    if (info.menuItemId === "openKabutanWithSelected") {
        // 選択されたテキストを取得し、内容に応じて株探の適切なページを開く
        const selectedText = info.selectionText;
        chrome.scripting.executeScript({
            target: { tabId: tab.id },
            func: (text) => {
                if (/^[0-9A-F]{4}$/.test(text)) {
                    window.open('https://kabutan.jp/stock/chart?code=' + text);
                }  
                else {
                    window.open('https://kabutan.jp/search/?q=' + encodeURIComponent(text));
                }
            },
            args: [selectedText]
        });
    }
});

使い方

  1. 適当なフォルダ(例:quick-kabutan)を作って、上記の2ファイルを保存。
  2. Chromechrome://extensions/ を開く。
  3. 右上の「デベロッパーモード」を ON にする。
  4. 左上メニューから「パッケージ化されていない拡張機能を読み込む」をクリックして、ファイルダイアログにて上記で作ったフォルダを指定して、拡張機能をインストールする。
  5. 適当なウェブページで上場企業名や、その銘柄コードを選択して、マウス右クリックでコンテクストメニューをポップアップさせ、「選択した銘柄を株探で表示する」を選択。

所感

冒頭に Chrome 拡張機能開発は未経験だと書きましたが、以前だとそんな時は調べ物と試行錯誤で結構な時間を取られたもんですが、今は AI 先生が全部代行してくれる勢いで助けてくれるので数時間で済んでしまいました。便利さを実感するとともに危機感もヒシヒシと感じてますw

尚、開発物一式を Chrome ウェブストアで配布することも考えたのですが、特定企業のウェブサイトに誘導するアプリがレギュレーション的に問題ないのかの確認をはじめ、諸作業が面倒そうだったので今回は見送りました。この記事への反応次第では、汎用性を持たせる方向でレベルアップさせ、ストア公開を目指しても良いかなーと思ったりしてます。

2025年第2四半期 プライムビデオで観た音楽系コンテンツ

バイオグラフィー:KISSTORY 地獄の軍団

2023年のファイナルツアーをもって活動を停止した KISS の軌跡を追ったドキュメンタリー。前後編合わせて3時間弱と見ごたえあり。ジーン・シモンズとポール・スタンレーがバンドの柱であることは何となくレベルで知っていましたが、ここまで深い絆で結ばれていたとは。持続力で言えば、レノン=マッカートニーをとうに超えています。渇望した成功の果てに、正気を保てず壊れていったエース・フレーリーとピーター・クリスを責める気にはなれず、よくもまぁ忍耐して踏みとどまれたものだと、誰もがジーンとポールを称賛したい気持ちになるのでは。オリジナルメンバー達と現メンバーのトミー・セイヤー、エリック・シンガーに加え、デイヴ・グロール(フー・ファイターズ)、トム・モレロ(レイジ・アゲインスト・ザ・マシーン)のインタビューもツボを押さえていてイイですねー。

D.O.A.(字幕版)

セックス・ピストルズの米ツアー映像を中心にした、ロンドンパンクの最盛期を伝える作品(1981年)。ナレーションやアーティスト側へのインタビューも無く、ドキュメンタリーというよりは映像集かもだけど、そんなそっけない作風が逆にパンクっぽい。ピストルズ以外には、デッド・ボーイズ、シャム69、ジェネレーションX等。短いけどシド&ナンシーの楽屋裏映像も貴重かも。

ウィズ (字幕版)

オズの魔法使いミュージカル映画(1978年)。主演はダイアナ・ロス(細っ)で、カカシを演じるのはソロとして羽ばたく直前のマイケル・ジャクソン(あどけなっ)。原作に沿って友情と信頼を軸にしたストーリーは予定調和路線だけど、キャストが全て黒人なことや、スラム街→遊園地廃墟→ビジネス街と現代 NY の風景そのままながらもどこか非日常感のあるオズの国など、映像美術な側面の魅力が大きいのではと思ったり。

Hosono House 年代記 〜 時の移ろいを地理院地図で眺める

HOSONO HOUSE」と言えば1973年、はっぴぃえんど解散後の細野晴臣氏が居を構えていた狭山市の米軍ハウスで録音した初ソロアルバムで、時代とともに評価は高まる一方の名盤な訳ですが、その跡地を「聖地巡礼」してみたという動画を拝見しました。こりゃー面白いw


www.youtube.com

私が「HOSONO HOUSE」を聴いたのは大学生だった1980年頃で、それほど程なくして上京したのですが、その頃には未だ存在していた訳ですね。いやー、行ってみりゃよかった⋯ そんな悔恨がきっかけで、地理院地図の時系列表示で過去半世紀程の変遷を追ってみました。旧 HOSONO HOUSE 地点の URL は、
https://maps.gsi.go.jp/#18/35.850813/139.398938/&base=std&ls=std%7Cgsi-compare-photo&blend=0&disp=11&lcd=gsi-compare-photo&vs=c1g1j0h0k0l0u0t0z0r0s0m0f1 になります。操作方法などは過去記事の「地理院地図の時系列表示で遊んでみたら面白かった」をどうぞ。

(過去記事での)田舎の実家周辺を調べた時は古い時代の空撮写真は2枚しかありませんでしたが、さすがに首都圏は切れ目なく記録が残ってますな。何となくですが、日本全体が1980年代を堺に風景が変わってしまったような印象。

せっかくなのでスクリーンショットを繋げてスライドショーにしてみました。こちらもどうぞ。

【付記】地図マーカーに使った細野氏の写真は、WIKIMEDIA COMMONS の下記 URL から Creative Commons ライセンスに準拠して使用させて頂きました。

File:Hosono Haruomi from "No Smoking" at Opening Ceremony of the Tokyo International Film Festival 2019 (49013189233).jpg - Wikimedia Commons

ClickHouse のシステムログに TTL を設定してストレージのパンクを回避

TL;DR

ClickHouse をしばらく運用してたら、じりじりとディスク残量が減ってきてしまい、原因がシステムログの溜まり過ぎだと判ったので、TTL 機能でパンクを回避したという話です。

経緯

本件は以前書いた「ClickHouse で億単位レコードの集計をざっくりベンチマーキングしてみた」の後日談的な話になります。EC2 インスタンス上で ClickHouse (公式 Docker イメージ)を半年程運用してきたところ、いつの間にかディスクの残量が2割に。調べると、コンテナ内の /var/lib/clickhouse/ 以下の使用量がじりじりと増加の一途を辿っていることが判明。アプリケーション用のデータはほぼ一定量に保っている筈なんだけどな⋯ そういや ClickHouse のログってどーやって管理されてるんだろ? と思い、system データベースのログテーブルを覗いてみたら、運用開始当時のログレコードがそのまま残っているようでした(例)。

USE system;
SELECT * FROM query_log ORDER BY event_time LIMIT 5;

これはイカン。確か ClickHouse はレコードに TTL を設定して一定期間を経たものを自動削除する機能があったはず⋯ あ、これですね↓

clickhouse.com

ログテーブルに TTL を設定する

という訳で、ログテーブル(asynchronous_metric_log error_log metric_log part_log processors_profile_log query_log text_log trace_log)に「90日以上経過したレコードを削除」するように TTL を追加してみます。ログテーブルには共通して、event_time という Datetime 方のタイムスタンプ列があるようなので、

ALTER TABLE system.<ログテーブル名> MODIFY TTL event_time + INTERVAL 90 DAY DELETE;

としてやります。

ここで注意しなければならない点として、既にログレコードが溜まり過ぎている場合は、ALTER TABLE にめっちゃ時間がかかってしまったり、場合によってはメモリやストレージの不足で処理が中断されてしまう事があるようです(当方環境)。なので、事前にテーブルのレコード数を確認しておいて、億を超えているような場合は手動で古いレコードをある程度削除しておくのが吉っぽいです。

システムの領域を勝手にいじって良いもんだろうか? という疑念はありましたが、AI 先生に訊いてみたところ、この方法を推奨してたのでえいやっとやってみました。手当して一週間程経ちましたが、問題は発生しておらず、ストレージ使用量はほぼ一定を保っています。

mplfinance.plot() のパラメータが多すぎるので一覧表つくった


TL;DR

金融系グラフ描画ライブラリ mplfinance の API リファレンスが見つからなかったので、plot() 関数のパラメータを調べて一覧表にしたった件。

経緯

最近、久しぶりに Jupyter でローソク足チャートを描いてますが、mpl_finance ライブラリが mplfinance に変わってた模様。

github.com

API もガラッと様変わりしていて、多くの機能が plot() 関数に集約されたせいでグラフ描画のステップが以前よりとても簡素になっているようです。が、この関数のリファレンスが何処にも見つからない… Github にある用例集を読めば大半が説明されているようですが、やっぱり一箇所に全部纏めてある資料が欲しいなー、と。

ということでソースコードを読んで調べました。パラメータは mplfinance.plotting._valid_plot_kwargs の中に定義されており、下記のように kwarg_help() 関数で出力できるようです。

import mplfinance as mpf
mpf.kwarg_help('plot')
  ------------------------------------------------------------------------------
  Kwargs for func_name "plot":

  Kwarg                     Default  Description                                    
  ------------------------  -------  -----------------------------------------------
  columns                   None     Column names to be used when plotting the data.
                                     Default: ("Open", "High", "Low", "Close",      
                                     "Volume")                                      
  type                      'ohlc'   Plot type: ['candle', 'ohlc', 'line', 'renko', 
                                     'pnf', 'hollow_and_filled', 'candlestick',     
                                     'ohlc_bars', 'hollow_candle', 'hollow', 'hnf'] 
  style                     None     plot style; see `mpf.available_styles()`  
(後略)

その数61個(うひー)。作業の度にこれをやるのもかったるいので、逆引きしやすいように ABC 順ソートして説明文は生成 AI で和訳した一覧表を作りました。

名称 デフォルト値 説明
addplot None mpf.make_addplot() から生成された addplot オブジェクト、または addplot オブジェクトのシーケンス。
alines None 2つ以上の日付/価格ペアのシーケンスを指定するか、2つ以上の日付/価格ペアのシーケンスのシーケンスを指定して、プロット上の任意の場所に1つ以上の任意の線を描画します。キー alines(上記の日付/価格ペア)を持つ辞書、および次のキーの1つ以上を含む辞書でも可能です:colors、linestyle、linewidths、alpha。
ax None プロットする Matplotlib Axes オブジェクト。
axisoff False axisoff=True は軸を表示しないことを意味します。
axtitle None Axes タイトル(サブプロットタイトル)。
block None True/False:戻る前に図が閉じられるのを待ちます。
closefig auto True/False:戻る前に図を閉じます。
columns None データをプロットする際に使用する列名。デフォルト:("Open", "High", "Low", "Close", "Volume")。
datetime_format None 有効な strftime() フォーマット文字列としての x 軸の目盛りフォーマット。
ema None 指数移動平均のウィンドウサイズ(整数または整数のタプル)。
figratio None 図のアスペクト比。デフォルト:(8.00, 5.75)。
figscale None 図のサイズを拡大(> 1 の場合)または縮小(< 1 の場合)。
figsize None 図のサイズ:figscale と figratio の両方を上書きします。それ以外の場合は figratio*figscale がデフォルトです。
fill_between None fill_between() の y 値、y 値のシーケンス、またはキー "y1" を含む辞書と追加の kwargs としての fill between 仕様。
fontscale None フォントサイズを拡大(> 1 の場合)または縮小(< 1 の場合)。
hlines None 価格または価格のシーケンスを指定して、プロット全体に1つ以上の水平線を描画します。価格または価格のシーケンスを指定するキー hlines を持つ辞書、および次のキーの1つ以上を含む辞書でも可能です:colors、linestyle、linewidths、alpha。
linecolor None type=line の線の色。
main_panel 0 整数 - .plot() のメインパネルがどのパネルか。
marketcolor_overrides None マーケットカラーを上書きするカラーオブジェクトのシーケンス。シーケンスは ohlc(v) DataFrame と同じ長さでなければなりません。各カラーオブジェクトは、色、マーケットカラーオブジェクト、または None にすることができます。
mav None 移動平均のウィンドウサイズ(整数または整数のタプル)。
mavcolors None 移動平均のカラーサイクル(色のリストまたはタプル)(mpf スタイル mavcolors を上書きします)。
mco_faceonly False True/False:marketcolor_overrides はローソク足の面にのみ適用されます。
no_xgaps True 非推奨。
num_panels None パネルの総数。
panel_ratios None パネルの相対的なサイズを示す数値のシーケンス。シーケンスの長さはパネルの数と同じである必要があります。または、最初の要素がメインパネル用、2番目の要素が他のすべてのパネル用である長さ2である必要があります。
pnf_params {} ポイントアンドフィギュアパラメータの辞書。mpf.kwarg_help("pnf_params") を呼び出してください。
renko_params {} レンコパラメータの辞書。mpf.kwarg_help("renko_params") を呼び出してください。
return_calculated_values None 空の辞書を含む変数に設定します。mpf.plot() は、さまざまな mplfinance 計算値で辞書を埋めます。
return_width_config None 幅の設定で埋められる空の辞書変数。
returnfig False mplfinance によって作成された Figure と Axes オブジェクトのリストを返します。ユーザーは準備ができたらプロットを表示する必要があります。通常は mpf.show() を呼び出します。
savefig None ファイル名、BytesIO、または matplotlib Figure.savefig() への kwargs として許可される他のキーに加えてキー fname を持つ辞書。
saxbelow True 出来高 Axes を他のすべての Axes オブジェクトの下(後ろ)に設定します。
scale_padding 1.0 図の周りのパディングを増加(> 1.0)または減少(< 1.0)します。図の各側の個々のスケールパディングに対して、次のキーの1つ以上を含む辞書でも可能です: "top"、"bottom"、"left"、"right"。
scale_width_adjustment None プロットオブジェクトの幅を広く(> 1.0)または狭く(< 1.0)スケールします。個々の幅をスケールする辞書でも可能です。(mplfinance examples フォルダの「widths」チュートリアルも参照してください)。
set_ylim None 非推奨。
set_ylim_panelB None 非推奨。
show_nontrading False True/False:非取引日/期間のスペースを表示します。
study None kwarg は実装されていません。
style None プロットスタイル。mpf.available_styles() を参照してください。
tight_layout False True/False:タイトレイアウト(図の周りの最小パディング)を実装します(scale_padding kwarg も参照)。
title None 図のタイトル(axtitle も参照)。
tlines None 各トレンド線を描画する必要がある日付[時刻]の1つ以上のペアを指定して、1つ以上のトレンド線を描画します。上記のようにキー tlines を持つ辞書、および次のキーの1つ以上を含む辞書でも可能です:colors、linestyle、linewidths、alpha、tline_use、tline_method。
type ohlc プロットタイプ:['candle', 'ohlc', 'line', 'renko', 'pnf', 'hollow_and_filled', 'candlestick', 'ohlc_bars', 'hollow_candle', 'hollow', 'hnf']。
tz_localize True True/False:DatetimeIndex の時刻をローカライズします。
update_width_config None 辞書 - 幅の設定で個々の項目を更新します。(mplfinance examples フォルダの「widths」チュートリアルも参照してください)。
vlines None 日付[時刻]または日付[時刻]のシーケンスを指定して、プロット全体に1つ以上の垂直線を描画します。日付[時刻]または日付[時刻]のシーケンスを指定するキー vlines を持つ辞書、および次のキーの1つ以上を含む辞書でも可能です:colors、linestyle、linewidths、alpha。
volume False 出来高をプロット:True、False、またはプロットする Axes オブジェクトに設定します。
volume_alpha None 出来高バーの不透明度:0.0(透明)から 1.0(不透明)。
volume_exponent None 出来高軸の整数指数(または古い mplfinance スタイルの場合は「legacy」に設定)。
volume_panel 1 整数 - 出来高パネルがどのパネルか。
volume_ylim None 出来高の y 軸の制限(最小値、最大値)のタプル、つまり(下、上)。
volume_yscale None 出来高の y 軸スケール:「linear」、「log」、「symlog」、「logit」。
warn_too_much_data 599 プロット内のデータ量の許容範囲。デフォルト=599行。「warn_too_much_data」を超える値は警告をトリガーします。
width_adjuster_version v1 オブジェクト幅調整アルゴリズムのバージョンを指定します:「v0」または「v1」(mplfinance examples フォルダの「widths」チュートリアルも参照してください)。
xlabel None プロットの x 軸のラベル。
xlim None x 軸の制限(最小値、最大値)のタプル、つまり(左、右)。
xrotation 45 x 軸の目盛りラベルの角度(度)。90=垂直。
ylabel Price メインプロットの y 軸のラベル。
ylabel_lower None 出来高の y 軸のラベル。
ylim None y 軸の制限(最小値、最大値)のタプル、つまり(下、上)。
yscale None y 軸スケール:「linear」、「log」、「symlog」、「logit」。

尚、以上の情報は v0.12.10b0 時点でのものです。最新の状態を確認したい場合は、先に示したコードで情報を取得して下さい。しっかし生成 AI 便利だなー(そこかい

2025年第1四半期 プライムビデオで観た音楽系コンテンツ

花粉、辛いですね。そんな時は引き籠もってネットで動画三昧… って年中それやーん。という訳で四半期恒例、ネタバレ御免なアマプラビデオの音楽系コンテンツ寸評まとめです。

ローレル・キャニオン 夢のウェストコースト・ロック(字幕版)

1970年前後、ウェストコースト・ロックの勃興から巨大産業に変質するまでを、LA 郊外のローレルキャニオンに住んで絆を深めあったミュージシャン達の証言を交えて描くドキュメンタリー。出演は MFQ,バーズ、ドアーズ、ラヴ、バッファロー・スプリングフィールドCSN&Y、ママス&パパス、ジャクソン・ブラウンジョニ・ミッチェル、フライング・ブリトー・ブラザース、リンダ・ロンシュタットイーグルスという面々。こういった共同体的な仲間意識と影響の授受が、シーンの豊かさと成長に繋がっていったのかなぁ、というラブ&ピースな感慨が。

ロックフィールド 伝説の音楽スタジオ

クイーンが「オペラ座の夜」を録音したウェールズ郊外農場にある滞在型録音スタジオ「ロック・フィールド」のドキュメンタリー。'70年代に興隆を極め、'90年前後には低迷したもののブリットポップとともに二度目のピークを迎え、今も経営中とのこと。創設者の兄弟を中心に、オジー・オズボーン、ホークウィンド、エース、クイーン、ラッシュ、ロバート・プラントジム・リー(シンプル・マインズ)、ストーン・ローゼス、オアシス、シャーラタンズ、ブー・ラドリーズ、マニック・ストリート・プリーチャーズ、コールドプレイ、イライザ・カーシーが登場。

ワーズ&ミュージック(字幕版)

戦前に数多くのミュージカルや映画の音楽を制作したソングライティングチーム、ロジャース&ハートの伝記映画(1947年)。二人の出会いからハートの死去までを描いてます。「ブルー・ムーン」やジャズ・スタンダード「マイ・ファニー・ヴァレンタイン」「スプリング・イズ・ヒア」は有名だけど、ベンチャーズのカバーで有名な「10番街の殺人」もこの人たちの作曲だったのね。短躯で女性と縁が無かった孤独なハートという視点が終始ついてまわるのが一寸かわいそう。ビジネス的なサクセスストーリーが基軸なので、もっと音楽面での描写が欲しかったです。

津軽のカマリ

1998年に没した津軽三味線の大家、高橋竹山のドキュメンタリー。在りし日の映像と多くの弟子や共演者達の証言からなる貴重な作品では。自分は二十歳頃に彼のレコードを初めて聴いて好きになったのですが、上京してからいくらでも機会はあったのにステージはついぞ観られずじまいだったのが悔やまれます。じょんから中節は戦争当時に流行ったものだとか、奥さんがイタコだったとか、北海道で飢え死にしそうだったのを朝鮮人に助けられてアリラン弾いたとか、興味深いエピソードが満載で楽しめました。