見出し画像

分かりながらするということ

意味が分からないことは、分かったつもりのまま放置されやすい

SQL Serverには照合順序というものがある。ご存知ない方も気にせず読み進めてみてもらいたい。本題はそこではない。

照合順序というのは、簡単にいうと、「文字列を比較するときの順番をどう決めましょうか」という話である。SQL Serverの照合順序は、指定の仕方がかなり複雑なので(きめ細やかに指定できると言ってもいいかも?)ぱっと見、意味が分からない。例えばこんな感じのものだ。

・Japanese_CI_AS
・Japanese_CS_AS_KS_WS

Japanese はまぁ分かるとして、その後の、CI だか、AS だかのあたりが謎である。いや、何らかの厳密な "意味" がそこにあるのだろうことは分かるんだけれども。

さて、ここからは私の実体験を話そう。

以前、上司から、次のような依頼が飛んできた。

「今度、データベースの照合順序を "Japanese_CI_AS" から "Japanese_CS_AS_KS_WS" に変えるんで、一時テーブルで CREATE TABLE の列定義中に照合順序の直指定で "Japanese_CS_AS_KS_WS" を追加しておいほしい」

私は照合順序の存在自体は知っていたものの、内容の理解があやふやだった。実作業はちょっと先になるので、この時はここで思考停止し、作業内容だけを理解した。言われた通りに作業をこなすことだけを想像して終わりにした。

「まぁ、なんか並び順とか判定ルールが変わったんだな。言われた通り書いておけばいいだろう」

その程度の認識だった。

時は流れて

上司からお願いされた照合順序指定作業を実施するよりも前に、全然別件で一時テーブルを使う必要が出てきた。そこで、もちろん照合順序のことなどすっかり忘れていた私は、何の気なしに照合順序指定なしの列定義で一時テーブルを作成し、作業を進めていた。

すると照合順序が一致しないよ的なエラーが出て、先に進まなくなった。
「ん?照合順序?SQLServer特有のアレね、そういえばまだ実施してないけど、作業依頼されたやつがあったな」
と、何の気なしに過去に依頼されたことを思い出しながら、エラーの内容を調べていた。結果的には、データベースの照合順序と一致していないとエラーになるらしいことが分かった。
使っているデータベースの照合順序は、そう、以前に上司に説明された、"Japanese_CS_AS_KS_WS" であった。しかし、一時テーブルの方は、"Japanese_CI_AS" となっているから、何も指定しないと不一致となりエラーになるということらしい。

ここでやっと、以前上司が指示した作業内容の本意をつかむことになる。

・今度、データベースの照合順序を変えること(もう変わってた😅)
・それに伴い、一時テーブルを使うと照合順序の不一致が起こり、エラーとなること
・だから、列定義の追加が必要なこと

これらのことが一気にスッと腑に落ちたのだ。
さらに、"CI_AS""CS_AS_KS_WS" のオプション部分の意味や、それらの違いも調べてみると、CI や CS は「大文字と小文字を区別するかどうか」という意味で、CI の時はIgnoreの意味で区別しないCS Sensitive区別する。という意味があることが分かった。その他のオプションも一つ一つに意味があり、絶妙なバランスで保たれていることが分かった。

分かっていればブレない、間違えない

何かの作業を行う場合、常に間違っていないか?不安に晒されることになる。自分が本当は知らないこと、知ったかぶりをしていることがベースとなる作業であればなおさら、その確率は高まる。
しかし、自分が何をするのか、何をしているのか、何をどう変えるのか、それはどういう意味なのか、といったことを一つ一つ分かりながら作業することができれば、決してその作業はブレないし、間違えることもない。
そして、仮に作業内容が少しばかり間違っていたとしてもすぐに軌道修正することが可能となるだろう。
この状態に持っていけるように、少し遠回りに感じるかもしれないが、作業を始める前に、まずは「分かる」ようになってからの方が良いだろう。
人間は分かっていることについては、自然とより独創的に考えられるようになるし、より効率的にこなすことができる。逆に分からないまま作業をすることは、作業の効率も落ちるし、最悪なのは、時間が経つにつれ、確実に何も思い出せない状況となることだろう。成果物は同じものが残せたとしても、将来の自分の価値を考えるのであれば雲泥の差が生まれてしまう。

まとめ

・何かをするときは、分かりながらやったほうが断然効率的である
・分からないまま作業開始したり、放置してしまうと後で何も思い出せないという状態になる
・時間をかけてでも、作業を始める前にその意味を理解してからはじめるべきである

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