Interstellar Consoleは、みさと天文台での定期上映のために職員が自ら制作した、オープンソースのデジタルプラネタリウム投影ソフトウェアシステムです。 スクリプト言語100%で記述され、Stellarium を ネットワーク経由で制御することで、投影システムを実現しています。
特徴は以下のとおりです:
みさと天文台では2025年2月22日以降、ライブ解説によるプラネタリウム定期上映で本システムを使用しています。Stellariumの各種パラメータや天の川のテクスチャーを丁寧に調整し、星空のリアルさは商用システムと変わないレベルを実現しました。解説員は5名いますが、全員が本システムに大きな不満は無く、みさと天文台としては、今後プロプライエタリなシステムでプラネタリウム上映を行う事は考えられなくなりました。
ライブ解説においては、操作エラーを招かないGUIが求められるため、ボタン類には大きめの面積が必要です。しかし、プラネタリウム上映のためのコンソールではON/OFFスイッチがあまりにも多く、これを平面的なGUIとするのは不可能ですので、タブで切り替えて使えるデザインとしています。
特徴は以下のとおりです:
メインGUIの全パターンについて、右図下部のリンク(1から8)で確認できます。どのような機能があるかをご確認ください。
Copyright (C) 2025 Misato Observatory
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Copyright (C) 2025 Misato Observatory and Marin Tsunemi
Using constellation art files in art/ directory is licenced only for Interstellar Console.
Distribution without Interstellar Console is not permitted. If you want to use them with a software other than Interstellar Console, please contact us.
PC1台で運用する場合は、以下のとおりホストマシンのみセットアップしてください。
cmd.exe」と入力し、コマンドプロンプトを起動し、右上の×印で閉じる。
C:\Program Files\Stellarium\scripts\interstellar-console\ にあるすべてのファイルについて、バックアップをとってください。
上記 5. をスキップしてください。Tcl/Tk-8.6系(Pythonに付属)の場合はそのまま動作しますが、Tck/Tk-9系の場合は、上記 9. まで完了した後、C:\Program Files\Stellarium\scripts\interstellar-console\tcl_utf8\
にあるtclファイル(UTF-8版のGUIソースファイル)を
C:\Program Files\Stellarium\scripts\interstellar-console\ にコピー(上書き)してください。
cmd.exe と入力し、【管理者権限で】実行cd C:%HOMEPATH%\Downloads\interstellar-console_1.3RC5の後 Enterキーを押す。
.\interstellar-console\setup\do.bat "%CD%\interstellar-console"の後 Enterキーを押す。
リモートマシンとは、ホストマシンの Stellarium + Interstellar Console をネットワーク経由で制御するためのPCです。 ホストマシンと全く同じ GUI でリモートマシンから操作できます。 タッチパネル搭載のPC(Windows、MacOS)でも利用可能です。
interstellar-consoleフォルダに入り、isc_remote.exe を実行し、IPアドレスを入力して接続
interstellar-consoleフォルダをファインダで開き、isc_remote.sh をターミナルにドラッグ&ドロップで実行し、IPアドレスを入力して接続
用途に応じて、いずれかの動作モードを選択してください。動作モードの決定は、ホストマシンの GUI でのみ可能です。
Interstellar Consoleで運用されている場合は、調査・研究のため、みさと天文台(メール:info(at)obs.jp)まで ご連絡くださると助かります。 インストールや動作で問題があれば、遠慮せずに質問をお願いします。質問は、ソフトウェアの改良に大いに役立ちます。
以下の解説において、各サブセクションで扱われる設定ファイルのファイル名は、タイトルの〈○○○.○〉で示します。
すべての設定ファイルは、
C:\Program Files\Stellarium\scripts\interstellar-console
にあり、プレーンテキストです。Windows標準のメモ帳など、お好みのエディタで編集してください。
オフライン状態でStellariumをインストールすると、タイムゾーンがフランスの標準時(UTC+1)に設定されます。 日本に設定するには、以下の手順で行います:
domeモードでは全天周スクリーンに投影される事を前提としているため、 Stellariumはフルスクリーンで起動されますが、 意図したデスクトップに現れない場合は、以下の手順で設定します。
以上で設定完了です。domeモードで起動し、確認してください。
localInitLocation.ssc〉メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
lon に、緯度を lat に、標高を altitude に設定// longitude. E is +ve. values out of the range -180..180 const lon_h = +135; const lon_m = 24; const lon_s = 22.1; // latitude. N is +ve. values out of the range -90..90 const lat_d = +34; const lat_m = 8; const lat_s = 40.3; // altitude in meters. const altitude = 400.0; const lon = lon_h + (lon_m/60.0) + (lon_s/3600.0); const lat = lat_d + (lat_m/60.0) + (lat_s/3600.0);
localConfig.ssc〉メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
以下のように、動作モードごとに設定できるようになっています。設定項目は順に、フォントサイズ、線幅(ピクセル)、星表現[絶対・相対]、天の川[明るさ・色の濃さ]、地上風景の透過率、天体情報の表示形式、最小描画数 です。
if ( getFlagDomeMode() != true ) {
// Navigation Mode
const font_size_medium = 15;
const font_size_large = 18;
const line_thickness = 1;
const absolute_star_scale = 2.0;
const relative_star_scale = 0.8;
const milkyway_intensity = 1.0;
const milkyway_saturation = 1.0;
const landscape_transparency = 0.0;
// Select from "AllInfo", "DefaultInfo", or "ShortInfo"
const selected_object_info = "AllInfo";
// Saving power when lower time-rate (default is 18)
const min_fps = 4.0;
}
else {
// Dome Mode
const font_size_medium = 30;
const font_size_large = 35;
const line_thickness = 2;
const absolute_star_scale = 3.0;
const relative_star_scale = 0.7;
const milkyway_intensity = 1.0;
const milkyway_saturation = 1.0;
const landscape_transparency = 0.3;
const selected_object_info = "None";
const min_fps = 12.0;
}
全天周スクリーンへの投影で最も重要は星表現は、
absolute_star_scale はプロジェクターの解像度÷800(1080pの場合は1.35)、
relative_star_scale は 0.7、
から調整してみてください。
フォントサイズ、線幅、天体情報の表示形式 以外は、メインGUIより操作可能です。
最小描画数(min_fps)はスクリーン上での時刻を進めない場合に1秒あたり描画される枚数です。これを下げるとラベル表示などがスムーズではなくなりますが、PCの消費電力を小さくすることができます。
設定ファイルを保存したら、メインGUIの Generalフレーム内「初期設定」の「全」ボタンをクリックし、設定内容を確認します。
localInitView.ssc〉「ビュー」とは、投影法や投影座標に関する事を指します。全天周投影の場合、プロジェクターの仕様に深く関わってきます。 メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
動作モードごとに設定可能です。設定すべきところは、以下のコメントで示してありますので、必要に応じて変更してください。
// Navigation Mode
// Dome Mode
メインGUIの「設定」タブより、Configurationフレーム内で、上記の投影モードなどを含めビューに関する操作が可能です。GUIで各設定についての最適値を見つけておき、設定ファイルに書き込んでください。
投影モードは設定ファイルにあるとおり core.setProjectionMode(); で設定します。設定可能な投影モードは以下のとおりです:
設定ファイルを保存したら、メインGUIの Generalフレーム内「初期設定」の「VIEW」ボタンをクリックし、設定内容を確認します。
全天周スクリーン上の0.5度は実際の空のそれよりも小さいため、プラネタリウムでは一般に太陽や月を数倍のサイズで表示しています。 これらに関する設定ファイルについても、 メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
localInitSunScale.sscSolarSystem.setSunScale();localInitMoonScale.sscSolarSystem.setMoonScale();設定ファイルを保存したら、メインGUIの Solar Systemフレーム内「天体 表示サイズ」以下のボタンをクリックし、設定内容を確認します。
localInitSettings.ssc〉
localInitSettings.ssc の以下の部分を編集すると、星座絵を変更することができます。
//
// Reset general settings
//
// Use art by Misato observatory & Marin Tsunemi with japanese constellation lines.
core.setSkyCulture("japanese");
// Use default art with japanese constellation lines.
//core.setSkyCulture("japanese_default-art");
core.setSkyCulture(…); で設定しています。…に "japanese" を指定すると みさと天文台オリジナルの星座絵を、
"japanese_default-art" を指定すると Stellarium オリジナルの星座絵を使用します。
「// 」はそれより右側のコードが無効という意味ですので、上記の場合は "japanese" が有効になっています。
localInitSettings.ssc を変更し、メインGUI の初期設定「全」ボタンをクリックすると設定が反映されます。
localInitSettings.ssc〉文字や線の色、星のまたたき、散在流星などの設定ができます。
メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
詳しくは、Stellarium Scriptに関する公式ドキュメント(英語) をご覧ください。
全天周スクリーンに投影する場合、Stellarium付属のテクスチャーではリアルさが不足するため、
投影用に最適化されたテクスチャーを用意しています。
そのファイルは
C:\Program Files\Stellarium\scripts\interstellar-console\milkyway\milkyway.png
で、夏の天の川では淡い部分が表現され、冬の天の川では落ち着いた光量になって実際の見え方に近づきます。
インストーラで天の川のテクスチャーについての質問に「はい」と答えると、
上記のファイルがインストールされます。後でテクスチャーを変更する場合は、新しいテクスチャーを
C:\Program Files\Stellarium\textures\milkyway.png
に上書きします。
付属のテクスチャーでもリアルさが不足する場合は、C:\Program Files\Stellarium\scripts\interstellar-console\milkyway にある README.sjis.txt
を熟読し、付属のツールでテクスチャーを調整してください。付属のツールが難しいと感じる場合は、GIMPなどのレタッチツールで調整しても良いでしょう。
updateLightMoonPollution.ssc〉コード先頭付近に以下の定数があります:
// Base parameters for pollutions const light_pollution_base = 0.0010; const moon_pollution_base = 0.0010;
それぞれが、光害・月の影響を決めるパラメータです。必要に応じて変更してください。
これらの値は、日食や月食にも影響を与えます。
exec_date-monitor.bat〉Stellariumには、魚眼投影時に時刻を適切に表示する機能が見当たりません。 全天周スクリーン上に時刻を表示するには、Interstellar Console付属のアプリ「オンスクリーン時計」を使用し、Stellariumのフルスクリーンウィンドウの上にそのアプリによる時刻表示(右図上スクリーンショット)を被せます。
オンスクリーン時計についての設定は、メインGUIの「設定」タブより、Configurationフレーム内「設定ファイル編集」以下のボタンで編集可能です。
オンスクリーン時計は、メインGUIの Generalフレーム内「時計 on Screen」の ONボタンで起動できます。起動時の表示場所は、GUIと同じデスクトップですので、以下のパラメータを調整して、全天周スクリーンの方位表示(東・西・南・北のいずれか)の左右に水平に表示されるようにします。
以下でパラメータについての詳細を説明します。
set ORIENTATION=0 set FONT_SIZE=24 set RADIUS_FOR_PLACING_CHARS=1630 set ANGLE_BETWEEN_TWO_CHARS=1.2
最初に RADIUS_FOR_PLACING_CHARS を魚眼プロジェクターの解像度の約半分に設定することをお勧めします。
これは文字を配置するために使用される半径で、
1080pプロジェクターでは約490、2160pプロジェクターでは約980です(高度5度の位置に表示させる場合)。
ただし、コンソール用デスクトップが150%表示の場合は、1.5倍した値を指定します。
ORIENTATION パラメータで全体を回転させることができます。0:回転なし、1:左90度回転、2:180度回転、3:右90度回転 です。デスクトップで南が下側の場合、それぞれ次のように適合します: 0=南、1=西、2=北、3=東。
ANGLE_BETWEEN_TWO_CHARS パラメータでは、文字の間隔を角度で指定します。やや広めにとってください。
set POS_X_FOR_SCREEN=+200 set POS_Y_FOR_SCREEN=+100
上記は、初期表示位置(コンソール用デスクトップの左上)からの移動量です。 全天周スクリーン用デスクトップの位置によって、符号や数値が変わります。
現場での調整では、地上風景をOFF、地平グリッドを表示し、「時計 on Screen」の「調整用」ボタンで中央位置を表示させておくと、値を追い込みやすくなります。
セットアップのセクションで説明したとおり、 開始するにはデスクトップのショートカット 「isc_navigator」(デスクトップアプリとして使用) または、 「isc_dome」(ドームスクリーン投影用) をダブルクリックします。
プラネタリウム解説を始める前に、必ず初期設定の「全」ボタンをクリックし、初期化を行ってください。 直前の解説担当者が設定を残している可能性があるためです。初期化後に時刻などを設定します。
終了時は、Interstellar ConsoleメインGUIの「終」ボタンをクリックします。 ソフトウェア・ハードウェアの問題などでトラブルが発生した場合、メインGUIの「×」ボタンもしくは デスクトップの「isc_gui」をダブルクリックし、「全終了」を選んで、正しく終了処理を行ってください。 終了処理が行わわれなかった場合、サーバプロセスが消されずに残ります。
投影プログラムが終了したら、初期設定の「全」ボタンをクリックし、次の投影プログラムがスムーズに開始できるようにします。 その後、「終」ボタンをクリックし、ダイアログ(右スクリーンショット)を出した状態にしておくと 省電力待機モードになり、 CPU使用率を約0%に下げることができます。投影開始時に「操作へ戻る」ボタンをクリックしてください。
Windows では isc_remote.exe をダブルクリックで実行,
MacOS では isc_remote.sh をターミナルにドラッグ&ドロップで実行します。
1台のホストマシンに対し最大9台のリモートマシンを接続できます。
リモートマシンでは、メインGUIにある「最小FPS値」の数値で、省電力待機モードかどうかがわかります。 1.0未満の場合、省電力待機モードになっていますので、解除する必要があります。 解除するには、最小FPS値の「初期値」ボタンをクリックしてください。
【注意】ホストマシン上のGUI(メイン・日付時刻)を閉じないでください (GUIプログラム内で光害・月明かりなどを制御しています)。 邪魔であれば、最小化してください。
GUI内の「編集」ボタンをクリックすると設定ファイル編集のために エディタが起動します。内容を変更して保存した後、GUIに反映させるためには GUIの再起動が必要です。
メインGUIの「終」ボタンをクリックし、「GUI再起動」を選択します。
ウィンドウの「×」ボタンでGUIを閉じ、GUIを起動しなおします。
星座、アステリズム、太陽系、グリッドラインなどの表示スイッチには、 「ON・Off」表記、「SET・Unset」表記があります。 それぞれ意味は以下のとおりです:
原則的には、上位スイッチが入らない場合、下位スイッチを入れても表示されません。
例えば「オリオン座」の星座線を表示させたい場合、「オリオン座」の SET ボタン、 「星座線」の ON ボタンの順にクリックします。 しかしながら、クリックの順を逆にすると、 Stellarium における「星座表示時の例外動作」が働きますのでご注意ください。 全星座が Unset の状態で 「星座線」の ON ボタンをクリックすると すべての星座線が表示されてしまいます。
星座に関する表示をすべて消すには、Constellatonフレーム内の Offボタン、Unsetボタンをすべてクリックしてください。 これは、次の星座表示の準備のためです。
アステリズムについては、線を表示するための「ON」ボタンがありませんが、 下位スイッチの「SET」ボタンが押されたら、 内部で上位スイッチが入るようになっています。
太陽系、グリッドラインについては上位スイッチ・下位スイッチが厳密なルールで働きます。
初期設定では、光害・月明かりは両方ともONに設定されます。必要に応じて、 Generalフレーム内の「太陽系・光害」のボタンで切り替えてください。
Stellariumには「月だけを消す」機能が無いため、 月明かりを消すために太陽系を消す必要があります。 そのため、GUIもそのように作られています。
光害・月明かりの影響は設定ファイルで変更できます。 設定セクション をご覧ください。
散存流星の投影ができます。投影する場合は、 時刻レートを「1.0」に設定してください(「実」ボタンをクリックします)。
Stellariumの流星に関する機能は発展途上のようで、ZHRを相当に大きく しないと流星がよく見えません。
プラネタリウム上の時刻を一定の速度で進める(または逆転させる)には、 メインGUIのGeneralフレームにある「時刻レート」を使います。 1.0に設定すると「リアルタイム」に、 1.0を超える値を設定すると「早回し」、負の数を設定すると「逆転」します。
特定の日付時刻に設定したい場合は、日付時刻GUI(右図)にある 紫色・緑色のボタンを使います。 「即送信」にチェックを入れておくと、紫色・緑色ボタンがクリックされた 直後にプラネタリウム上の日付時刻がアップデートされます。
キーボードから日付時刻を入力する事もできます。 「スクリーン日時」右の日付または時刻をクリックしてください。
投影開始時刻を「List of User's Time」フレームに登録しておくと便利です。 「編集」ボタンをクリックすると、設定ファイル編集のためにエディタが起動し、 内容を変更することができます。 書き換えて保存したら、時刻設定GUIを「×」で閉じて、メインGUIの左上の 「日時」ボタンをクリックしてください。 日付時刻GUIが再起動され、時刻ボタンがアップデートされます。
list_sky-image.txtメインGUI左上の「Media」ボタンをクリックすると、Media GUI が開きます。 チェックボックスのクリックにより、あらかじめ設定された画像を空に貼ることができます。 画像の設置と設定は、ホストマシンでのみ可能です。
貼りたい画像ファイルは png などの一般的な画像フォーマットで正方形で用意し、
ホストマシンの
C:\Program Files\Stellarium\scripts\interstellar-console\media
に置きます。なお、ファイル名には半角の英数字と記号「_」「-」「.」だけをお使いください(日本語不可)。
画像は、空に加算合成される形で表示されます。
すなわち、(R,G,B)=(0,0,0) は表示されませんので、元々の画像が長方形の場合、正方形に変換するときに余白は黒にします。
画像ファイルを置いたら、Media GUI の「編集」ボタンをクリックすると設定ファイル list_sky-image.txt
がエディタで開かれますので、画像を登録します。
設定ファイルは csv形式で、
サンプル(attension.png、www.obs.jp.png)が登録されていますので、
それらの行のパラメータを変更して挙動を確認してみてください。各行のパラメータは以下のとおりです:
例えば、注意事項やスライドショーを空に表示したい場合には、 座標系に「AzAlt」を指定し、lon,lat に 方位,高度 を指定します。
画像を設定ファイルに登録したら、Media GUI を右上の「×」で閉じ、 メインGUI左上の「Media」ボタンを押して Media GUI を開きなおすと、設定ファイルの内容が反映されます。
リモートマシンをご利用の場合は、上記のホストマシンでの設定の後、リモート側の Media GUI を開きなおしてください。

2台以上のプロジェクターによるエリア分割式の投影を必要とする大型の全天周スクリーンでは、射影変換システムが必要で、さらにプロジェクターもケースバイケースであるため、ここでは一発式の場合を扱います。
一発式のプロジェクターでは、大きく分けて3通りが考えられます。
1.の方法は高価すぎるためここでは議論しません。 2. の方法が簡単に思いますが、周辺収差が激しくあまり画質は良くありません。3. の方法では画質は狙えますし、リレーレンズと魚眼レンズとの両方にフランジバックが大きい一眼レフカメラ用レンズを使えば2インチ天頂ミラーで光路を曲げることもでき、縦向きにできないプロジェクターでも全天周投影が可能になるなど、応用が効きます。
プロジェクターの解像度は縦2160または縦2400ピクセルのものが良く使われているようですが、みさと天文台の経験では縦2400ピクセルのプロジェクターはNVIDIA Mosaicが可能なグラフィックスアダプタ+2系統のHDMIを必要とする上に、何らかの原因でMosaic設定が壊れるなどトラブルの原因となるため、あまりお勧めできません。また、NVIDIA Mosaicを設定するとQt6版のStellariumでは表示が崩れてしまうため、将来Qt5版が廃止された場合にStellariumをアップデートできなくなる事も考えられます。どのPCでもHDMIケーブル1本で出力できる縦2160ピクセルのネイティブ4kプロジェクターをお勧めします。
EDIDエミュレータは、PCからはディスプレイとして認識され、OS(Windowsなど)側のディスプレイ設定を自動変更させない事を目的としたデバイスです。PC─EDIDエミュレータ─ディスプレイ(またはプロジェクター)という接続で使い、ディスプレイの電源がOFFになっても、PCはディスプレイがあるものとして動作し続けます。
プラネタリウムなどの業務用投影システムや、多数のディプレイやプロジェクターを使用するトレード、プロジェクションマッピングでは、ディスプレイやプロジェクターの状態によってOS側の画面配置が自動変更されてしまうのでは困ります。この問題を解決するのがEDIDエミュレータで、それによって「PCでのディスプレイ設定を“固定化”する」事ができるというわけです。1920×1080や3840×2160のようによく使われる解像度のものは、安価なものが多数販売されています。 ディスプレイアダプタによっては、EDIDエミュレータに相当する機能を持つものもあります。
特殊な解像度もしくは多数のディスプレイを「業務で」使う場合は、プログラマブルなものを選ぶ必要があります。みさと天文台ではプロジェクションマッピングや Mitaka による3Dシアターも行っており、それらでは HD FURY社の「Dr.HDMI」(販売:MTG) を使っています。やや高価ですが、あらゆる解像度に対応できるだけでなく、ディスプレイ名称を1台ごとに設定できるので、特にプロジェクションマッピングにとっては必須アイテムと言えます。
Dr.HDMIに関するソフトウェアは、HD FURY社の Dr.HDMI、Dr.HDMI 4k ページよりダウンロードできます。EDIDデータの編集には、Deltacast社のEEDID_Editor が便利です。
本システムを制作するような場合、一般的にはコアとなるソフトウェアを改変するものです。しかし、Stellariumにはそれを制御するための強力な「Stellarium Script」が使えるため、外部にソフトウェアを追加するたけで様々なシステムを構築することができます。本システムにおいても、Stellarium実行ファイルには一切変更を加えていません。
このスクリプトはJavascriptベースなので習得も簡単で、APIも充実しています。さらに、8090番ポート経由でStellariumへこのスクリプトを送信したり、あらかじめ用意されたステータス(日付や天体データ)が取得できます(参照:ドキュメント)。しかし、LabelMgrで返されるラベルIDなどスクリプトを実行した時の出力データや返り値は、ファイルへの出力は可能でも8090番ポートから取得できないため、Stellariumとは別にファイル読み取り用プロセス「ISC Info Server」を起動し、スクリプトの結果を8091番ポート経由で取得しています。
Ver.1.3 からサポートされたリモートマシン用GUIは、ホスト用GUIからホスト固有の動作に関するウィジェットを 削除したものです。 一部のステータスが Stellarium → ファイル →「ISC Info Server」→ GUI という経路で 流れるため排他処理が必要ですが、「ISC Info Server」でリモートマシン9台をIPアドレスで管理しています。
GUI 構築に Tcl/Tk を使う事は、ほとんど反則と言って良いでしょう。 これは体験しないとわかりませんが、どれくらい反則なのかをテキストエディタのコードで見てみましょう:
text .tx -undo 1 pack .tx
以上、たった2行でテキストエディタの基本形は完成です(これって何バイト?)。 ファイルの読み書きはできないものの、コピー・カット・ペースト・UNDO が使える普通のテキストエディタとして機能します。 こんな調子で GUI が作れてしまうので、手早く作れてしまうのは当然です。
Interstellar Console の開発は、2025年2月5日にスタートし、Ver.1系の形にまとまったのは、11日後の2月16日です。 2月22日には、定期上映で利用が開始されています。 Tcl/Tk でなければ、工期をこれだけ短かくできなかったと確信していますが、 これを読まれている皆様にもある程度伝わると思います。
コーディングは、3名で担当しました。1名は Tcl/Tk の経験がありますが、残る2名は経験ゼロです。 経験ゼロの2名は、星座やアステリズムのボタン類の作成を担当しましたが、 コードの前後関係からの類推だけで書けてしまうのです。 例えば、はくちょう座のボタンを設置する(位置揃え、呼び出し関数の指定も含む)には、以下のコードを書くだけです。
frame .fr_cyg label .l_cyg -text "はくちょう" button .b_cyg1 -text "ON" -command "update_constellation Cygnus true" button .b_cyg0 -text "OFF" -command "update_constellation Cygnus false" pack .l_cyg -in .fr_cyg pack .b_cyg0 .b_cyg1 -side left -expand 1 -fill x -in .fr_cyg
Tcl/Tk を選んだもう1つの理由は、 保守性という観点からプログラミング言語の種類を増やしたくないという事も挙げられます。 Tcl/Tk は処理速度は劣りますが設計思想やセキュリティ上の制限が少なく、 かなり自由にPCアプリケーションを作成できる、すなわち「速さを求めなければ何でも作れてしまう」という利点があります。
一般的に、このようなコンソールはWebアプリケーションとして作るのが最も移植性が良いように思います。 もちろん、Stellarium の機能が 我々のプラネタリウム上映にとってパーフェクトであれば、 Stellarium付属コンソールのようなブラウザベースのアプリケーションだけで完結しますが、 残念ながらそのようにはいきません。 Stellariumから特定のステータスを読み取るためのサーバープロセスを起動したり、 オンスクリーン時計をStellariumのウィンドゥに被せたりする必要が生じてきます。 すなわち、PCアプリケーションを作る必要があるということです。 Tcl/Tk であれば、それらも GUI と同じ言語で作ることができます。 ソケット通信、排他処理、文字コード変換など、何でも簡単・確実に実装できます。
なお、Tcl/Tkアプリの移植性についての心配は不要です。MacOSはもちろん、Androidでも Tcl/Tk のパッケージが存在します。
捨てた事は2点あります。
「GUI に ステータス表示を完全に持たせる」事を、早い段階で「捨てた」というのが1点目で、これは重要なポイントです。
Stellarium を少し使ってみると、星座線や星座絵などの表示のための内部スイッチは挙動が複雑である事に気付きます。 これは、GUIに星座線や星座絵などのステータス表示を完璧に持たせるのは、難しい事を示しています。 とあるメーカー製のプラネタリウムシステムにおいても、GUIにステータスはあっても たびたびそれらが正しく表示されないという状況を我々はずっと見てきました。これも、実装の難しさを示しています。
さて、GUIにすべてのステータスは本当に必要か? と考えてみます。 星座線や星座絵のON/OFFは投影スクリーンを見ればわかる事に気付きます。 さらに、解説員の目線はほとんどの時間、GUIよりも投影スクリーンに向けられています。 という事は、そのようなステータス表示は無くても解説に支障はないわけです。 ステータス表示があればわかりやすくはなるでしょうが、 それは解説員の操作への「慣れ」によって無視できるほどのご利益に留まるでしょう。
以上の理由から、我々の開発方針として「GUIにおけるステータス表示は必要最低限とする」事に決めました。 逆に言えば、「GUIアプリケーションは基本的にコマンド送信に徹する」です。
この方針によって、GUIにおけるスイッチは必ず 「ON/Off」または「SET/Unset」 となっていてボタンが多くなってしまいますが、 コードは間違いなくシンプルになります。シンプルという事は、保守性に優れるという事です。
2点目は、GUI の見た目のカッコよさを捨てる事です。
Tcl/Tk にはカッコ良い GUI 部品が多数提供されていますが、目的はそれらの活用ではなく 現場での確実な操作です。 マウスでもタブレットでも、どちらでも操作しやすい事を重視し、ウィジェットを選定・配置しました。 タブレット専用 GUI が存在しない事は、保守性に寄与します。
何事も目的とバランスが重要と言われますが、これはソフトウェア開発でも同じあると我々は考えます。
NaN が設定される事があります。misato-gui.tcl の「proc send_ssc_to_initialize_view」
をご覧ください。
本プロジェクトのために以下のフリーソフトウェアを使用しました:
また、GUIの設計にあたっては、以下のデジタルプラネタリウムを参考にしました:
開発者ならびにそれらに関わったすべての皆様に感謝いたします。
Interstellar Console に関する不具合報告、リクエスト、それら以外のレポートをいただいたすべての皆様に感謝いたします。
Misato Astronomical Observatory
info (at) obs.jp
Last Modified: Jan. 30, 2026