開発

[binllion] clippyを使ってコードを改善する

ここままでエディターとしての最低限の機能は実装できたと思います。

一旦これで機能追加は止めてコードの改善を行いたいと思います。

Rustではリンターとしてclippyが使えます。

cargo clippy

clippyを実行することでコードを静的解析して問題点を指摘してくれます。

clippyの解析結果は問題箇所だけではなくどのように書き直せばよいのかも指摘してくれるので素晴らしいです。

実行結果からの主な修正点としては無駄な変数の束縛やmap()からfold()への切り替え等です。詳しくはこちらをご覧ください。

なぜclippy?

clippyと聞くと日本人としてはなんだろう?と思うのですが欧米人にはあのclippyか!とピンとくるようです。

日本人としてはカイルくんや冴子先生の方が馴染みがあるでしょうか。

これらのキャラクターはかつてMicrosoft Officeに搭載されていたAIアシスタントでした。つまり、Office製品の使い方に困った場合、このキャラクターたちに質問すると使い方を教えてくれるというものでした。

しかし時代はまだ1990年代、今のChatGPTのようにまともな回答がされることは稀でした。また、当時の非力なPCではCPUやメモリ負荷が激しく、起動するだけでフリーズに近い動作を引き起こしユーザを苛つかせました。

インターネットが一般人にも利用できるようになりはじめた頃なので現在のように気軽に検索して答えを見つけるようなことは難しく書籍やアプリケーションのヘルプで調べることが多かった時代の話です。

ヘルプを呼び出すたびにフリーズしてはたまらないので直ぐに機能をオフにしてこれらのキャラクターを見ることはそれ以来なかったという悲しい出来事は当時の人々の記憶に残っているのでしょう。

そのAIアシスタントであるclippyがRustで蘇った!ということで欧米人としてはニヤリとしてしまうのではないでしょうか。

勿論RustのclippyはMicrosoft Officeのものとは違い素晴らしいです。ただし、AIを使っていないのでインタラクティブではないです。現代ではChatGPTがその役割を果たしているといっていいかもしれません。

後に、これらのAIアシスタントは製品からも消え去り終焉かと思いきや、CortanaMicrosoft Copilot(Bing Chat)と不死鳥の如く消滅と新生を繰り返しています。

レビュー:マイクロソフトのクソダサセーターWindows Ugly Sweater Clippyエディション(笠原一輝) | テクノエッジ TechnoEdge

毎年年末になると発売される米Microsoftの「世界一ダサイ」(筆者調べ)セーター。今回は実際にセーターを着て渡米してみたので、真面目にレビューしていきたいと考えている。

カイルくんよりこっちだろ! AI「冴子先生」をOfficeアシスタントに復帰させる方法/「ChatGPT」ベースだが、ちゃんと冴子先生としての自我もあり【レビュー】

 以前、弊誌で「ChatGPT」を搭載したカイルくんの「Microsoft Excel」マクロ「カイルくんGPT」を紹介したところ、ぜひこれの「冴子先生」バージョンがほしいとの声が多く寄せられたそうで、姉妹製品「冴子先生GPT」が開発された。本稿ではこれを実際に試してみたい。

enumの処理を改善

書き込みモードの処理で下記のようなコードを書いていたのですがenum自体に値をもたせることができるので書き換えをトライしてみました。

    let mode = {
        use crate::message::WriteMode::*;
        match message.write_mode() {
            OverWrite => " OVR ",
            Insert => " INT ",
        }
    };Code language: PHP (php)

しかし、数値をもたせることは容易でしたが文字列は手軽に持つことが難しいようです。

そこでDisplayトレイトを使って文字列を返すように実装し直しました。

impl fmt::Display for WriteMode {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::OverWrite => write!(f, " OVR "),
            Self::Insert => write!(f, " INT "),
        }
    }
}Code language: PHP (php)
    // モード取得
    let mode = message.write_mode().to_string();Code language: JavaScript (javascript)

シンプルになりましたね。

その他、コメントを加えて0.1.0としました。

GitHubにコードをアップロードしています。0.1.0バージョン

コードのコメントに書かれているfirst_stepなどをcargoコマンドに渡すと実行できます。

# Example
$ cargo run --example first_stepCode language: Bash (bash)
管理人

Recent Posts

情報セキュリティマネジメント試験取得への道

スキルアップを図るべく情報セキ…

2か月 ago

ファイナンシャルプランナー3級試験取得への道

スキルアップを図るべくファイナ…

2か月 ago

[rust] New Type Patternを使ってみる

DDDの考えを取り入れることで…

5か月 ago

RustでDDDの要素を取り入れてみる

前回SOLID原則というものを…

5か月 ago

期間限定!書籍無料キャンペーン2025

「mdBookではじめるKin…

5か月 ago