|
本サイトは移転しました。旧アドレスからのリダイレクトは2025年03月31日(月)まで有効です。
|
🛈 | ✖ |
►セットアップ | |
MSYS2の導入 | MSYS2をインストールする手順を説明する。 |
コンパイラの導入 | コンパイラをMSYS2にインストールする手順を説明する。 |
ライブラリの導入 | ライブラリをMSYS2にインストールする手順を説明する。 |
統合開発環境の導入 | 統合開発環境をインストールする手順を説明する。 |
統合開発環境のカスタマイズ(1) | 統合開発環境のカスタマイズ手順を説明する。 |
動作確認(1) | ここまでのセットアップを統合開発環境で動作確認する。 |
Pythonの動作確認 | MSYS2がコンパイラと共に導入したPythonを動作確認する。 |
バージョン管理システムの導入 | バージョン管理システムをインストールする手順を説明する。 |
国際化機能の確認 | MSYS2がコンパイラと共に導入した国際化機能を確認し、翻訳ファイル編集ツールをインストールする手順を説明する。 |
ドキュメンテーションツールの導入 | ドキュメンテーションツールをMSYS2にインストールする手順を説明する。 |
インストーラ作成ツールの導入 | インストーラ作成ツールをインストールする手順を説明する。 |
動作確認(2) | 動作確認(1)以降のセットアップを動作確認する。 |
►ディープなセットアップ | |
参考ドキュメントの導入 | 参考ドキュメントのローカルコピーを導入する手順を説明する。 |
追加MSYS2ツールの導入 | 追加MSYS2ツールとしてp7zipとzipを導入する手順を説明する。 |
自作ツールの導入 | 統合開発環境を補助する自作ツールをインストールする手順を説明する。 |
画像編集ツールの導入 | アイコンやイメージを作成する画像編集ツールとしてGIMPをMSYS2にインストールする手順を説明する。 |
統合開発環境のカスタマイズ(2) | 統合開発環境メニューに参考ドキュメントと自作ツールなどを登録するカスタマイズ手順を説明する。 |
動作確認(3) | 動作確認(2)以降のセットアップを動作確認する。 |
統合開発環境のカスタマイズ(3) | 統合開発環境にwxWidgetsプロジェクトウィザード(K2)を登録するカスタマイズ手順を説明する。 |
動作確認(4) | 動作確認(3)以降のセットアップを動作確認する。 |
►テキストエディタを作る | |
プロジェクトの作成 | KTxtEditプロジェクトを作成しCode::Blocksのウィザードでスケルトンを生成する。 |
テキストコントロールの追加 | KTxtEditプロジェクトにテキストコントロールとメニュー項目を追加する。 |
基本的メニュー項目ハンドラの実装 | KTxtEditプロジェクトに追加された基本的メニュー項目ハンドラを実装する。 |
システムイベントハンドラの実装 | KTxtEditプロジェクトにアプリケーションのアイドル時と終了時のハンドラを実装する。 |
pimplイディオムの導入(1) | KTxtEditプロジェクトにpimplイディオムを導入しクラスインターフェースとロジック実装を分離する。 |
pimplイディオムの導入(2) | KTxtEditプロジェクトのpimplイディオムを深化してメインウィンドウGUIを他のクラスから隠蔽する。 |
ユーティリティクラスの追加 | KTxtEditプロジェクトにイベントハンドラ管理クラスとメニュー項目管理クラスを追加する。 |
コア実装クラスの追加 | KTxtEditプロジェクトにコア実装クラスを追加してメインウィンドウインターフェースから分離する。 |
オプション設定ダイアログの作成 | KTxtEditプロジェクトにオプション設定ダイアログを作成する。 |
レジストリ機能の実装 | KTxtEditプロジェクトにレジストリ機能を実装する。 |
ファイル入出力クラスの追加(1) | KTxtEditプロジェクトのファイル入出力クラスが利用する文字コードリストとストリームバッファを作成する。 |
ファイル入出力クラスの追加(2) | KTxtEditプロジェクトにファイル入出力クラスを追加して複数文字コードに対応する。 |
デプロイ | KTxtEditプロジェクトに日本語化、インストーラ作成などを追加してデプロイする。 |
►続・テキストエディタを作る | |
プロジェクトの修正 | KTxtEditの高機能化にあたりプロジェクトに必要ファイルを追加していくつかの設定を修正する。 |
Scintillaストリームバッファの作成 | KTxtEditの高機能化にあたりファイル入出力補助クラスを修正しストリームバッファを作成する。 |
ファイル入出力クラスの修正 | KTxtEditの高機能化にあたりファイル入出力クラスを修正する。 |
コア実装クラスの修正 | KTxtEditの高機能化にあたりコア実装クラスを修正する。 |
コード作成支援クラスの追加 | KTxtEditの高機能化にあたりコード作成支援クラスを追加する。 |
折り返し表示バグの対処 | KTxtEditの高機能化にあたりScintillaの折り返し表示に関するバグに対処する。 |
デプロイ | KTxtEditの高機能化にあたり日本語化、インストーラ作成などを追加してデプロイする。 |
►用語 | |
C++ | C++は汎用プログラミング言語のひとつである。 |
GNU | GNUとはリチャード・ストールマン(Richard Stallman)が提唱したフリーソフトウェア群の協働開発プロジェクト。 |
MSYS2 | MSYS2はウィンドウズで稼働するPOSIX互換システムである。 |
Python | Pythonはインタープリタ型の高水準汎用プログラミング言語である。 |
アーキテクチャ | アーキテクチャはコンピュータ(特にハードウェア)における基本設計や設計思想などを意味する。 |
イベント駆動型プログラミング | イベント駆動型プログラミングはイベントを待機し、発生したイベントに従い処理を行うプログラミングパラダイム。 |
インクルードファイル | インクルードファイルはソースコード形式をしていてコンパイラが別のソースコードファイルの一部として自動的に展開する。 |
ウィンドウズ | ウィンドウズはマイクロソフトが開発販売するオペレーティングシステムの製品群。 |
オブジェクト指向プログラミング | オブジェクト指向プログラミングはオブジェクト指向の考え方を取り入れたプログラミング手法である。 |
オペレーティングシステム | オペレーティングシステムとはコンピュータのオペレーションを司るシステムソフトウェアである。 |
グラフィカルユーザーインターフェース | グラフィカルユーザーインターフェース(GUI)はグラフィックスとマウスなどによる図を活用したユーザーインターフェース。 |
コマンドプロンプト | コマンドプロンプト(cmd.exe)はウィンドウズに搭載されているコマンドラインインタプリタ(CLI)である。 |
コンパイラ | コンパイラとはプログラミング言語の処理の一種で、高水準言語のソースコードをより低水準へ変換するプログラム。 |
参照 | C++の構文である"参照"を説明する。プログラミング一般を語る文脈の"参照"ではない。 |
スレッド | スレッドとはCPU利用の単位でプログラム実行のコンテキスト情報が少なくプロセスより切り替えが速い。 |
ダイナミックリンクライブラリ | ダイナミックリンクライブラリ(DLL)はソフトウェアバイナリ形態の一種で動的リンクを使ったライブラリのこと。 |
デザインパターン | デザインパターンはソフトウェア開発において過去の設計ノウハウを蓄積し命名してカタログ化したもの。 |
テンプレート | C++でデータ型を抽象化してコードを書くことを可能にする機能であり、総称プログラミングなどに用いられる。 |
統一モデリング言語 | 統一モデリング言語(UML)はオブジェクト指向プログラミング分析や設計のためのモデリング言語。 |
統合開発環境 | 統合開発環境はソフトウェアの統合的な開発環境であり、様々なツールの集合からなる。 |
プログラミング言語 | プログラミング言語とはコンピュータプログラムを記述するための形式言語である。 |
プログラミングパラダイム | プログラミングパラダイムとはプログラミングにおけるパラダイムである。 |
文字コード | 文字コードとはコンピュータ上で各文字に割り当てられるバイト表現、もしくはバイト表現と文字の対応関係を指す。 |
ライブラリ | ライブラリは汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。 |
►詳細 | |
boostをビルドする | boostライブラリを自分でビルドする手順を説明し、これを含めたデバッグ方法を示す。 |
►Code::BlocksのPATH改変 | 統合開発環境Code::BlocksのPATH改変を可能な限り正確に記述する。 |
ソースコード(Code::Blocksの環境変数カスタマイズ) | Code::BlocksのPATH改変における環境変数カスタマイズをソースコードから解析する。 |
ソースコード(Code::Blocksのコンパイラディレクトリ追加) | Code::BlocksのPATH改変におけるコンパイラディレクトリ追加をソースコードから解析する。 |
ソースコード(Code::Blocksのライブラリディレクトリ追加) | Code::BlocksのPATH改変におけるライブラリディレクトリ追加をソースコードから解析する。 |
ソースコード(Code::Blocksパーサーのcc1plus.exe実行) | プロジェクトを開くだけでCode::Blocksが子プロセスとしてcc1plus.exeを実行する理由をソースコードから解析する。 |
►Code::BlocksのToolsメニュー | 統合開発環境Code::Blocksメニューへの外部ツール登録方法を説明する。 |
ソースコード(Code::BlocksのToolsメニュー) | Code::Blocksの[Tool]メニューおよび[Tools+]メニューによる外部ツール起動時挙動をソースコードから解析する。 |
Code::BlocksのwxSmithプラグイン | 統合開発環境Code::Blocksに付属するRADツールwxSmithプラグインを説明する。 |
►Code::Blocksのプレ/ポストビルドステップ | 統合開発環境Code::Blocksでビルド前後に外部ツールを自動実行するプレ/ポストビルドステップを説明する。 |
ソースコード(Code::BlocksのCommands onlyターゲット) | Code::BlocksのCommand onlyビルドターゲットタイプの問題点をソースコードから解析する。 |
ソースコード(Code::Blocksの*No Compiler*コンパイラ定義) | Code::Blocksのコンパイラ定義の一つである*No Compiler*の挙動をソースコードから解析する。 |
►Code::Blocksをビルドする | 統合開発環境Code::Blocksを自分でビルドする手順を説明し、カスタマイズを可能にする。 |
ソースコード(CodeBlocks_wx31_64のビルド) | Code::Blocks20.03をwxWidgetsのバージョン3.1.4でビルドする場合に必要な追加設定とパッチをソースコードと共に示す。 |
►codecvtを考察する | C++標準ライブラリのcodecvtファセットについてサイト作成者の理解を整理する。 |
ソースコード(codecvt実装方法の詳解) | ファイルストリームバッファに用いるcodecvtファセットを自作する場合の実装方法の詳解を試みる。 |
ソースコード(N:M変換の安全性) | ファイルストリームバッファにN:M変換となるcodecvtファセットを用いる場合の安全性を確認する。 |
►DoxygenとウィンドウズHTMLヘルプ | ドキュメンテーションツールとして導入されるDoxygenと、それを用いたHTMLヘルプファイルの作成を説明する。 |
ソースコード(Doxygenカスタマイズ) | 設定ファイル(Doxyfile)以外のDoxygenカスタマイズファイルサンプルを示す。 |
Doxygenによるウェブサイト公開 | DoxygenのHTML出力をウェブサイトに公開する際の追加処理を説明する。 |
►Doxygenのマークダウン形式ファイル | DoxygenのHTML出力の原稿としてマークダウン形式ファイルを用いる方法を説明する。 |
ソースコード(Doxygen検索ボックスの問題) | DoxygenのHTML出力検索ボックスの問題を示し、ソースコード解析以外では非表示とすることを推奨する。 |
GIMPとアプリケーションアイコン | MSYS2によるGIMP導入の注意点を説明し、Code::BlocksにおけるwxWidgetsプロジェクトのアイコンを考察する。 |
►Git for Windows | バージョン管理システムとして導入されるGit for Windowsを説明する。 |
ソースコード(git.exeラッパー) | Git.exeラッパーが適切に環境変数PATHなどを設定する事をソースコードで確認する。 |
►GNU gettextによる国際化機能 | GNU gettextによる国際化機能で英語アプリケーションを日本語対応させる方法を記述する。 |
ソースコード(国際化機能とロケール) | コンソールアプリケーションのGNU gettextによる国際化機能でのロケールの扱いについてソースコードで確認する。 |
ICUをビルドする | ICUライブラリを自分でビルドする手順を説明し、データサイズの縮小方法を示す。 |
Inno Setup | インストーラ作成ツールとして導入されるInno Setupを説明する。 |
mingw-w64のプリコンパイル済みヘッダ | mingw-w64のプリコンパイル済みヘッダをCode::Blocks設定と共に説明し、コンパイル時間の短縮効果を測定する。 |
pimplイディオム | 本サイトのプログラミングで多用するpimplイディオムを説明する。 |
Scintillaをビルドする | 最新のScintillaコンポーネントを自分でビルドしてwxWidgetsライブラリから利用する手順を説明する。 |
►wxWidgetsとシステムシャットダウン | ウィンドウズシャットダウン時のwxWidgetsアプリケーション挙動について考察し、コーディング指針を定める。 |
ソースコード(wxWidgetsとシステムシャットダウン) | ウィンドウズシャットダウン時のwxWidgetsアプリケーション挙動に関与する部分のソースコードを示す。 |
►wxWidgetsとメッセージループ | wxWidgetsライブラリのウィンドウズ実装に置けるイベント駆動メッセージループを考察する。 |
ソースコード(wxWidgetsのメッセージループ実装) | wxWidgetsライブラリがウィンドウズのメッセージループをどのように実装するかをソースコードで確認する。 |
ソースコード(wxWidgetsのメッセージハンドラ実装) | wxWidgetsライブラリがウィンドウズのメッセージハンドラをどのように実装するかをソースコードで確認する。 |
wxWidgetsプロジェクトウィザード(K1) | wxWidgetsプロジェクト用に導入する統合開発環境Code::Blocksウィザードを説明する。 |
wxWidgetsプロジェクトウィザード(K2) | wxWidgetsプロジェクト用に導入する機能強化版の統合開発環境Code::Blocksウィザードを説明する。 |
wxWidgetsをビルドする | wxWidgetsライブラリを自分でビルドする手順を説明し、これを含めたデバッグ方法を示す。 |
自作ツール | 統合開発環境Code::Blocksの機能補助として導入する自作ツールの使用方法を説明する。 |
初期化とオーバーロード(1) | C++規格で密に相互依存する変数初期化と関数オーバーロードのうち、変数初期化の詳細を確認する。 |
►初期化とオーバーロード(2) | C++規格で密に相互依存する変数初期化と関数オーバーロードのうち、関数オーバーロードの詳細を確認する。 |
ソースコード(関数オーバーロードサンプル) | C++における関数オーバーロードの規格を理解するためのサンプルコードをまとめる。 |
多言語対応アプリケーションをどのように開発するか | MSYS2/mingw-w64/wxWidgetsでの多言語対応(マルチリンガル)アプリケーション開発を考察する。 |
►テンプレートを考察する | C++テンプレートについてサイト作成者の理解を整理する。 |
ソースコード(明示的実体化メタプログラミング) | 関数テンプレートを実装隠蔽する場合に多数の明示的実体化をメタプログラミングにより自動化する方法を試す。 |
►日本語アプリケーションをどのように開発するか | MSYS2/mingw-w64での日本語アプリケーション開発を考察する。 |
ソースコード(mingw-w64の標準codecvt) | 自作codecvtファセットを用いず標準のままユニコード文字列をコマンドプロンプトへ出力する方法を確認する。 |
ソースコード(自作のcodecvtファセット) | ファイルストリームバッファに用いる文字コード変換ファセット(codecvtファセット)クラスを自作する。 |
►バージョン番号の設定ポリシー | アプリケーション開発におけるソフトウェアバージョン番号の設定ポリシーを説明する。 |
ソースコード(バージョン番号管理) | バージョン番号を設定あるいは統一管理するファイルサンプルを示す。 |
標準ライブラリのファイルストリーム | C++標準ライブラリのファイルストリームについて文字コード変換を中心に確認する。 |
メタプログラミングで遊ぶ | C++テンプレートによるメタプログラミングで遊んでみる。 |
►公開ソフトウェア | |
KTileImg(複数画像の連結ツール) | サイト作成者が公開しているフリーソフトウェアKTileImgを紹介する。 |
KGrepWrk(grepライクなファイル検索置換ツール) | サイト作成者が公開しているフリーソフトウェアKGrepWrkを紹介する。 |
►更新履歴 | |
サイトバージョン1.0.X.X | サイトバージョン1.0.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.1.X.X | サイトバージョン1.1.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.2.X.X | サイトバージョン1.2.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.3.X.X | サイトバージョン1.3.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.4.X.X | サイトバージョン1.4.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.5.X.X | サイトバージョン1.5.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.6.X.X | サイトバージョン1.6.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |
サイトバージョン1.7.X.X | サイトバージョン1.7.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。 |