JavaScript/TypeScript初学者の備忘録(0)
概要
知り合いからフロントエンド・バックエンド環境について話を聴く機会があり、 興味を持って調べてみた。
もともと占いソフト開発とか TODO ソフト開発とかに興味はあった。 その中で重要な GUI 要素として、 HTML は汎用的な GUI の候補とは認識していたものの、 JavaScript に忌避感があったので採用してこなかった。
結局のところ、 いわゆるフロントエンドと言われてそうな技術をほぼ使わないと決意し、 TypeScript によるテスト駆動開発 (TDD) で、 紫微斗数という占いの命盤用の簡単なアニメーションができる Web ページを作ってみた、 という話をする。
目次は以下の通りである。
- 0. Figma 奮闘記と JavaScript との邂逅
- 概要
- Figma 奮闘記
- Figma から得た経験
- JavaScript への忌避
- JavaScript とアニメーション
- 参考文献
- 1. 最低限の環境構築とアニメーション
- 2. TypeScript の環境構築
- 3. 命盤用の盤面の作成
- 4. JEST と MVVM の導入
- 5. TestView の実装1
- 6. TestView の実装2
CソースコードをPythonパッケージで使う(6)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. Python 用 C 言語 Wrapper 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(6)pyproject.toml の整備
setup.py は従来は主流の方法だったが、今では deprecated と怒られるようになってしまった。 現在は pyproject.toml への以降が勧められている。 ここではその対応を行って、最終章としよう。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (6)pyproject.toml の整備
- 1. 調査
- 2. ディレクトリ構成
- 3. パッケージインストール
- 4. test 工程
- 5. pyproject.toml を用いたパッケージング・インストール
- 6. test 実行
- 7. まとめ
CソースコードをPythonパッケージで使う(5)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. Python 用 C 言語 Wrapper 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(5)Docker と setup.py の整備
さて、 Python/C wrapper として mypkg モジュールを作成することができた。 ここからは、このモジュールをインストールできるように、 setup.py でパッケージングするところまで持っていく。 パッケージング・インストールのテストまでできるように、 ついでに Docker もインストールする。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (5)Docker と setup.py の整備
- 1. 調査
- 2. ディレクトリ構成
- 3. パッケージインストール
- 4. test 工程
- 4.1. Docker コンテナの準備
- 4.1.1. Python コンテナ
- 4.1.2. mypkg_base コンテナ
- 4.1.3. mypkg_install コンテナ
- 4.1.4. mypkg_run コンテナ
- 4.2. docker-compose.yml
- 4.3. docker compose
- 4.1. Docker コンテナの準備
- 5. setup.py を用いたパッケージング・インストール
- 5.1. setup.py の基本構成
- 5.2. カスタムインストール
- 5.3. src レイアウトへの対応
- 5.4. setup.py の全容
- 6. CMakeLists.txt の調整
- 7. test 実行
- 8. まとめ
CソースコードをPythonパッケージで使う(4)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. Python 用 C 言語 Wrapper 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(4)Python/C Wrapper の CMake 化
さて、それでは、 CMake と Python/C Wrapper の両方を学んだところで、 CMake で Python/C Wrapper コードをビルドしていこう。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (4)Python/C Wrapper の CMake 化
- 1. 調査
- 2. ディレクトリ構成
- 3. test 工程
- 4. CMake for Python/C Wrapper
- 5. build 工程
- 6. test 実行
- 7. まとめ
CソースコードをPythonパッケージで使う(3)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. Python 用 C 言語 Wrapper 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(3)Python 用 C 言語 Wrapper 実装
先の章では、 CMake の使い方を学んだ。 ここでは、 CMake を一旦脇において、 C 言語で定義された関数を Python から呼び出す方法を解説する。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (3)Python 用 C 言語 Wrapper 実装
- 1. 調査
- 2. パッケージインストール
- 3. ディレクトリ構成
- 4. test 工程
- 5. Python Wrapper コーディング
- 5.1. mypkg の Wrapper: mypkg_wrap.c (コードの全体構造)
- 5.2. mypkg_wrap.c (メソッド実装編)
- 5.2.1. [A] メソッド定義
- 5.2.2. [B] C 言語コード本体
- 5.2.3. [C] ランタイムエラー
- 5.2.4. [D] 返り値
- 5.3. mypkg_wrap.c (メソッド定義編)
- 5.4. mypkg_wrap.c (モジュール定義・おまじない編)
- 5.5. mypkg_wrap.c (モジュール定義編)
- 5.6. mypkg_wrap.c (モジュール初期化編)
- 5.7. mypkg_wrap.h (ヘッダ編)
- 6. build 工程
- 7. test 確認
- 8. まとめ
CソースコードをPythonパッケージで使う(2)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. Python 用 C 言語 Wrapper 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(2) CMake 実装
先の章では、 C 言語における共有ライブラリの作り方・使い方の復習を行った。 次は、この共有ライブラリのコンパイル工程を CMake 化してみる。
gcc の直接実行や bash ファイルに頼らずにコンパイルすることを目指していこう。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (2) CMake 実装
- 1. 調査
- 2. パッケージインストール
- 3. ディレクトリ構成
- 4. CMake 工程
- 4.1. トップレベル CMakeLists.txt
- 4.2. src/mypkg/CMakeLists.txt
- 4.3. 余談: -fPIC とは何か
- 4.4. src/myapp/CMakeLists.txt
- 5. build 工程
- 6. test 工程
- 7. まとめ
CソースコードをPythonパッケージで使う(1)
プロジェクト「CソースコードをPythonパッケージで使う」
- 0. 概要
- 1. C language project 実装
- 2. CMake 実装
- 3. CMake を用いた Python 実装
- 4. Python/C Wrapper の CMake 化
- 5. Docker と setup.py の整備
- 6. pyproject.toml の整備
- github.com
(1) C language project 実装
まず python と関係なく、 C 言語のコンパイルをするところから始めよう。 つまり、 C 言語として message 関数を実装し、 それをライブラリとして共有できる形にして、 実際に C 言語の関数として呼び出してみる。
- プロジェクト「CソースコードをPythonパッケージで使う」
- (1) C language project 実装
- 1. 調査
- 2. ディレクトリ構成
- 3. パッケージインストール
- 4. test 工程 (test.bash 解説)
- 5. build 工程 (build.bash 解説)
- 5.1. Build mypkg
- 5.2. Build myapp
- 5.3. 各種オプションの解説
- 5.3.1. -I と -l オプション
- 5.3.2. 動的ライブラリ・静的ライブラリ・共有ライブラリ
- 6. まとめ