www.youtube.com 情報処理技術者試験の科目B問12を題材に、文字列の類似度を判定するアルゴリズムを解説します。新人研修を舞台に、サクラ先輩とモモちゃんが「simRatio」関数の仕組みや、配列の添字、ループ処理の注意点を紐解きます。パスワードチェックや検索エンジンの裏側で使われる基礎知識から、AI時代の最新技術であるベクトル検索への繋がりまで、エンジニアとして必須の視点を学べる内容です。 本編で中心となる文字列の類似度判定アルゴリズムは、二つの配列の並びがどの程度一致しているかを数値化する仕組みを指します。具体的には、同じ要素番号にある文字同士が一致するペアの数をカウントし、それを全体の要素数で割ることで、0.0から1.0の実数として算出します。この処理はパスワードの使い回しチェックやデータの差分検出、さらには検索エンジンの「もしかして」機能など、実際の開発現場でも広く応用されています。プログラムを構築する上でまず重要となるのが、ガード節と呼ばれるループ処理に入る前の事前チェックです。本問では二つの配列の要素数が等しくない場合に直ちにマイナス1を返す処理がこれに該当し、不必要な計算を防ぐ役割を果たします。また、試験特有のルールとして配列の要素番号が1から始まることにも細心の注意が必要です。一般的なプログラミング言語では0から始まることが多いですが、この前提を間違えると正しい結果が得られません。アルゴリズムの核心部分であるループ処理では、現在どこを見ているかを示す変数と、一致した個数を数える変数を明確に区別することが求められます。例えば、現在地を示す添字である変数iと、得点を蓄積する変数cntを混同してしまうと、配列の範囲外を参照するエラーを引き起こす危険性があります。比較の際には、同じ位置を正確に指定するために、配列の添字としてループカウンタを使用し、条件式を適切に記述することが正解への鍵となります。計算結果を返す際には型変換も意識すべき点であり、整数の割り算であっても戻り値が実数型として定義されている場合は、精度の扱いに注意が必要です。こうした一見地味な文字の一致チェックは、現代のAI技術の基礎でもあります。かつての単純な文字比較から、現在では単語の意味をベクトル化して比較するコサイン類似度や、編集距離を用いたあいまい検索、さらには大規模言語モデルを活用したベクトル検索へと技術は進化しています。基礎となるアルゴリズムの論理構造やコードの意味を深く読み解く力は、最新の技術を理解するための強力な武器となり、エンジニアとしての成長を支える土台となるでしょう。