JavaScript/TypeScript初学者の備忘録(0)

概要

知り合いからフロントエンド・バックエンド環境について話を聴く機会があり、 興味を持って調べてみた。

もともと占いソフト開発とか TODO ソフト開発とかに興味はあった。 その中で重要な GUI 要素として、 HTML は汎用的な GUI の候補とは認識していたものの、 JavaScript に忌避感があったので採用してこなかった。

結局のところ、 いわゆるフロントエンドと言われてそうな技術をほぼ使わないと決意し、 TypeScript によるテスト駆動開発 (TDD) で、 紫微斗数という占いの命盤用の簡単なアニメーションができる Web ページを作ってみた、 という話をする。

目次は以下の通りである。

続きを読む

CソースコードをPythonパッケージで使う(6)

プロジェクト「CソースコードPythonパッケージで使う」

(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パッケージで使う」

(5)Docker と setup.py の整備

さて、 Python/C wrapper として mypkg モジュールを作成することができた。 ここからは、このモジュールをインストールできるように、 setup.py でパッケージングするところまで持っていく。 パッケージング・インストールのテストまでできるように、 ついでに Docker もインストールする。

  • プロジェクト「CソースコードPythonパッケージで使う」
  • (5)Docker と setup.py の整備
  • 1. 調査
  • 2. ディレクトリ構成
  • 3. パッケージインストール
    • 3.1. WSL へ Docker をインストール
    • 3.2. WSL 1 から WSL 2 へ
    • 3.3. docker の起動
  • 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
  • 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パッケージで使う」

(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
    • 4.1. 今までの再利用と復習
    • 4.2. find_package(Python ...)
    • 4.3. Python モジュール mypkg 用整備
  • 5. build 工程
  • 6. test 実行
  • 7. まとめ
続きを読む

CソースコードをPythonパッケージで使う(3)

プロジェクト「CソースコードPythonパッケージで使う」

(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 工程
    • 6.1. libmypkg_wrap.so の作成
    • 6.2. src-python/libmypkg.so の作成と src-python/mypkg の実装
  • 7. test 確認
  • 8. まとめ
続きを読む

CソースコードをPythonパッケージで使う(2)

プロジェクト「CソースコードPythonパッケージで使う」

(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パッケージで使う」

(1) C language project 実装

まず python と関係なく、 C 言語のコンパイルをするところから始めよう。 つまり、 C 言語として message 関数を実装し、 それをライブラリとして共有できる形にして、 実際に C 言語の関数として呼び出してみる。

  • プロジェクト「CソースコードPythonパッケージで使う」
  • (1) C language project 実装
  • 1. 調査
  • 2. ディレクトリ構成
  • 3. パッケージインストール
  • 4. test 工程 (test.bash 解説)
    • 4.1. test.bash 前半解説
    • 4.2. 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. まとめ
続きを読む