Top

鐵人三國誌・アーカイヴ

Latest update on 2024年2月17日 (土) at 06:47:44.

目次

【第1555回】 case sensitivity(大文字・小文字の区別をするかしないか)(2024年2月13日)

土曜のメモでINSPiをiNSPiと誤記していたので修正した。CHiLi GiRLみたいにiが全部小文字ならまだわかりやすいが、INSPiは最後のiだけ小文字なので要注意だ。たぶん固有名詞でそういう凝った表記にしているということは、特別な思い入れがあると思われるので、間違えたのは大変失礼なことをして申し訳なかった。固有名詞で大文字・小文字といえば、Penthouseも、普通は、頭のPだけが大文字で他は小文字という表記になっているけれども、公式サイトのロゴを見ると、PENthousEと、最初3文字のPENと末尾のEだけが大文字でその他が小文字であるように見える。だが、実はこれはYouTubeでの説明によると、浪岡さんが激推しした、Tarpon Motelという商用利用OKのフリーフォントでのPenthouseの表記とのこと(たぶんローカルにフォントをインストールしておけば正しく表示されるはず)。

大文字・小文字を区別することをcase sensitiveであるといい、逆に区別しないのをcase insensitiveであるという。大文字が英語でupper case、小文字がlower caseだから、知っていれば間違いようのない言葉だが、これを知らずに英文を読んでいたら、たぶん文脈からでは判断が難しい場合もあるかもしれない。個人的には、コンピュータ言語に初めて接したのがBASICで、次に覚えたのがPASCALという、どちらも大文字・小文字を区別しない言語であったため、CやPerlがcase sensitiveであるのに面食らった記憶がある。

最近最もよく使うRは、case sensitiveであり、例えばxとXは異なるオブジェクトになる。Rの場合、そもそも既定の関数名が短くて、ほとんどの場合予約語として保護もされていないという問題があり、例えばdf()という関数はF分布の確率密度関数だが、英語で自由度を意味するdegree of freedomの略もd.f.なので、ついdf <- 2などと実行してしまうと、df()が使えなくなってしまう。その意味で、自由度に2を付値したい場合は、例えばDF <- 2とすれば問題ないのは利点である。ただ、バザール方式で開発されているためか、似たような機能の関数で、似たような名前であるにもかかわらず、大文字・小文字を正しく覚えておく必要があるのは、若干面倒に感じる場合がある。一例を挙げると、ベクトルの総和を求める関数sum()の拡張として、累和を求めるcumsum()はすべて小文字だが(注:あまり使わないが、積を求める関数prod()や累積を求めるcumprod()、prod(1:x)と同じ意味になるが何故かgamma(x+1)と定義されているfactorial()もすべて小文字)、行ごとの和を求めるrowSums()や列ごとの和を求めるcolSums()は途中のSだけが大文字になっている。不思議なことにrowSumsとかcolSumsとかRのプロンプトに打ち込むと、かなり複雑な関数定義がなされているが、この大文字・小文字の区別を忘れていても、実は、rowSums(x)はapply(x, 1, sum)、colSums(x)はapply(x, 2, sum)で事足りる。ちなみにcumsum(x)はプリミティブなのでR言語で定義されたコードはないのだが、敢えて書くならば、CUMSUM <- function(X) {CX <- NULL; for (i in 1:length(X)) { CX <- c(CX, sum(X[1:i])) }; return(CX)}とすれば実現できる。パッケージに至っては、どういう大文字・小文字の使い方をするかはmaintainer次第なので、覚えておくかマニュアルをその都度参照するしかない。自作のfmsbでも、例えばCoale and Trussell (1978)の年齢別有配偶出生率のモデルの関数はCT()とかfitCT()というように大文字・小文字を混在させて定義しているので、他のmaintainerのことはとやかく言えないが。

コンピュータ関連で言語以外では、メールアドレスやドメイン名はcase insensitiveなのに、webのURLのパス名以下はcase sensitiveなサーバが多い点に要注意である。これは、多くのサーバのOSがLinux系というかUNIX系で、ファイルシステムがcase sensitiveなためである。Windowsはcase insensitiveなので(現在はcase preserving=別のファイルとして扱うことはできないが、作成時の大文字・小文字は保存され、それで表示される)、同じフォルダに大文字・小文字だけが異なる同名のファイルは存在できないが、Linuxではそれが可能である(個人的には推奨しないが)。macOSの場合、X以前はcase insensitiveであったがXからDarwinベースのcase sensitiveなファイルシステムになったため、デフォルトのHFS+ではcase preservingだがcase insensitiveなのに、APFSという現在のファイルシステム上はcase sensitiveになっているという複雑な状態になっていて、macOSでマルチプラットフォームなアプリのインストールに失敗しやすい原因の1つとして知られている。ファイルシステムのcase sensitivityがOSによって違って困るのは、MySQLのようにデータベース名がそのままフォルダ名になっているマルチプラットフォームなソフトで顕著である。Linuxでは動いたのにWindowsでは動かないということや、その逆がありうる。

大学に提出される博士論文や修士論文のタイトルは、登録時のものと提出時のものはピリオドやハイフン1つでも違うとダメなので、当然case sensitiveである。けれども、ジャーナルによっては大文字・小文字の扱いにこだわりがある場合とない場合があるので、検索したい場合は、case insensitiveにして検索すべきだと思う。


今日は先々週の土曜出勤の振替休日ということになっているが、名谷キャンパスに出勤したら、次々と時間がかかる返事を要するメールが入ってきて、返事を打つのと書類づくりとスケジューリングをしていたら20:00を過ぎたので帰途に就いたという一日だった。LIFEで食材を買って帰宅し、正直不動産2を見ながら晩飯を食べた。

(list)

前【1554】(実写化して欲しいがたぶん無理だろうという作品(2024年2月11-12日) ) ▲次【1556】(書類仕事とか(2024年2月14日) ) ●Top

Notice to cite or link here | [TOP PAGE]