JP7724163B2 - プログラム生成方法およびプログラム生成装置 - Google Patents

プログラム生成方法およびプログラム生成装置

Info

Publication number
JP7724163B2
JP7724163B2 JP2022002403A JP2022002403A JP7724163B2 JP 7724163 B2 JP7724163 B2 JP 7724163B2 JP 2022002403 A JP2022002403 A JP 2022002403A JP 2022002403 A JP2022002403 A JP 2022002403A JP 7724163 B2 JP7724163 B2 JP 7724163B2
Authority
JP
Japan
Prior art keywords
directory
container
program
compiler
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022002403A
Other languages
English (en)
Other versions
JP2023102064A (ja
Inventor
直哉 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Tec Corp
Original Assignee
Toshiba Tec Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Tec Corp filed Critical Toshiba Tec Corp
Priority to JP2022002403A priority Critical patent/JP7724163B2/ja
Publication of JP2023102064A publication Critical patent/JP2023102064A/ja
Application granted granted Critical
Publication of JP7724163B2 publication Critical patent/JP7724163B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態は、プログラム生成方法およびプログラム生成装置に関する。
アプリケーションコンテナにローカルストレージとネットワークストレージをマウントさせ、トレーニングの中間モデルファイルをマウントしたネットワークストレージにタイムリーに転送する技術が開示されている。
また、複数のLinux(登録商標)ディストリビューションで実行できるプログラムを、複数のLinuxディストリビューションで生成できるコンパイラが開示されている。
特開2021-26766号公報
https://software.intel.com/content/dam/develop/external/us/en/documents/iccrn-19-1-0-linux.pdf
複数のLinuxディストリビューションで実行できるプログラムを、複数のLinuxディストリビューションで生成できるコンパイラが一つの装置にインストールされている場合、その装置上にあるコンテナからそのコンパイラを直接呼び出すことができないため、その呼び出しには煩雑な手続きが必要となる。
本発明が解決しようとする課題は、上記のコンパイラを簡単な手続きで呼び出してプログラムを生成するプログラム生成方法およびプログラム生成装置を提供することである。
実施形態に係るプログラム生成方法は、複数のディストリビューションで実行できるプログラムを、前記複数のディストリビューションで生成できるコンパイラが保存されたホストOSの第1のディレクトリを、コンテナの第1のディレクトリへマウントするステップと、コンパイルされるソースコードが保存された前記ホストOSの第2のディレクトリを、前記コンテナの第2のディレクトリへマウントするステップと、前記コンテナにおいて、前記コンパイラを用いて前記ソースコードをコンパイルしてプログラムを生成するステップと、生成された前記プログラムを前記コンテナの前記第2のディレクトリに保存することにより、前記ホストOSの前記第2のディレクトリに前記プログラムを生成するステップを有する。
実施形態に係るプログラム生成装置は、CPUと、ホストOSのソフトウェア構成を記憶した記憶装置を有する。前記CPUは、複数のディストリビューションで実行できるプログラムを、前記複数のディストリビューションで生成できるコンパイラが保存されたホストOSの第1のディレクトリを、コンテナの第1のディレクトリへマウントし、コンパイルされるソースコードが保存された前記ホストOSの第2のディレクトリを、前記コンテナの第2のディレクトリへマウントし、前記コンテナにおいて、前記コンパイラを用いて前記ソースコードをコンパイルしてプログラムを生成し、生成された前記プログラムを前記コンテナの前記第2のディレクトリに保存することにより、前記ホストOSの前記第2のディレクトリに前記プログラムを生成するように構成されている。
実施形態に係るプログラム生成装置のハードウェア構成図。 実施形態に係るプログラム生成装置の機能構成図。 実施形態に係るプログラム生成装置のハードディスク内のホストOSのソフトウェア構成図。 実施形態に係るプログラム生成装置が実行するプログラムの生成の処理手順と処理内容を示すフローチャートである。 図4のフローチャートのステップS101の実施後におけるDebianコンテナのソフトウェア構成図。 図4のフローチャートのステップS103の実施後におけるDebianコンテナのソフトウェア構成図。 図4のフローチャートのステップS106の実施後におけるDebianコンテナのソフトウェア構成図。 図4のフローチャートのステップS109の実施後におけるホストOSのソフトウェア構成図。
以下、図面を参照して、実施形態について説明する。
[構成]
(ハードウェア構成)
先ず、図1を参照して、実施形態に係るプログラム生成装置100のハードウェア構成に説明する。図1は、実施形態に係るプログラム生成装置100のハードウェア構成を示す図である。プログラム生成装置100は、コンピュータで構成される。たとえば、プログラム生成装置100は、パーソナルコンピュータやサーバコンピュータ等で構成される。
図1に示されるように、プログラム生成装置100は、CPU101とRAM102とディスプレイ103とキーボード104とNIC105とハードディスク106とシステムバス107を有する。プログラム生成装置100は、これらに加えて、他の周辺装置を有していてもよい。
CPU101とRAM102とディスプレイ103とキーボード104とNIC105とハードディスク106は、システムバス107を介して互いに電気的に接続されており、システムバス107を介してデータや命令のやりとりを行う。
CPU101は、プロセッサであり、プログラムの実行、データの処理を行うハードウェアである。CPU101は、RAM102とディスプレイ103とキーボード104とNIC105とハードディスク106を制御する。
RAM102は、データを一時的に記憶する補助記憶装置である。RAM102は、CPU101が実行する処理に必要なプログラムとデータを一時的に記憶する。
ディスプレイ103は、データを出力する出力装置である。ディスプレイ103は、種々の情報をユーザに提示する。
キーボード104は、データを受け取る入力装置である。キーボード104は、CPU101に実行させる命令、ハードディスク106に記憶するデータ等を受け取る。
NIC105は、ネットワークインターフェースカードである。NIC105は、データを入出力するために通信ネットワークに接続するカード型の装置である。
ハードディスク106は、データを永続的に記憶する補助記憶装置である。ハードディスク106は、外部機器やネットワークを介して供給されるプログラムやデータを記憶しており、CPU101の処理に必要なプログラムとデータをRAM102に提供する。
CPU101は、ハードディスク106から必要なプログラムを、RAM102に読み込み実行することにより、各種の処理を行う。プログラム実行時、CPU101は、RAM102にデータを読み込み、読み込んだデータを演算処理し、演算処理したデータをRAM102に提供する。
(機能構成)
次に、図2を参照して、プログラム生成装置100の機能構成について説明する。図2は、プログラム生成装置100の機能構成を模式的に示す図である。プログラム生成装置100は、コンテナ型の仮想環境を実現するプラットフォームであるコンテナエンジン120がホストOS110にインストールされている。コンテナ130は、コンテナイメージをコンテナエンジン120にマウントすることにより形成される。コンテナ130は、互いに隔離されたアプリケーション実行環境を提供する。各コンテナ130は、アプリケーション、ライブラリ、ミドルウェア等を含み、ホストOS110のカーネルを利用して動作する。たとえば、コンテナエンジン120は、Docker(登録商標)エンジンまたはDocker(登録商標)ホストであり、コンテナ130は、Docker(登録商標)コンテナである。
(ソフトウェア構成)
次に、図3を参照して、ハードディスク106内のホストOS110のソフトウェア構成について説明する。図3は、プログラム生成装置100のハードディスク106内のホストOS110のソフトウェア構成を模式的に示す図である。
ハードディスク106内には、ホストOS110の/home/userディレクトリ200、/optディレクトリ220、/usrディレクトリ230、/etcディレクトリ241、/binディレクトリ242、/libディレクトリ243、/bootディレクトリ244、/rootディレクトリ245、/varディレクトリ246が形成されている。
/home/userディレクトリ200は、ユーザのホームディレクトリである。/home/userディレクトリ200は、作業ディレクトリ210を有する。作業ディレクトリ210は、作業ファイルが保存されるディレクトリである。作業ディレクトリ210内には、Makefile211とソースコード212が保存されている。ソースコード212は、コンパイルされるコードである。Makefile211は、コンパイルのルールを記述したファイルである。
また、/home/userディレクトリ200に内は、Debianコンテナ201、Fedraコンテナ202、RHELコンテナ203、SUSEコンテナ204、Ubuntuコンテナ205、CentOSコンテナ206が保存されている。Debianコンテナ201は、Debianというディストリビューションを内包している。同様に、Fedraコンテナ202は、Fedraというディストリビューションを内包している。RHELコンテナ203は、RHELというディストリビューションを内包している。SUSEコンテナ204は、SUSEというディストリビューションを内包している。Ubuntuコンテナ205は、Ubuntuというディストリビューションを内包している。CentOSコンテナ206は、CentOSというディストリビューションを内包している。
/optディレクトリ220には、追加で選択可能なアプリケーションパッケージがインストールされるディレクトリである。/optディレクトリ220には、インテルコンパイラ221とコンパイラ設定ファイル222が保存されている。インテルコンパイラ221は、複数のディストリビューションで実行できるプログラムを、複数のディストリビューションで生成できるコンパイラである。インテルコンパイラ221は、ホストOS110にインストールされている。インテルコンパイラ221は、同じ機能を有する他のコンパイラに置き換えられてもよい。ディストリビューションは、たとえば、Linuxディストリビューションである。Linuxディストリビューションは、Linuxのカーネルとその動作に必要なライブラリとソフトウェアをひとまとめにしたものである。コンパイラ設定ファイル222は、インテルコンパイラ221が必要とする環境変数を記述したファイルである。
前述したDebian、Fedra、RHEL、SUSE、Ubuntu、CentOSはいずれも、Linuxディストリビューションの一種であり、インテルコンパイラ221は、これらのLinuxディストリビューションのいずれにおいても、コンパイルを実行可能である。
/usrディレクトリ230は、ユーザアプリケーションがインストールされるディレクトリである。/usrディレクトリ230には、Ubuntuコマンド231、Ubuntuライブラリ232、Ubuntuヘッダファイル233、wrapper234が保存されている。Ubuntuコマンド231とUbuntuライブラリ232とUbuntuヘッダファイル233は、コンテナエンジン120を構成する。wrapper234は、実行するコンテナの引数やインテルコンパイラ221の引数等、プログラムの生成に必要な引数を記録している。
/etcディレクトリ241は、Linuxの各種ファイルが保存されたディレクトリである。/binディレクトリ242は、基本的なコマンドが保存されたディレクトリである。/libディレクトリ243は、共有ライブラリが保存されたディレクトリである。/bootディレクトリ244は、起動に必要なファイルが保存されたディレクトリである。/rootディレクトリ245は、ルートアカンウントのホームディレクトリである。/varディレクトリ246は、使用中に生成され削除されるデータが保存されるディレクトリである。
[動作]
次に、図4を参照して、プログラム生成装置100が実行するプログラムの生成の処理手順と処理内容について説明する。図4は、プログラム生成装置100が実行するプログラムの生成の処理手順と処理内容を示すフローチャートである。プログラムの生成は、CPU101とRAM102とハードディスク106の処理によって行われる。
ステップS101において、wrapper234の引数を受け取り、指定されたコンテナを実行する。実施形態では、Debianコンテナ201を実行する例について説明する。
図5は、ステップS101の実施後におけるDebianコンテナ201のソフトウェア構成を模式的に示す図である。Debianコンテナ201は、/home/userディレクトリ300、/optディレクトリ320、/usrディレクトリ330、/etcディレクトリ241、/binディレクトリ242、/libディレクトリ243、/bootディレクトリ244、/rootディレクトリ245、/varディレクトリ246を有する。
/home/userディレクトリ300は、作業ディレクトリ310を有する。/usrディレクトリ330には、Debianコマンド331、Debianライブラリ332、Debianヘッダファイル333が保存されている。
この時点では、作業ディレクトリ310と/optディレクトリ320は空である。
ステップS102において、インテルコンパイラ221とコンパイラ設定ファイル222が保存されたホストOS110の/optディレクトリ220を、Debianコンテナ201の/optディレクトリ320へマウントする。
ステップS103において、Makefile211とソースコード212が保存されたホストOS110の作業ディレクトリ210を、Debianコンテナ201の作業ディレクトリ310へマウントする。
図6は、ステップS102の実施後におけるDebianコンテナ201のソフトウェア構成を模式的に示す図である。ステップS101の実施の結果、Debianコンテナ201の/optディレクトリ320に、インテルコンパイラ221とコンパイラ設定ファイル222が保存される。ステップS102の実施の結果、Debianコンテナ201の作業ディレクトリ310に、Makefile211とソースコード212が保存される。
ステップS104において、コンパイラ設定ファイル222の設定を実行する。すなわち、コンパイラ設定ファイル222を読み込み、インテルコンパイラ221が必要とする環境変数を設定する。
ステップS105において、wrapper234の引数で受け取った引数をつけてインテルコンパイラ221を実行する。つまり、作業ディレクトリ310に保存されたソースコード212を、作業ディレクトリ310に保存されたMakefile211に記述されたルールに従って、インテルコンパイラ221によってコンパイルして、プログラム213を生成する。
ステップS106において、Makefile211に記述されたルールに従って、プログラム213を作業ディレクトリ310に保存する。
図7は、ステップS106の実施後におけるDebianコンテナ201のソフトウェア構成を模式的に示す図である。ステップS104~ステップS106の実施の結果、Debianコンテナ201の作業ディレクトリ310に、プログラム213が保存される。このとき、ホストOS110の作業ディレクトリ210に、プログラム213が生成される。
ステップS107において、Debianコンテナ201の作業ディレクトリ310をアンマウントする。これにより、Debianコンテナ201の作業ディレクトリ310は空になる。つまり、作業ディレクトリ310から、Makefile211とソースコード212とプログラム213が削除される。
ステップS108において、Debianコンテナ201の/optディレクトリ320をアンマウントする。これにより、Debianコンテナ201の/optディレクトリ320は空になる。つまり、/optディレクトリ320から、インテルコンパイラ221とコンパイラ設定ファイル222が削除される。その結果、Debianコンテナ201は、ステップS101の実施後の状態に戻る。
ステップS109において、Debianコンテナ201の実行を終了する。
図8は、ステップS109の実施後におけるホストOS110のソフトウェア構成を模式的に示す図である。ステップS104~ステップS106の実施の結果、ホストOS110の作業ディレクトリ210に、プログラム213が生成される。ステップS107~ステップS109の実施の後も、ホストOS110の作業ディレクトリ210には、プログラム213が残る。
実施形態では、Debianコンテナ201を実行する例について説明したが、他のコンテナ、すなわち、Fedraコンテナ202、RHELコンテナ203、SUSEコンテナ204、Ubuntuコンテナ205、CentOSコンテナ206に対しても、同じ処理によって、プログラムを生成することができる。
[効果]
実施形態では、次の手順でプログラムを生成する。(1)インテルコンパイラ221とコンパイラ設定ファイル222が保存されたホストOS110の/optディレクトリ220を、Debianコンテナ201の/optディレクトリ320へマウントする。(2)コンパイルされるソースコード212が保存されたホストOS110の作業ディレクトリ210を、Debianコンテナ201の作業ディレクトリ310へマウントする。(3)Debianコンテナ201において、ソースコード212をコンパイルしてプログラム213を生成する。(4)生成したプログラム213をDebianコンテナ201の作業ディレクトリ310に保存することにより、ホストOS110の作業ディレクトリ210にプログラム213を生成する。
このため、複数のコンテナ毎にコンパイラを用意することをせずに、一つのプログラム生成装置100にインストールされた一つのインテルコンパイラ221を用いて、そのインテルコンパイラ221が対応している複数のディストリビューションで構築されたコンテナ内において実行可能なプログラムを生成することができる。すなわち、インテルコンパイラ221を簡単な手続きで呼び出してプログラムを生成することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100…プログラム生成装置、101…CPU、102…RAM、103…ディスプレイ、104…キーボード、106…ハードディスク、107…システムバス、110…ホストOS、120…コンテナエンジン、130…コンテナ、200…/home/userディレクトリ、201…Debianコンテナ、202…Fedraコンテナ、203…RHELコンテナ、204…SUSEコンテナ、205…Ubuntuコンテナ、206…CentOSコンテナ、210…作業ディレクトリ、212…ソースコード、213…プログラム、220…/optディレクトリ、221…インテルコンパイラ、222…コンパイラ設定ファイル、230…/usrディレクトリ、231…Ubuntuコマンド、232…Ubuntuライブラリ、233…Ubuntuヘッダファイル、234…wrapper、241…/etcディレクトリ、242…/binディレクトリ、243…/libディレクトリ、244…/bootディレクトリ、245…/rootディレクトリ、246…/varディレクトリ、300…/home/userディレクトリ、310…作業ディレクトリ、320…/optディレクトリ、330…/usrディレクトリ、331…Debianコマンド、332…Debianライブラリ、333…Debianヘッダファイル。

Claims (4)

  1. 複数のディストリビューションで実行できるプログラムを、前記複数のディストリビューションで生成できるコンパイラが保存されたホストOSの第1のディレクトリを、コンテナの第1のディレクトリへマウントするステップと、
    コンパイルされるソースコードが保存された前記ホストOSの第2のディレクトリを、前記コンテナの第2のディレクトリへマウントするステップと、
    前記コンテナにおいて、前記コンパイラを用いて前記ソースコードをコンパイルしてプログラムを生成するステップと、
    生成された前記プログラムを前記コンテナの前記第2のディレクトリに保存することにより、前記ホストOSの前記第2のディレクトリに前記プログラムを生成するステップ
    を有するプログラム生成方法。
  2. 前記ホストOSの前記第1のディレクトリには、コンパイラ設定ファイルが保存されており、
    前記プログラムを生成するステップの前に、前記コンテナにおいて、前記コンパイラ設定ファイルに基づいて前記コンパイラが必要とする環境変数を設定するステップを有し、
    前記プログラムを生成するステップは、設定された前記環境変数に基づいて前記コンパイラを用いて前記ソースコードをコンパイルする、
    請求項1に記載のプログラム生成方法。
  3. CPUと、
    ホストOSのソフトウェア構成を記憶した記憶装置を有し、
    前記CPUは、
    複数のディストリビューションで実行できるプログラムを、前記複数のディストリビューションで生成できるコンパイラが保存されたホストOSの第1のディレクトリを、コンテナの第1のディレクトリへマウントし、
    コンパイルされるソースコードが保存された前記ホストOSの第2のディレクトリを、前記コンテナの第2のディレクトリへマウントし、
    前記コンテナにおいて、前記コンパイラを用いて前記ソースコードをコンパイルしてプログラムを生成し、
    生成された前記プログラムを前記コンテナの前記第2のディレクトリに保存することにより、前記ホストOSの前記第2のディレクトリに前記プログラムを生成する
    ように構成されているプログラム生成装置。
  4. 前記ホストOSの前記第1のディレクトリには、コンパイラ設定ファイルが保存されており、
    前記CPUは、
    前記プログラムを生成するステップの前に、前記コンテナにおいて、前記コンパイラ設定ファイルに基づいて前記コンパイラが必要とする環境変数を設定し、
    設定された前記環境変数に基づいて前記コンパイラを用いて前記ソースコードをコンパイルする
    ように構成されている、請求項3に記載のプログラム生成装置。
JP2022002403A 2022-01-11 2022-01-11 プログラム生成方法およびプログラム生成装置 Active JP7724163B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022002403A JP7724163B2 (ja) 2022-01-11 2022-01-11 プログラム生成方法およびプログラム生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022002403A JP7724163B2 (ja) 2022-01-11 2022-01-11 プログラム生成方法およびプログラム生成装置

Publications (2)

Publication Number Publication Date
JP2023102064A JP2023102064A (ja) 2023-07-24
JP7724163B2 true JP7724163B2 (ja) 2025-08-15

Family

ID=87425307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022002403A Active JP7724163B2 (ja) 2022-01-11 2022-01-11 プログラム生成方法およびプログラム生成装置

Country Status (1)

Country Link
JP (1) JP7724163B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180285156A1 (en) 2017-03-31 2018-10-04 International Business Machines Corporation Container chaining for automated process completion
US20180336123A1 (en) 2017-05-17 2018-11-22 Red Hat, Inc. Container testing using a directory and test artifacts and/or test dependencies
JP2018536206A (ja) 2015-10-23 2018-12-06 オラクル・インターナショナル・コーポレイション マルチテナント・ミドルウェア・アプリケーションから呼出されたosプログラムのマルチテナント実行のためのシステムおよび方法
US20210019169A1 (en) 2019-07-16 2021-01-21 International Business Machines Corporation Container-based virtualization system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018536206A (ja) 2015-10-23 2018-12-06 オラクル・インターナショナル・コーポレイション マルチテナント・ミドルウェア・アプリケーションから呼出されたosプログラムのマルチテナント実行のためのシステムおよび方法
US20180285156A1 (en) 2017-03-31 2018-10-04 International Business Machines Corporation Container chaining for automated process completion
US20180336123A1 (en) 2017-05-17 2018-11-22 Red Hat, Inc. Container testing using a directory and test artifacts and/or test dependencies
US20210019169A1 (en) 2019-07-16 2021-01-21 International Business Machines Corporation Container-based virtualization system

Also Published As

Publication number Publication date
JP2023102064A (ja) 2023-07-24

Similar Documents

Publication Publication Date Title
US6760905B1 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
KR100713740B1 (ko) 자원-제약 장치를 위한 객체지향 명령어 세트
Wen et al. Wasmachine: Bring iot up to speed with a webassembly os
US20050223018A1 (en) Efficient linking and loading for late binding and platform retargeting
JPH11237991A (ja) コンパイル済アクティベーションを動的に逆最適化する方法及び装置
JP2002508560A (ja) マルチプル・クラスファイルのランタイムイメージへの結合
CN111324421A (zh) 一种容器镜像的提供方法、加载方法及相关设备和系统
US9141358B2 (en) Reducing application startup time by optimizing spatial locality of instructions in executables
US20040083467A1 (en) System and method for executing intermediate code
US20260104870A1 (en) Smart contract calling methods, execution methods, computer devices, and storage media
CN106293870A (zh) 计算机系统及其策略导向压缩方法
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
Engelke et al. Efficient LLVM-based dynamic binary translation
CN118626298A (zh) 一种代码异常处理的方法及装置
Lagartos et al. Efficient runtime metaprogramming services for Java
US20020087958A1 (en) Method and apparatus of transforming a class
Kaur et al. Implementation of linux optimization technique for ARM based system on chip
US20260099310A1 (en) Wasm bytecode optimization methods, execution methods, computer devices, and storage media
US20260093465A1 (en) Wasm bytecode optimization methods, execution methods, computer devices, and storage media
WO2025020395A1 (zh) 一种优化wasm字节码的方法及执行方法、计算机设备及存储介质
JP7724163B2 (ja) プログラム生成方法およびプログラム生成装置
JP5506936B2 (ja) 意味論的値を利用するオブジェクト・レベルの互換性及びクラスのサイズ変更
US7159222B1 (en) Highly componentized system architecture with object mutation
Hong et al. Java client ahead-of-time compiler for embedded systems
CN114253523A (zh) 读取裸设备的方法、装置、计算机设备和介质

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20230104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250618

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250708

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250804

R150 Certificate of patent or registration of utility model

Ref document number: 7724163

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150