プログラミング

このディレクトリでは,自作分子モデリングソフトウェア Builcule や自作共有ライブラリ libbuilcule 開発に直結するプログラミングの練習記録を整理して紹介しています.
維持すべきスキルは,自作ライブラリが作れること,科学用のライブラリが利用できること,GUI ソフトウェアが作成できること,といったあたりです.
ここで利用している開発言語は C++,自作ソフトで利用している化学用ライブラリは Eigen と Babel,自作ソフトで利用している GUI ライブラリは Qt です,

このディレクトリは,プラットフォーム OS である Debian の,"bookworm" から ”trixie” へのアップデートに伴う改定中です.
Open Babel ライブラリ練習ノートについては,本サイトで開発している分子モデリングソフト Builcule がある程度進んだら,それを利用してアップデートする予定です.


ライブラリと実行ファイルのビルド

本サイトで開発している Builcule や libbuilcule の基礎技術です.忘れると公開が中断してしまうので,文書にして残しています.
端末に Hello World と出力するプログラムを材料にして,共有ライブラリ,動的ライブラリ,およびそれを利用する実行ファイルの作成法を練習しています.
「C++による…」は,いわゆるツール類を使わないで作成する練習です.


科学ライブラリの導入

これらのライブラリは Builcule や libbuilcule で利用しています.


Qt/C++ による GUI ソフト

サンプルソフトウェアの実行画面

本サイトで公開している分子モデリングソフトウェア Builcule の GUI 部分は Qt で開発しています.
このセクションでは,Qt を使ったサンプルソフトウェアを作成します.
このソフトウェアでは,ウィンドウに球を描画して色,位置,サイズを変更したり,ピッキング(球がマウスクリックされたことを検知する)できます.
右の画像は,実行時のスクリーンショットです.


Qidoirep

Qidoirep の実行画面

Qidoirep は,単純な周期表ソフトウェアです.
Builcule の元素選択ダイアログボックスを改変したもので,開発環境がバージョンアップしたときの練習用という位置づけです.
行数は 250 行程度.そのうち,元素記号などのデータが 60 行弱と小さいソースコードなので,Qt 開発環境をインストールし,ウィジェットのレイアウトやシグナル/スロットを学んだ時点で,コードが読めると思います.

[Qidoirep] に移動


開発環境

このディレクトリで使用している主な Debian パッケージを紹介します.
パッケージ間の依存性により自動的にインストールされるパッケージあるので,網羅できているとは限りません.

プログラミング言語やライブラリのパッケージ

このサイトで開発に使用している主な Debian パッケージを紹介します.
パッケージ間の依存性により自動的にインストールされるパッケージあるので,網羅できているとは限りません.

パッケージ名(バージョン)
g++ (12.2.0)GNU C++ コンパイラ
make (4.3)コンパイルを制御するユーティリティ
automake (1.16.6)GNU標準準拠のMakefile生成ツール
autoconf (2.71)configure スクリプト自動作成プログラム
libtool (2.4.7)汎用ライブラリサポートスクリプト
qtbase5-dev(5.15.8)Qt 5 用の開発ツール
qt6-base-dev(6.4.2)Qt 6 用の開発ツール
libglu1-mesa-dev(9.0.2)Mesa OpenGL ユーティリティライブラリの開発ファイル.ライブラリ libglu1-mesa も同時にインストールされました
libeigen3-dev (3.4.0)線形代数用の C++テンプレートライブラリ
libopenbabel-dev (3.1.1)これは,ライブラリ版 Open Babel のヘッダファイルと静的ライブラリのパッケージです

パッケージ化されたドキュメント類

Debian パッケージに入っているドキュメントを一覧表にまとめました.
インストール先として HTML 形式のドキュメントを記しているのは,ローカルで Apache を使って HTTP アクセスしているからです.

パッケージ名(バージョン)インストール先
autoconf-doc (2.71)automatic configure script builder/usr/share/doc/autoconf/autoconf.html
libeigen3-doc (3.4.0)eigen3 の API ドキュメント/usr/share/doc/libeigen3-dev/html/
libopenbabel-doc (3.1.1)ライブラリ版 Open Babel の API ドキュメント/usr/share/doc/libopenbabel-dev/html/
make-doc (4.4.1)Documentation for the GNU version of the "make" utility/usr/share/doc/make-doc/make.html/

Web 上のリソース

本家のドキュメント類を読めるようになる,というのも筆者の目標の一つなのでリンク集を作成しました.