この記事を作った動機

 2026/8/19 に至るまでの間で OneNote 代替に関して、実装をするなど研究を進めているうちにわかったことなどを簡易的に記録する。

次に軽くやりたいことを記述

 とにかく中身の実装を進める。DataServer 周りをとにかく終わらせて、とりあえず卒論のフロントエンドに対して、DataServer を今回作る試作物に置き換えて動作するくらいにはしたい。

やったことの詳細

内部構造について

 大まかには、DataServer 周りのシステムのディレクトリ構造を卒論時点のものとは大幅に変更した。また、スクリプトを配置して、具体的な内容が書き始められるように、擬似コード的な感じでスクリプトの各所にコメントを記述したりした。大きな変更点は、“具体的な実装"をなるべく含めないようにすることで、抽象度を上げ、データの器として DataServer を機能させるための下地を作ったという点である。また、拡張されるのは DataServer だけではなく、フロントエンドも対象であり、DataServer と整合性をもって動かす必要があるため、DataServer の一部としてフロントエンドを組み込んだ。

  • 卒論時点の DataServer のディレクトリ配置
├── commands
│   ├── _index.py
│   ├── fileAPI
│   │   ├── fileAdd.py
...
│   ├── info.py
│   ├── notebookAndPage
│   │   ├── copyPage.py
│   │   ├── createNotebook.py
│   │   ├── createPage.py
...
│   ├── tag
│   │   ├── addTag.py
│   │   ├── createTag.py
...
│   └── template.py
├── configure.py
├── controller.py
├── helper
│   ├── _index.py
│   ├── common.py
│   ├── loadSettings.py
│   └── netwrok.py
├── interrupts
│   ├── controller.py
│   ├── newInfo.py
│   ├── updatePage.py
│   └── updateTag.py
├── jobs
│   ├── pageCleaner.py
│   └── showPingMessage.py
├── main.py
├── requirements.txt
├── settings.json
├── tasks.py
...
  • 今回の試作品のディレクトリ配置
├── extensionLoader
│   ├── common.py
│   ├── dataserver.py
│   ├── frontend.py
│   ├── main.py
│   └── template
│       ├── dataserver.py
│       └── frontend.tsx
├── extensions
│   └── readme.md
├── frontend
├── main.py
├── mainSys
│   ├── controller
│   │   ├── command.py
│   │   ├── interrupt.py
│   │   └── task.py
│   ├── hosting
│   │   ├── fileTransfar.py
│   │   └── frontendServe.py
│   └── main.py
└── settings.json

今回の試作物の構成について軽く説明

 今回の試作品の各ディレクトリやファイル配置についての説明としては以下のとおりである。

main.py

 DataServer を起動する際に一番最初に実行されるスクリプトである。拡張機能を読み込み、拡張機能が組み込まれた DataServer やフロントエンドを起動したり、ホストする役割がある。このスクリプト自体は、直接 DataServer 本体とはならず、準備から起動までを担っている。

extensionLoader

 extensionLoader/main.py を中心に構成される DataServer やフロントエンドに関して拡張機能を実際に読み込み、DataServer やフロントエンドに組み込む機構が格納されているディレクトリである。

extensions

 extensionLoader によって読み込まれる拡張機能を配置する場所である。各拡張機能ごとに ZIP ファイルを配置する。

frontend

 拡張されるベースとなるフロントエンド部分が保持される。現時点での技術選定は卒論と同じ、Vite + React + TypeScript + Tailwind CSS の構成の予定である。

mainSys

 mainSysは、DataServer の拡張されるベースとなるコードが存在しており、拡張機能を読み込んだあと、mainSys/main.pyが起動されることで、DataServer 本体が動作する。mainSys 自体は以下のように細分化されている。

  • controller
     卒論と同じく、コマンド、割り込み、定期タスクのコントローラが存在しており、拡張機能によって拡張される。
  • hosting
     ここは卒論とは異なり、拡張期の読み込みのフェーズでビルドされたフロントエンドを http にてホストしたり、ファイル転送に関して特別なバックエンドを備える部分であり、拡張機能によって拡張できるようにする予定は今回はない。

動作について

 DataServer における動作について、卒論時点ではデータサーバは最初に開始された一つのプロセスを中心として起動するように作っていたが、今回の DataServer では、まず拡張機能を読みこんでフロントエンドやデータサーバを"ビルド"してから、それを立ち上げるという仕組みにした。これにより、拡張機能の実装を反映した DataServer やフロントエンドが可能になるということである。

拡張機能の読み込みについて

 DataServer やフロントエンドにおける拡張機能の読み込みは、Import の調整と配列の調整の2つによって成り立ち、DataServer や フロントエンドのベースとなるコードに対して、拡張機能のコードを接続する形態を想定している。まだ、拡張機能のコードに対して具体的にどんな共通の実装を求めるかは決まっていないが、それは実装しながら決定したいと考える。

研究に関係ありそうなブログ記事

参考にしたサイトとか

 今回は特になし。