見出し画像

第一次リファクタリングが完了

Meridian計画。
前回の更新からだいぶ時間が経ってしまいましたが、Meridian Board Type.Kに対応するMeridian TWINのソフトウェアについてのリファクタリングが完了しました。

リファクタリングという作業自体、私自身初めて実施しました。
アップデートとは違い、機能はとくに変えることなく、コードの中身自体を整理整頓することをリファクタリングというそうです。

実施したのは以下の項目です。
・関数の大半を公式ライブラリに移動。
・変数名の命名規則を一般的なルールに準じつつ統一。
・コードを全面的に見直して見通しをよくする。
・githubでリリース番号をつけてパブリッシュ。
・github.ioに情報を集約

なかなかの作業量でした。

リファクタリング1 : ライブラリを本格化

Meridianという名前でライブラリを作成し、登録しました。
ArduinoIDEでもmeridianと検索することで表示されます。

前回はテストでしたが、今回はちゃんと動きます


もちろんPlatformIOでも認識することができ、ライブラリ導入後は、

#include <Meridian.h> 

とするだけでMeridianの多くの機能が使えるようになります。
関数のリストと用法はこちらで確認できます。

リファクタリング2 : 変数名を統一

開発初期段階のMeridianは変数名の規則がはちゃめちゃでした。
Meridian TWINだけでもTeensy4.0用のコードとESP32のコードに分かれ、さらに-LITE-版のコードもあり、またPC側のMeridianConsoleなどもあって基本ソフトだけでコードが数箇所に分かれていたためです。試行錯誤しながら作るので変数がどんどん増えました。
そこで第一次リファクタリングとして、マイコンボードで使う変数名について整理整頓し、統一しました。
オープンソースのプロジェクトとしてなるべく一般的なものにするため、「組込みソフトウェア開発のための構造化プログラミング」という本を読んでお手本としつつ、ChatGPTにヒアリングしながら一般的な変数名や短縮方法を決定していきました。
ChatGPTの性質は、今回の作業にとても向いていたと思います。

リファクタリング3 : コードの見通しをよくする

多くの関数をライブラリ化したことで、メインコード(main.cpp)がスッキリし、処理の流れがわかりやすくなりました(と思います)。
Meridianは改造して使うことを前提としていますので、ソースコードはできるだけ読みやすくしておく必要があります。
まだ機能もさほど多くないので、v1.0.0は導入しやすいと思いますし、今後はソースコードの解説動画なども作成しようと思います。
さらにヘッダファイル(main.h)やコンフィグファイル(config.h)への分割も実施しました。
ヘッダファイルがあることでメインコードのローカル関数をメインの後部に持っていくことができます。これもコードの読みやすさに貢献します。
また、コンフィグファイルを分離することで、設定を一元管理でき、これも使いやすさとメインコードの見通しの良さに貢献します。

リファクタリング4 : 公式リリース

これまでバージョン管理も我流のデタラメでめちゃくちゃな方式でしたが、githubのタグを使い今回のTWINのバージョンをv1.0.0としてリリースしました。
バージョンの管理番号はセマンティックバージョニング2.0という記載法に準拠しています。

v x.y.z
 x: メジャーバージョン。互換性を考慮しないアップデート。
 y: マイナーバージョン。後方互換性のある細かなアップデート。
 z: パッチバージョン。バグ修正などのアップデート。

バージョンをFIXすることで解説動画なども作りやすくなります。

リファクタリング5 : Meridian Informationサイト

Meridianに関する情報をまとめるサイトをどうしようかかなり長い時間悩んでいました。
見やすいサイトをとにかくラクに安く作りたい!
ということで導入したのがgithub ioによるウェブサイト公開とmkdocsによるマークダウン方式によるサイト作成です。

mkdocsの挙動はなかなか小気味良いです。
mkdocsのpythonを実行することでローカルサーバーが立ち上がり、該当のディレクトリ内のマークダウンファイルを編集するだけですぐにWEBサイトの最終イメージとして反映されます。
出来上がったらビルドで書き出し、あとはgithubアプリ経由でgithubにプッシュで更新完了です。
アプリケーションが2〜3つにまたがりはしますが、慣れればかなり快適です。
編集がラクでデザインに凝らなくて良い分、内容の充実に集中できそうです。
(mkdocsの導入はリアルテックさん(@realteck_bot)に教えていただきました。ありがとうございます)

Meridian Informationのサイトはこちらになります↓

https://ninagawa123.github.io/Meridian_info/

つぎにやること

リファクタリングに着手したのは、どこかでこれをやっておかないと追加機能が渋滞し過ぎてしまうと考えたからでした。
ということでこれからどんどん追加機能や各種ボード対応などを進めていきたいところですが、まずは慌てずLITE版のリファクタリングとMeridian_Consoleのバグ取りを進めます。
モーション作成部分やシミュレーター連携部分もスタックしてますので、そちらも進めます。

次の記事:

前の記事:

目次:



この記事が気に入ったらサポートをしてみませんか?