さあ、"文字"のはなしをしよう。

面白法人グループアドベントカレンダー2024の14日目の記事です。

フロントエンドエンジニアをしているけいとです。社内で文系エンジニアというあまり浸透しない二つ名を自称していますので、"文字"の話をざっくばらんにしてみようと思います。

"文字"コードのはなし

エンジニアとして活動する上で文字といえばやはり文字コードですよね。

文字コードについて簡単に説明すると、文字をコンピュータ上で処理する際に識別するために文字それぞれの種類に対して番号を割り振った一覧表のことです。例えば、

"KAYAC"

というテキストを打ち込んで友達に送信するのに、ASCIIと呼ばれる文字コードを利用するとします。その際、"KAYAC"は文字コードによる変換によって

"0x4B 0x41 0x59 0x41 0x43"

としてコンピュータに認識されます。通信する際はデータとして"0x4B 0x41 0x59 0x41 0x43"が送られ、そして友人の元で文字コードが参照されることで"KAYAC"が表示される、というイメージです。

今日には文字コードは複数存在しているため、テキスト→データに変換する際の文字コードと、データ→テキストに戻す際の文字コードが異なると変なテキストになってしまいます。もらったテキスト文書が文字化けだらけの怪文書になっていた、という経験がある方もいらっしゃるでしょう。まさしくそれは文字コードによるイタズラといえます。

文字コードには、先ほど例に挙げたASCII以外にもシフトJIS、UTF-8といった種類があります。それぞれちょびっとだけ説明してみましょう。

ASCIIコード

ASCIIはAmerican Standard Code for Information Interchangeのアクロニムとなっています。日本語に意訳すると情報交換のためのアメリカ標準規約、みたいなところでしょうか。Amercan National Standards Instituteによって定められたのちに、国際標準化機構(ISO)また国際電気標準会議(IEC)によってISO/IEC 646として国際化されています。

文字コードの中の基本のキ、のような立ち位置にあり、2桁の16進数のペアで表現されたエンコードデータには128個の英字、数字、または特殊な追加文字と固有の値の制御コードが含まれています。総数が128個と少ないのも特徴的です。

シフトJIS

さて、英語はA~Zの26文字が大文字・小文字の2パターンだけで事足りるためASCIIは128個のパターンで収まっていました。しかし、見ての通り日本語はひらがなにカタカナ、漢字ともう数えたくなくなるほどの種類があります。

それに対応するために日本産業規格(JIS)によって先に定められたのが日本語の文字コードがJISコードです。JISが定めたのでJISコード、というASCII同様わかりやすい名称ですね。

じゃあシフトJISって何なのか? という話です。JISコードは7ビットで1文字を表現していたのですが、それでも 「おっと、文字の種類に対してビット数が足りないぞ!」 となったワケですね。という理由でJISコードをベースに2バイトで文字を表現するように改良したのがシフトJISです。

余談ですが、小学校の間で習う漢字の種類は1,006文字、日常生活における漢字使用の目安とされる常用漢字は2,136文字、日本における一般的な漢和辞典では10,000字以上収録されているのが常とのこと。諸橋轍次が著した大漢和辞典には約50,000字の親字(見出しとして発音、字義の解説が加えられている1文字の漢字)が集められているとか。

日本語って文字のレパートリーがたくさんあって大変ですね。

UTF-8

UTF-8はUnicodeと呼ばれる世界中に存在している様々な言語の文字を統一して扱えるようにした符号化文字集合体を用いた文字の変換方式のことです。

U+306D、U+3053といったような表現は、Unicodeによる文字の表現です。ちなみにU+306Dは"ね"、U+3053は"こ"と対応しています。つまり猫。

また文書を文字化けさせるイタズラを引き起こすのは、UTF-8とシフトJISのタッグであったりもします。縺や繝のような文字が並ぶ場合はUTF-8をシフトJISで変換し読み込んだときに見られがちな漢字であり、�と英字が並ぶ文字化けはシフトJISをUTF-8で変換して読み込んだことに起こりがちです。

あと、UTF-8の親戚にUTF-16という文字コードもあります。

絵"文字"のはなし

SNSやチャットアプリでテキストを送る時に、文字だけじゃなくて絵文字も使ったりしますよね。立派な"文字"ですとも。

絵文字は海外ではEMOJIと呼ばれ、2015年にオバマ大統領が日本が生み出したものの1つとして挙げ賞賛したこともあるものです。日本では馴染み深い幼稚園・保育園における名札をイメージした絵文字📛が、海外でBurning Tofu、Tofu on fire(燃えている豆腐)として捉えられていた、なんて話題になったこともありましたね。私も勿論利用しており、🙏や👌といった絵文字を使うことが多々あります。

ではこの絵文字について。同じ絵文字でも男性だったり女性だったり、肌の色が違ったりしているのをみたことはありませんか?

それ実は、複数の文字が合体した合字(Ligature)と呼ばれるものなんです。

わかりやすく漢字の例でいくと、麿という字があります。これは日本で作られた、麻と呂の音を合わせて1文字で表す字となっています。このようなものを合字と呼んでいます。では、絵文字が合字になっている例を挙げてみましょう。

例えば、「よろしくおねがいします🙇」なこちらの絵文字🙇です。この絵文字について「🙇♀」とか「🙇♂」といった表示を見たことがある方がいらっしゃるかもしれません。それは合字が合字として認識されなかったときの表示となっており、対応しているクライアントであれば女性版の🙇‍♀️、男性版の🙇‍♂️が表示されるのです。女性版や男性版の🙇はZero with Joiner(ZWJ)と呼ばれる制御文字で女性だったり男性だったりの要素が結合されることで、🙇‍♀️になったり🙇‍♂️になったりしているというワケです。

肌の色や髪型なども同様に、絵文字同士を合体させることでそれぞれの絵文字に反映されています。1文字に見える絵文字がコンピュータのカウントだと2文字カウントだったり3文字、4文字だったりするのはこういった事情があるからなのでした。

"文字"をひらく、閉じるはなし

今まではコンピュータの文字表現に着目してきましたが、最後は人間のコミュニケーションにおける文字表現についてです。

今日のコミュニケーションにおいて文字は書くものではなく打ち込むものになってきています。書けないけど読める漢字とかありますよね、薔薇とか、躊躇とか、曖昧とか。テキスト媒体における表現について、あいまいを曖昧と書くようなひらがなの言葉を漢字で書くこと「閉じる」、反対に文字をもじと書くような漢字変換できる言葉をひらがなで書くことを「ひらく」と言います。

このような文字の「閉じひらき」は、テキストの読みやすさであったり伝わりやすさ、誤読を避けるための気遣いや文章のリズムをつくることに繋がっています。またひらがなと漢字の他、カタカナは半角カタカナなどを混ぜることで、細かなニュアンスの違いを表現したりもすることができます。

例を挙げると、この記事のタイトル「さあ、"文字"のはなしをしよう。」は話という文字を敢えてひらいて記述しています。いくつかパターンを並べつつ、個人の主観からテキストをどう感じるかを述べてみます。

さあ、"文字"の話をしよう。   :一般的な変換を用いた場合のタイトルです。するする読めて、特に何もない。

さあ、"文字"のはなしをしよう。 :採用したタイトル。後半の読みづらさがちょっと引っかかる感じ。

さあ、"もじ"のはなしをしよう。 :全部ひらがなでひらいたものです。柔らかな印象を受けます。

さあ、"モジ"のはなしをしよう。 :文字がカタカナです。見慣れない変換のモジに比重が置かれています。

サア、"文字"のハナシをしよう。 :部分カタカナ変換です。読みにくくどこか文学っぽいような雰囲気があります。

文字の内容は同じでも、パッと見たときの印象の違いが感じ取れるのではないでしょうか。とりあえずひらがな、カタカナ、漢字で異なる印象を受けることがわかっていただければ幸いです。ここまでの文章の中でも意図的に漢字をひらいている部分や、逆に漢字にしている部分、カタカナに変換しているところもあります。探してみてね。

おわりに

せっかく"文字"について述べるのだから文字一本で勝負だ、と"文字"の表現についてコンピュータの処理から人間のコミュニケーションと異なる視点から紐解いてみました。

身近にある"文字"という存在の奥深さを、少しでも感じ取っていただければ幸いです。

カヤックではたった一文字のタイポに気が付けるエンジニアも募集しています!

参考: www.mext.go.jp

www.bunka.go.jp

【JetBrains Rider】「個人的振り返り」と「JetBrains Rider 推しポイント」

Tech KAYAC Advent Calendar 2024 の13日目の記事になります。

カヤックボンドでエンジニアをやっております志村と申します。 今回は今年度の個人的な振り返りとJetBrains Riderの個人的推しポイントについて記事にしてみました!

〇 ボンド振り返り

Advent Calendarに参加させて頂けるという事で、せっかくなので今年印象に残っている出来事も軽く振り返って記載していきたいと思います👀
一覧として出すと下記なような感じがします

  • 📚書籍購入制度めっちゃいい
  • 📖輪読会で知見共有を互いにできた
  • 📸サークル参加で写真と創作
  • ⚡LT会10回連続開催達成&登壇(年内計6回)
  • 🔧社内ツールめちゃくちゃ作った
  • 📝ドキュメントめちゃくちゃ書いた
  • ♾️他にも色々

詳細書くと記事内容が長くなってしまうので、一覧として出すだけに留めたいと思いますが、インプットもアウトプットも出来た年かなと感じます。 来年も後悔がなるべくないよう自分なりに頑張ります💪

〇 Jet Brains Rider

ここからが本編です!
現在私はUnityでアプリ開発を主として活動させて頂いています。 IDE は JetBrains Riderを使用しており、個人ライセンスとして購入し業務として活用しています。

契約した年を調べてみた所「2022年11月」からライセンス契約を開始しているので丁度2年目が終了した所のようでした。 なので、今回はRiderを活用していて良いなと思った点をざっくりと記事化していきたいと思います!

※サンプルで使用している各種画像は、業務外の作品制作で使用しているプロジェクトからスクリーンショットを撮ったものになります。

ツール概要

JetBrains RiderとはJetBrains社が出している C#や.NET開発に特化した統合開発環境(IDE)の一つです。 ゲーム系で言うと「Unity」、「Unreal Engine」、「Godot」などのゲームエンジンのIDEとしてサポートしていたり、一部Web系やスタンドアロンアプリも開発できます。

🔗Rider: JetBrainsのクロスプラットフォーム.NET IDE

開発体験

ライセンスが使いやすく、多機能でツールの更新頻度も高く、情報の発信にも積極的なので、使い込む程生産性が高いと感じられるツールです! JetBrainsRiderのプロモーションビデオもユニークでとても面白いです。

ライセンスが超絶扱いやすい

下記Q&Aを見てもらうとわかるのですが、個人ライセンスで契約していたとしても会社のプロダクトに使用して問題ないと明言してくれています。 他のIDEだと、色々とライセンス毎に細かい制約などが設けられていたりするのですが、JetBrainsは下記の通りなので当時とても驚いた覚えがあります。

業務で使用したかったので現場や各関係者に個人ライセンスを使用しても問題ないか確認した後、すぐに個人で契約し現在でも業務やプライベートでがっつり使用しています。 会社やプロダクト環境に依存せず、気楽に個人ライセンスが使えるのは1ユーザーとしてとても助かると感じました。

sales.jetbrains.com

全体的に活発的

JetBrainsはSNSやYouTubeなど、公式が沢山情報を公開してくれています。
またツール側でも、更新内容をすぐにキャッチアップ出来る仕組みになっており、エンジニアに寄り添った対応をしてくれる印象が個人的にあります。

〇 公式 X 及び Instagram

どのアカウントも高頻度で更新されているのが好印象です。

〇 YouTube

www.youtube.com

〇 ブログ

blog.jetbrains.com

全体的に操作しやすい

最近個人PCが故障し、PCを新調したのですが、JetBrainsの開発環境を整えるのも本当に楽でした。
詳細については省きますが「Toolbox 」というアプリをインストール後は、数回ポチポチするだけです。

PCを新調したばっかりでGitもPCに入っていなかったのですが、それもRider側でアナウンスしてくれて、Rider環境でインストールまで出来ました。 こういう細かい所も丁寧にサポートしてくれてるのが素晴らしいです。

◆ ユーザーインターフェース

下記公式リファレンスから参照させて頂きました。 VisualStudioを使用したことがある方であればリファレンスを見なくてもすぐに使えるような使い勝手です。

引用:JetBrains Rider ユーザーインターフェース

pleiades.io

オススメ記事&機能紹介

情報のキャッチアップをしていて良いなと思った物をざっくりと紹介していきたいと思います。

① JetBrains .NET Meetup Tokyo 2019

「JetBrains .NET Meetup Tokyo 2019」という名前でリアルイベントが開催されました。
それのレポート記事になります。 JetBrains RiderのオススメポイントからTipsなど様々な視点から紹介してくれています。

JetBrains Riderに関してあまり詳しくない人はここから情報のキャッチアップをしても良いかもしれません。

blog.jetbrains.com

② 豊富なデバック機能

基本的なステップ実行デバックから、特定の条件、又はブレイクポイントに通過した回数の時にアプリを停止させたり、ブレイクポイントでアプリを停止させずにログだけ出力出来たりなど出来ます。 またブレイクポイントで停止している状態で、値を動的に書き換えたり、プロジェクトに紐づいている出力済のアプリとIDEを繋げてステップ実行デバック、C# Interactiveなど豊富なデバック機能が魅力的です。

下記CEDEC2023で発表された動画が分かりやすいのでこちらもリンクを張らせて頂きます。

youtu.be

③IDE上でのGit操作

私はGit操作は基本的にIDE上で操作をしています。 簡単な操作であればGUI上で操作が出来ますし、ターミナルも内臓しているので複雑な操作もIDEの画面から離れずに操作が出来るのが魅力的です。

Git操作用のUI画面例

またJetBrainsRiderではUnityYAMLMergeがデフォルトで設定されているのも良いです。

他のツールだと個別に設定しなくてはならない場合もあり、その手間を省くことが出来るのは個人的にありがたいです。

pleiades.io

④ 強力な検索機能

「なんでも検索」、「プレハブへの参照」「各種参照図の作成」など様々な機能があるので助かります。 詳細は省きますがイメージしやすいようにサンプル画像を何点か上げておきます。

任意のインターフェースを継承したクラスの参照状況を図化してみました

プレハブにアタッチされている参照先の表示

ソリューションが参照しているライブラリの図化

⑤IDE上でのチケット確認

JetBrains Riderとチケットツールを連携して、ブランチを作成したりチケットの操作をする事も出来ます。 こちらもイメージ画像を上げておきます。

下記チケットツールと連携出来ます。

現時点で連携出来るチケットツール一覧

チケットツールに登録されているチケット一覧を出せます

IDE上で任意のチケットの状態をクローズする事が出来ます

チケットからブランチを作成する事も出来ます

まとめ

「コード整形」、「IDE上でのテストコードの実行」、「ブックマーク機能」、「各種プラグイン」など個人的な推しポイントが他にも多数ありますが、長くなりすぎるのでこれ位にしておこうと思います! まだまだ使い切れていない、把握出来てない機能も沢山あるので日々の開発と並行して学んでければなと考えています!
以上私が紹介する「JetBrains Rider推しポイント」でした。

最後まで読んでいただきありあがとうございました。

kayac.bond