KotlinでGraphAPIを実行する

これまで色々な言語でGraphAPIについて記事を書いてきましたが、今回はKotlinでGraphAPIを読んでみようと思います本記事の内容でJavaも同じように実装できると思います。また、Azure上でのGraphAPIの設定については本記事では取り扱いませんので他の記事で参考にしてみてください 名称バージョンjdk21Kotlin2.3.10com.microsoft.graph:microsoft-graph6.+com.azure:azure-identity1.+ Gradleで必要なSDKをイ ...

ReadMore

batファイルで処理時間を計測する

前回はbathファイルで多重起動をしない方法について記載をしましたが、今回は処理時間計測についてとなります本来は実装物内に仕込んだりして計測するべきものだと思うのですが、実装物には手を加えずにbatファイル側で計測するというのが今回の記事になります 遅延展開の有効化 後ほど出てきますが、時間取得をする際に使用するために有効化します @echo off REM 遅延展開の有効化 setlocal enabledelayedexpansion 時間計測を実装する 時間を分割して取得する !time!&nbsp ...

ReadMore

batファイルで多重起動させない

個人でbatファイル経由でプログラムを実行することが多々あり、その際にbatファイルを誤って多重起動させてしまわないようにする仕組みを組み込んだのでその時のメモとなります どうしたのか まず、どのような処理かを簡単に説明すると起動時にファイルを作成し、そのファイルが存在した場合は以降の処理をしないという仕掛けとしては簡単なものとなっています。コードに落とし込むと以下のようになります @echo off REM batファイルのパスまで移動 cd /d %~dp0 REM 多重起動防止 set LOCKFI ...

ReadMore

Pythonであいまい検索を実装する<TF-IDF + コサイン類似度 ver. >

以前、C#であいまい検索について記事を書きましたが、今回はPythonでTF-IDF + コサイン類似度の方法であいまい検索を実装してみようと思います 名称バージョンPython3.12scikit-learn1.8.0 あいまい検索の準備する あいまい検索を実施するためにあらかじめ文章を学習を実施しておく from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cos ...

ReadMore

Rust言語をはじめてさわる

これまで様々な言語をさわってきましたが、今回は比較的新しいRustにさわってみます内容としてはあまり初歩的なこと(プロジェクトの作成等)については記載しません。また、エディタはRustRoverを使用しています 名称バージョンRust(edition)2024 そもそもRustってどんな言語? C/C++と同等の実行速度を持ちながら、所有権と呼ばれる仕組みを用いることで、ガベージコレクションなしでメモリ管理を実現し、また、コンパイル時にメモリ安全をチェックする仕組みがあるため、基本的にnull参照・データ ...

ReadMore

Pythonで非同期処理を実装する

これまでC++、Kotlinといった言語で非同期処理について記載してきましたが、今回はPythonでの非同期処理についてとなります今回も特にライブラリを追加することなく実装しています 名称バージョンPython3.12 asyncio (async/await)を使用するパターン 用途 : 大量のI/O待ちが発生する処理を効率的にさばきたい 利点 シングルスレッドで動作するため、スレッド/プロセスの生成コストがゼロ ロックやデッドロックの心配が不要(共有メモリの競合が起きない) 数千〜数万の同時接続を少な ...

ReadMore

GraphAPIでリストアイテムを全て取得する

以前にGraphAPI経由でSharePoint上のリストアイテム取得について記載しましたが、それだと200件ずつしか取得できないので1回の呼び出しで全件取得できる方法について紹介します 名称バージョンC#.Net 9.0Azure.Identity1.17.1Microsoft.Graph5.100.0 ありがとうスタフロ 調べても全件取得について書いている記事が見つからなかったのですが、以下の stack overflow にGraphAPIで200件しかリストアイテム取得できないけど、どうすれば全件 ...

ReadMore

C#のあいまい検索について<N-gram + ひらがな正規化ver.>

今回はシステムを作るうえで時々ある『あいまい検索』についてです。あいまい検索の中でも日本語に焦点を当てていますそのため、要件によっては合わない可能性があるので注意してください。また、今回は追加のライブラリ等をしようしないため自身で調整が必要な場合があります 名称バージョンC#.Net 8.0 N-gram について 簡単に説明すると文字列をN個ずつとしての単語に分けて検索する方法となります。詳しくは以下のサイトが参考になるかと思います 実際に実装する N-gramについて理解したところで実際に実装していき ...

ReadMore

C++で非同期処理を実装する

以前にKotlinで非同期処理について記載しましたが今回はC++で非同期処理について記載したいと思います 名称バージョンC++14 std::async と std::futureを使用するパターン 用途 : 単純な非同期タスクの実行と結果取得 利点 : 最もシンプルな記述。スレッド管理が自動。例外もfuture.get()で取得可能 適した場面 : ファイル読み込み、API呼び出し、計算処理の非同期化 // 非同期でタスクを実行 auto future = std::async(std::launch: ...

ReadMore

KotlinでAPIサーバーを実装する

前回はKotlinで非同期処理について記載しましたが、今回はKotlinとSpring BootでAPIサーバーを実装してみます実装内容としてはよく使用されるToDoリストです 名称バージョンjdk21Kotlin2.1.20org.springframework.boot3.2.0io.spring.dependency-management1.1.0 Gradleに追加する Spring Bootを使用するために『build.gradle.kts』ファイルに対して以下の内容を追加し、Gradleを更新 ...

ReadMore