2025-01-26

【備忘録】Excel VBA で平均足を算出

VBA, Visual Basic for Applications は、マイクロソフト社が Microsoft Visual Basic を、同社製品の Microsoft Office に搭載したものです。VBA を使用することで、Excel、Access、Word、Outlook、PowerPoint など、Office のアプリケーション・ソフトウェアの機能をカスタマイズしたり、拡張したりすることができます。

Wikipedia より引用、編集

楽天証券に口座を開設してトレーディングをしているので、同社が提供しているトレーディングツール「マーケットスピード II [1]」を利用しています。

マーケットスピード II は高機能なのでトレーディングツールとして申し分ないのですが、データを取得して自分で解析やカスタマイズした処理をしたいので、マーケットスピード II の機能(の一部)を Excel 上で実現できるアドイン「マーケットスピード II RSS [2]」(以下 RSS と呼びます)も利用して、Excel 上でデータの加工などをしています。

RSS の RssChart 関数を利用すれば簡単に 始値-高値-安値-終値 の四本値データ(+出来高)をリアルタイムで取得できます。リアルタイムと言っても、例えば1分足の場合、1分毎に更新されたデータを1行下に追加するという動作です。

マーケットスピード II でチャート上に表示できる平均足をじっくり評価したかったのですが、残念ながら平均足データを取得する関数は RSS に用意されていません。そこで、四本値データから平均足を算出する VBA マクロを作成しました。

Excel VBA で 平均足を算出

RSS の RssChart 関数が Excel シートへリアルタイムで流し込んでくれる東証の銘柄の1分足データから、平均足を算出、右側に追記する VBA マクロです。

下記の OS 環境で動作確認をしています。

Microsoft Windows 11 Home 24H2
Microsoft Excel 2024 MSO 64 ビット

VBA でのアプローチ

下記の赤い領域に新しい平均足の値 (H_Open, H_High, H_Low, H_Close) を算出するために、赤い領域を含む灰色の領域 (Range) を Variant 配列に転記して、平均足を算出処理するマクロへ渡します。

平均足を算出するために使用する範囲

サンプルでは、算出後の配列をそのまま元の領域 (Range) へ戻しています。このやり方はシンプルですが、バグにより本来変更してはならない部分が書き換えられてしまうリスクがあります。

VBA マクロの構成

今回のマクロの構成は以下のようになっています。

 

実装環境から抜き出して、それをサンプル用として1つのモジュールにまとめなかったため、動作確認用サンプルは複数のモジュールにまたがってしまっています。あらかじめご了承ください。

平均足の算出処理

平均足の算出処理は、標準モジュール ModTechnical の Sub プロシージャ CalcHeikinAshi を呼び出します。

平均足の算出は、参考サイト [3] にある平均足の説明に沿っています。説明文を VBA コード内のコメントに流用させていただきました。

標準モジュール ModTechnical
Option Explicit


' ### プライベート定数(モジュールレベル) ####################################

Private Const P_OPEN As Long = 1
Private Const P_HIGH As Long = 2
Private Const P_LOW As Long = 3
Private Const P_CLOSE As Long = 4
Private Const P_VOLUME As Long = 5
Private Const H_OPEN As Long = 6
Private Const H_HIGH As Long = 7
Private Const H_LOW As Long = 8
Private Const H_CLOSE As Long = 9


' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 平均足の算出
'
' 【参考サイト】
' https://marketspeed.jp/ms2/onlinehelp/ohm_007/ohm_007_05.html
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Sub CalcHeikinAshi(arr As Variant, Optional Is1st As Boolean = False)
    
    If Is1st Then
        ' 2本目の平均足:前日の平均足がないため、始値を下記値より算出する
        ' 始値 = (前日の始値 + 前日の高値 + 前日の安値 + 前日の終値) / 4
        arr(2, H_OPEN) = _
            (arr(1, P_OPEN) + arr(1, P_HIGH) + arr(1, P_LOW) + arr(1, P_CLOSE)) / 4
    Else
        ' 始値=(前日の平均足の始値+前日の平均足の終値)/2
        arr(2, H_OPEN) = (arr(1, H_OPEN) + arr(1, H_CLOSE)) / 2
    End If
    
    ' 終値=(当日の始値+当日の高値+当日の安値+当日の終値)/4
    arr(2, H_CLOSE) = _
        (arr(2, P_OPEN) + arr(2, P_HIGH) + arr(2, P_LOW) + arr(2, P_CLOSE)) / 4
    
    ' 陰線:始値>=終値
    ' 陽線:始値<終値
    ' 平均足の高値と安値は、当日の高値と安値を用いる。
    
    If arr(2, H_OPEN) >= arr(2, H_CLOSE) And arr(2, P_HIGH) < arr(2, H_OPEN) Then
        ' 但し、平均足が陰線で当日の高値<平均足の始値の場合、
        ' 平均足の高値=平均足の始値とする。
        arr(2, H_HIGH) = arr(2, H_OPEN)
    Else
        ' 当日の高値
        arr(2, H_HIGH) = arr(2, P_HIGH)
    End If
    
    If arr(2, H_OPEN) < arr(2, H_CLOSE) And arr(2, P_LOW) > arr(2, H_OPEN) Then
        ' 但し、平均足が陽線で当日の安値>平均足の始値の場合、
        ' 平均足の安値=平均足の始値とする。
        arr(2, H_LOW) = arr(2, H_OPEN)
    Else
        ' 当日の安値
        arr(2, H_LOW) = arr(2, P_LOW)
    End If

End Sub

動作確認

動作確認のサンプルを示しました。テスト用のマクロですが、用途の事情で擬似的に1秒間隔でループを回したかったので、少し長くなってしまいました。

標準モジュール ModCommon
Option Explicit


' ### 定 数 ##################################################################

' 取引時間関連
Public Const T_OPEN_MKT As Date = "09:00:00"
Public Const T_HEIKIN_START As Date = "09:02:00"
Public Const T_LUNCH_START As Date = "11:30:00"
Public Const T_LUNCH_END As Date = "12:30:00"
Public Const T_HEIKIN_END As Date = "15:24:00"
Public Const T_CLOSE_MKT As Date = "15:30:00"

市場が開いて 9:00 の1分足データが確定するのは 9:01 以降です。また最初 (9:00) の1分足データに対しては平均足を算出できません。9:01 の1分足データが確定するのは 9:02 以降になります。ですので、平均足を算出するのは T_HEIKIN_START で指定した 9:02 になります。

なお、ここでは処理をシンプルにするために RssChart 関数は、時刻が 0 秒になったら直ちに直前の1分足データをシートに書き込むものとし、かつ、株価は 9:00 に寄り付いているものとしています。

汎用関数は標準モジュール ModFunc にまとめてあります。この動作確認用サンプルでは GetPrevMinute 関数しか使いませんが、依存している関数も含めています。

標準モジュール ModFunc
Option Explicit


' ### Function 関数 ###########################################################


' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 現在の時刻 (HH:MM:SS) を HH:MM 形式の文字列で取得
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Public Function GetCurrentMinute(timeNow As Date) As String
    Dim StrHH As String
    Dim StrMM As String

    StrHH = Format(Hour(timeNow), "00")
    StrMM = Format(Minute(timeNow), "00")
    
    GetCurrentMinute = StrHH & ":" & StrMM

End Function


' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 一分前の時刻を HH:MM 形式の文字列で取得
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Public Function GetPrevMinute(timeNow As Date) As String
    Dim timePrev As Date

    timePrev = DateAdd("n", -1, timeNow)
    GetPrevMinute = GetCurrentMinute(timePrev)

End Function

動作確認用のマクロはワークシートに記述しています。

Microsoft Excel Objects Sheet1
Option Explicit


' ### プライベート定数(モジュールレベル) ####################################


' 列関連
Private Const P_TIME As Long = 5
Private Const P_OPEN As Long = 6
Private Const P_HIGH As Long = 7
Private Const P_LOW As Long = 8
Private Const P_CLOSE As Long = 9
Private Const P_VOLUME As Long = 10
Private Const H_OPEN As Long = 11
Private Const H_HIGH As Long = 12
Private Const H_LOW As Long = 13
Private Const H_CLOSE As Long = 14

Private Is1st As Boolean        ' 最初の処理かを判定するフラグ


' ### Sub プロシージャ ########################################################


' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 平均足テスト
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Sub TestHeikinAshi()
    Dim timeNow As Date
    Dim strTargetTime As String ' 検索するターゲット時刻
    Dim RangeCol As Range       ' 検索レンジ(1列)
    Dim foundObj As Range       ' 検索結果を格納するレンジ
    Dim RangeData As Range      ' データ範囲
    Dim rowLast As Long         ' 最終行
    Dim row1 As Long            ' 平均足算出に使用するレンジの第一行
    Dim row2 As Long            ' 平均足算出に使用するレンジの第二行
    Dim arrHeikin As Variant    ' 平均足算出処理に渡す配列

    ' シートの初期化
    Call SheetInit

    timeNow = T_OPEN_MKT
    Do While timeNow <= T_CLOSE_MKT
        If T_HEIKIN_START <= timeNow And timeNow <= T_HEIKIN_END And Second(timeNow) = 0 Then
            strTargetTime = GetPrevMinute(timeNow)
            
            ' 時刻列の最終行を取得
            rowLast = Cells(1, P_TIME).End(xlDown).Row
            ' 検索レンジ(1列)を設定
            Set RangeCol = Range(Cells(1, P_TIME), Cells(rowLast, P_TIME))
            ' 検 索
            Set foundObj = RangeCol.Find(strTargetTime, LookAt:=xlWhole)
            ' 検索結果による処理
            If Not foundObj Is Nothing Then
                ' 検索結果が有る場合は検索セルの行を取得
                ' ※ 検索する時系列は重複が無いことを前提にしている
                row2 = foundObj.Row
                row1 = row2 - 1

                ' 平均足算出に必要なレンジを配列へ転記
                arrHeikin = Range(Cells(row1, P_OPEN), Cells(row2, H_CLOSE)).Value

                ' 平均足の算出
                If Is1st Then
                    Call CalcHeikinAshi(arrHeikin, Is1st)
                    Is1st = False
                Else
                    Call CalcHeikinAshi(arrHeikin)
                End If

                ' 平均足算出結果を元のレンジへ転記
                Range(Cells(row1, P_OPEN), Cells(row2, H_CLOSE)).Value = arrHeikin

            End If

        End If
        
        ' 現在時刻を1秒進める
        timeNow = DateAdd("s", 1, timeNow)
    
    Loop

End Sub


' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' シートの初期化
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Sub SheetInit()
    Dim xlLastRow As Long  ' Excel自体の最終行
    Dim rowLast As Long    ' 最終行
    Dim RangeData As Range ' データ範囲
    
    ' 以前に算出した平均足データの消去
    xlLastRow = Cells(Rows.Count, P_TIME).Row          ' Excelの最終行を取得
    rowLast = Cells(xlLastRow, P_TIME).End(xlUp).Row ' 時刻列の最終行を取得
    If rowLast > 1 Then
        Set RangeData = Range(Cells(2, H_OPEN), Cells(rowLast, H_CLOSE))
        RangeData.ClearContents
    End If

    ' 最初の処理かを判定するフラグの初期化
    Is1st = True

End Sub

Excel 上で思うようにローソク足チャートを描画できなかったので、JupyterLab 上にチャートをプロットしました。ここでは Python のコードは割愛します。4本値を用いた通常のローソク足チャートと平均足データによるローソク足チャートを並べました。

通常のローソク足チャート

平均足データのローソク足チャート

サンプルシート

以上のコード、シートを含む Excel ファイルを下記からダウンロードできます。ご参考まで。

sample_heikinashi.xlsm

参考サイト

  1. マーケットスピード II | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS | 楽天証券のトレーディングツール
  3. テクニカル指標/チャート形状 | マーケットスピード II オンラインヘルプ | 楽天証券のトレーディングツール

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-01-13

【備忘録】On-Balance Volume (OBV)

昨年 8 月 5 日の東京市場の歴史的な暴落を経験して、今さらながら先達が開発したテクニカル分析の手法を、自分でもプログラムを作って分析できるようにしようと思い、いろいろ調べています。今回は OBV です。

OBV は、各日の総出来高に、その日の価格が高いか低いかによって、プラスまたはマイナスの値が割り当てられます。具体的には、当日の終値が前日の終値より高ければその日の出来高はプラス、低ければマイナスとして前日の OBV に加えて算出します(マイナスの場合は引き算)。

OBV は、一般的に値動きを確認するために利用されます。定義は単純で下記の通りです。(数式表現に MathJax を利用しているため、スマホのブラウザなどでの閲覧では意図したとおりに表示されない場合があります。)

\[ \begin{aligned} &\text{OBV} = \text{OBV}_{prev} + \begin{cases} \text{volume,} & \text{if close} > \text{close}_{prev} \\ \text{0,} & \text{if close} = \text{close}_{prev} \\ -\text{volume,} & \text{if close} < \text{close}_{prev} \\ \end{cases} \\ \end{aligned} \]

この指標は、Joseph Granville 氏が 1963 年に出版した著書 Granville's New Key to Stock Market Profits で On-Balance Volume と名付けて紹介して普及させました。日本では「累積騰落出来高」とも呼ばれているようです。

Wikipedia より引用・編集、追記

下記の OS 環境で動作確認をしています。

Fedora Linux 41 Workstation x86_64
Python 3.13.1
jupyterlab 4.3.4
matplotlib 3.10.0
mplfinance 0.12.10b0
yfinance 0.2.51

以下の作業は JupyterLab 上でおこなっています。

まず、必要なパッケージをインポートして、yfinance でサンプルとする銘柄の日足データを3ヶ月分取得します。

import matplotlib.pyplot as plt
import mplfinance as mpf
import re
import yfinance as yf

pattern = re.compile(r'(.+)\.T')
#pattern = re.compile(r'\^(.+)')

symbol = '8306.T'
ticker = yf.Ticker(symbol)

df = ticker.history(period='3mo')
df.head()

 

次に OBV を計算ですが、一行一行算出する処理に流用できるようにしたかったので、Pandas らしくない愚直なコーディングをしています。

def calc_obv(r):
    if r == 0:
        return 0

    obv_prev = list_obv[r - 1]
    close_prev = df.iloc[r - 1]['Close']
    close_curr = df.iloc[r]['Close']
    volume_curr = df.iloc[r]['Volume']

    if close_prev < close_curr:
        v_sign = +1
    elif close_prev > close_curr:
        v_sign = -1
    else:
        v_sign = 0

    return obv_prev + volume_curr * v_sign


list_obv = list()
for r in range(len(df)):
    list_obv.append(calc_obv(r))

最後に mplfinance によるプロットです。ローソク足チャートをプロットするために mplfiance を利用していますが、matplotlib から細かい調節をしたいので、mplfinance だけで済ませようとせずに下記のような回りくどい書き方をしています。

plt.rcParams["font.size"] = 16
fig = plt.figure(figsize=(12, 6))

ax = dict()
n = 3
gs = fig.add_gridspec(
    n, 1,
    wspace=0.0, hspace=0.0,
    height_ratios=[2 if i == 0 else 1 for i in range(n)]
)
for i, axis in enumerate(gs.subplots(sharex='col')):
    ax[i] = axis
    ax[i].grid()

apds  = [
    mpf.make_addplot(
        list_obv,
        width=1,
        color='magenta',
        ax=ax[2]
    ),
] 

mpf.plot(
    df,
    type='candle',
    style='default',
    volume=ax[1],
    datetime_format='%m/%d',
    addplot=apds,
    xrotation=0,
    ax=ax[0],
)

ax[2].set_ylabel('OBV')

try:
    ax[0].set_title('Daily chart for %s (%s)' % (ticker.info['longName'], symbol))
except KeyError:
    ax[0].set_title('Daily chart for %s' % symbol)

plt.tight_layout()

m = pattern.match(symbol)
if m:
    plt.savefig('daily_chart_%s.png' % m.group(1))
else:
    plt.savefig('daily_chart_%s.png' % symbol)

plt.show()

大局的なトレンド、言い換えれば、離れた日の間でこの指標の絶対値の比較をするのは意味がなさそうです。そうではなくて、その時々における価格の動きの方向性あるいは売買の勢いを確認するのに向いているように思います。

関連サイト

  1. bitWalk's: 【備忘録】パラボリック SAR [2024-09-06]
  2. bitWalk's: 【備忘録】モメンタムとボリンジャーバンド [2024-08-10]
  3. bitWalk's: 【備忘録】フィボナッチ・リトレースメント [2024-08-12]
  4. bitWalk's: 【備忘録】一目均衡表 [2024-08-15]
  5. bitWalk's: 【備忘録】Wilder の RSI [2024-09-05]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-01-10

たぬき油性マジック フォント

今はフリーあるいはオープンソースのフォントが利用できる時代です。いろいろなフォントを紹介しているサイトはありますが、気に入ったデザインのフォントを自分なりのやり方で紹介しています。

今回紹介するフォントは「たぬき油性マジック」です。

フォント名 たぬき油性マジック
収録文字
  • 半角英数・半角カナ
  • ひらがな・カタカナ・約物・記号・全角英数・ギリシャ文字・ロシア文字
  • 第一水準漢字・第二水準漢字・IBM拡張文字・ラテン補助文字・一部のラテン拡張文字
配布ライセンス 明確な記載なし
フォントの利用規約 readme.txt
配布サイト

たぬき油性マジック フォント (TanukiMagic.ttf) の利用例を下記に示しました。

TanukiMagic.ttf の利用例

使用したプログラム

スクリーンショット用に使用したプログラムは、本ブログの過去記事 [1] で紹介しています。

参考・関連サイト

  1. bitWalk's: 「ポプらむ☆キウイ」フォント [2024-08-27]
  2. bitWalk's: 「廻想体 ネクスト ユーピー B」フォント [2024-08-29]
  3. bitWalk's: 「源暎ぽっぷる」フォント [2024-09-02]
  4. bitWalk's: 「コーポレート・ロゴ(ラウンド)」フォント [2024-09-08]
  5. bitWalk's: 「ニコ角V2」フォント [2024-09-16]
  6. bitWalk's: Train One フォント [2024-09-28]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-01-08

AlmaLinux 10 Beta と RHEL 10 Beta の違い

AlmaLinux OS はオープンソースでコミュニティ主導のエンタープライズ Linux ディストロであり、RHEL とバイナリ互換性があります。AlmaLinux OS Foundation は、AlmaLinux OS コミュニティの利益のために設立された 501(c)(6) の非営利団体です。

昨年 12 月 11 日に公開された AlmaLinux 10.0 Beta のリリース・ノート [1] によると、現行の RHEL9 は x86_64_v2 マイクロアーキテクチャを前提としてビルドされていますが、次期 RHEL10 では、より新しい x86_64_v3 マイクロアーキテクチャを前提としてビルドされます [2]

そのため、RHEL とバイナリ互換をうたう AlmaLinux でも x86_64 向けの iso ファイルに収録されるパッケージは x86_64_v3 マイクロアーキテクチャを前提としてビルドされます。ただし、AlmoLinux では古い x86_64_v2 用にビルドしたパッケージを収録した iso ファイルも公開しています。従来の x86_64 の古いハードウェア向け iso ファイル名には x86_64_v2 が付記されています。

AlmaLinux 10 Beta の ISO ファイルのダウンロード・サイト

AlmaLinux 10 Beta を試す

Fedora Linux 41 の 仮想環境 GNOME Boxes 上に、AlmaLinux-10-latest-beta-x86_64-dvd.iso を(Server with GUI で)インストールしました。

AlmaLinux 10 Beta のデスクトップ画面

本ブログの過去記事 [4] の RHEL10 Beta の場合と異なり、AlmaLinux 10 Beta では FirefoxThunderbird は rpm パッケージで提供されていて、インストール後すぐに Firefox が利用できるようになっています [1]

目についた RHEL10 Beta と AlmaLinux 10 Beta との違いは以上ですが、その他にも違いがあります。詳しくは AlmaLinux 10.0 Beta のリリース・ノート [1] の Deviations from RHEL 10 の項目を参照してください。

AlmaLinux の付加価値

RHEL 互換ディストロのひとつ Rocky Linux は、バグを含めて RHEL と 100% の互換性を保つように開発(リビルド)されているのに対して、AlmaLinux OS は RHEL とバイナリ互換性をうたっています。

かつては RHEL クローンと呼ばれた RHEL 互換ディストロに違いが出たきたのは、RHEL をビルドしているソースコードの唯一の入手先が CentOS Stream のリポジトリになったことに端を発しています [5]。CentOS Stream は、RHEL の次のマイナーバージョンをリリースするための、いわば開発用ディストロですので、1:1 互換をうたう RHEL クローン・プロジェクトにとって、確実な 1:1 互換を保つことが困難になってしまいました。

Red Hat という会社が開発した製品を、オープンソースという理由から、手を尽くしてソースコードを入手、それらをリビルドして、ブランド名を付け替えて無料で公開、RHEL と 100% 互換だと喧伝するディストロより、控えめながらバイナリ互換 OS と称して、ユーザーの利便性を向上させるために、(本家リリースへの迅速な追従も含めた)付加価値を加えているディストロの方が好感が持てます。あくまで個人の見解です。

昨年 12 月に開催された AlmaLinux Day: Tokyo 2024 は、気がついた時には開催済みで参加できませんでしたが、2023 年末に開催された時に参加した限りでは、バイナリ互換と言っても AlmaLinux も可能な限り手を尽くしてオリジナルのソースコードを入手してリビルドしていることを知りました[6]

参考サイト

  1. 10.0 Beta | AlmaLinux Wiki [2024-12-10]
  2. Exploring x86-64-v3 for Red Hat Enterprise Linux 10 | Red Hat Developer [2024-01-02]
  3. x64 - Wikipedia マイクロアーキテクチャの世代
  4. bitWalk's: RHEL 10 Beta と Firefox [2024-01-07]
  5. bitWalk's: RHEL のソースコードの公開リポジトリが… [2023-08-06]
  6. bitWalk's: AlmaLinux Day に参加して [2023-12-09]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-01-07

RHEL 10 Beta と Firefox

Red Hat Enterprise Linux, RHEL は、Red Hat 社が開発しているエンタープライズ市場向けの Linux ディストリビューションです。最近の RHEL のライフサイクルは 10 年で、延長が必要であれば追加サブスクリプション (Extended Lifecycle Support Add-On) も提供されています。

昨年 12 月 11 日に公開された次期 Red Hat Enterprise Linux 10 のベータ版 [1] を(Fedora Linux 41 の)仮想環境 GNOME Boxes にインストールしてみました(ダウンロードした iso ファイルは rhel-10.0-beta-x86_64-dvd.iso です)。

RHEL 10 Beta の ISO ファイルのダウンロード・サイト

上記サイトへアクセス、利用するには Red Hat Customer Portal のアカウントと、Red Hat Beta Access のサブスクリプション(どちらも無料)が必要になります。

RHEL10 Beta のデスクトップが画面

インストール後、アプリ一覧を確認したところ、CentOS Stream 10 の時 [2]と同様に Firefox あるいはそれに代わるインターネット・ブラウザがインストールされていませんでした。

RHEL10 Beta のアプリ一覧 (1)

調べてみると、サーバー用途に直接関連がないデスクトップ・アプリについては Flatpak のパッケージに移したようです [3]。ここまできて、ようやく RHEL 10 Beta のリリースノートをしっかり読む気になりました。😅

Firefox のインストール

基本的に、RHEL 10 Beta のリリースノートの 4.14. Desktop [4] に従って Flatpak の Firefox をインストールします。

まず、RHEL 10 Beta の Flatpak のレジストリ (rhel-10-beta) をシステムに追加します。ルートのアカウントを作っていないので sudo コマンドで実施しています。

bitwalk@rhel10:~$ sudo flatpak remote-add rhel-10-beta https://flatpaks.redhat.io/rhel-10-beta.flatpakrepo
[sudo] bitwalk のパスワード:
bitwalk@rhel10:~$ 

Red Hat Container Catalog にログインします。ここには Red Hat Customer Portal のアカウントでログインします。

bitwalk@rhel10:~$ sudo podman login registry.redhat.io
[sudo] bitwalk のパスワード:
Username: xxxxxxxxxxxx
Password: 
Login Succeeded!
bitwalk@rhel10:~$ 

rhel-10-beta org.mozilla.Firefox をインストールします。ここでも Red Hat Customer Portal のアカウントでログインが要求されるので、sudo コマンドで実施する場合、前の Red Hat Container Catalog へのログインは必要ないのかもしれません。

bitwalk@rhel10:~$ sudo flatpak install rhel-10-beta org.mozilla.Firefox
Looking for matches…
Required runtime for org.mozilla.Firefox/x86_64/stable (runtime/com.redhat.Platform/x86_64/el10) found in remote rhel-10-beta
Do you want to install it? [Y/n]: y

org.mozilla.Firefox permissions:
    ipc              network            pcsc                    pulseaudio
    wayland          x11                devices                 file access [1]
    dbus access [2]  bus ownership [3]  system dbus access [4]

    [1] /run/.heim_org.h5l.kcm-socket, home:ro, xdg-download, xdg-run/gvfs,
        xdg-run/gvfsd, xdg-run/pipewire-0, ~/.cache/firefox:create,
        ~/.mozilla:create
    [2] org.a11y.Bus, org.freedesktop.FileManager1,
        org.freedesktop.Notifications, org.freedesktop.ScreenSaver,
        org.gnome.SessionManager, org.gtk.vfs.*
    [3] org.mozilla.firefox.*, org.mpris.MediaPlayer2.firefox.*
    [4] org.freedesktop.NetworkManager


        ID                    Branch   Op   Remote        Download
 1.     com.redhat.Platform   el10     i    rhel-10-beta  < 419.0 MB
 2.     org.mozilla.Firefox   stable   i    rhel-10-beta  < 152.6 MB

Proceed with these changes to the system installation? [Y/n]: y
Login required remote rhel-10-beta (realm https://registry.redhat.io/)
User: xxxxxxxxxxxx
Password: 
        ID                    Branch   Op   Remote        Download
 1. [✓] com.redhat.Platform   el10     i    rhel-10-beta  462.6 MB / 419.0 MB
 2. [✓] org.mozilla.Firefox   stable   i    rhel-10-beta  160.7 MB / 152.6 MB

Installation complete.
bitwalk@rhel10:~$ flatpak list
Name                Application ID         Version    Branch    Installation
Red Hat Platform    com.redhat.Platform    10         el10      system
Firefox             org.mozilla.Firefox    128.2.0    stable    system
bitwalk@rhel10:~$ 

インストールが終わると、アプリ一覧に Firefox のアイコンが追加されます。

RHEL10 Beta のアプリ一覧 (2)

コマンドラインで起動しなくとも、アプリ一覧から Firefox を起動できます。

起動した Firefox

ちなみに、RHEL 10 Beta が提供している Flatpak パッケージは Firefox と Thunderbird のみのようです。

bitwalk@rhel10:~$ flatpak remote-ls rhel-10-beta
Name                   Application ID                Version       Branch
Firefox                org.mozilla.Firefox           128.2.0       stable
Thunderbird            org.mozilla.Thunderbird                     stable
Red Hat Platform       com.redhat.Platform           10            el10
Red Hat SDK            com.redhat.Sdk                9             el10
bitwalk@rhel10:~$ 

参考サイト

  1. Now available: Red Hat Enterprise Linux 10 Beta [2024-12-11]
  2. bitWalk's: CentOS Stream 10 リリース [2024-12-22]
  3. RHEL 10 browser question : r/redhat [2024-12-25]
  4. 10.0 Beta Release Notes | Red Hat Product Documentation 4.14. Desktop

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加