プログラミング
このディレクトリでは,自作分子モデリングソフトウェア Builcule や自作共有ライブラリ libbuilcule 開発に直結するプログラミングの練習記録を整理して紹介しています.
維持すべきスキルは,自作ライブラリが作れること,科学用のライブラリが利用できること,GUI ソフトウェアが作成できること,といったあたりです.
ここで利用している開発言語は C++,自作ソフトで利用している化学用ライブラリは Eigen と Babel,自作ソフトで利用している GUI ライブラリは Qt です,
このディレクトリは,プラットフォーム OS である Debian の,"bookworm" から ”trixie” へのアップデートに伴う改定中です.
Open Babel ライブラリ練習ノートについては,本サイトで開発している分子モデリングソフト Builcule がある程度進んだら,それを利用してアップデートする予定です.
ライブラリと実行ファイルのビルド
本サイトで開発している Builcule や libbuilcule の基礎技術です.忘れると公開が中断してしまうので,文書にして残しています.
端末に Hello World と出力するプログラムを材料にして,共有ライブラリ,動的ライブラリ,およびそれを利用する実行ファイルの作成法を練習しています.
「C++による…」は,いわゆるツール類を使わないで作成する練習です.
科学ライブラリの導入
これらのライブラリは Builcule や libbuilcule で利用しています.
- 線形代数ライブラリ Eigen の分子モデリングへの利用:ポピュラーな線形代数ライブラリ.三次元座標の処理などに利用しています
- Open Babel ライブラリ練習ノート:ファイル形式の変換以外に,水素付加やエネルギー極小化を試しています
Qt/C++ による GUI ソフト
本サイトで公開している分子モデリングソフトウェア Builcule の GUI 部分は Qt で開発しています.
このセクションでは,Qt を使ったサンプルソフトウェアを作成します.
このソフトウェアでは,ウィンドウに球を描画して色,位置,サイズを変更したり,ピッキング(球がマウスクリックされたことを検知する)できます.
右の画像は,実行時のスクリーンショットです.
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 上のリソース
本家のドキュメント類を読めるようになる,というのも筆者の目標の一つなのでリンク集を作成しました.
- g++:GNU C++.主たる開発言語
- Program Library HOWTO:C 言語を使った,ライブラリ作成法
- C++ dlopen mini HOWTO:上記 "Program Library HOWTO" からリンクされている,C++ 言語で動的ライブラリを作成する方法
- Automake - GNU Project - Free Software Foundation:C 言語を使った,Automake の解説
- Autotools FAQ
- GNU Autoconf - Creating Automatic Configuration Scripts - GNU Project - Free Software Foundation
- GNU Libtool - Portable Dynamic Shared Object Management - GNU Project - Free Software Foundation
- Write software using the Open Babel libraryl:Open Babel library の使い方
- Eigen: Main Page:数値計算ライブラリ Eigen のメインページ
- Qt のサイトにある開発者向けのページ