2025年08月27日
まずはSKさんによるTCPの状態遷移に関する発表でした。TCPとはTransmission Control Protocolの略で、通信の「信頼性」に重点をおいたプロトコルのことです。
TCPにおいて、クライアントがサーバーに接続するときに「3ウェイハンドシェイク」という手法で通信を確立します。3ウェイハンドシェイクとは信頼性のある通信を行うために3回のパケット交換を行ってからTCPの接続が開始され、データの送受信が可能になります。擬人化して例えると、会話を開始するまえに3回メッセージを送ってから会話を開始します。実際、電話で会話を開始する際に急に本題から話始めないのと同じですね。
3ウェイハンドシェイクによって接続が確立されると、状態が「ESTABLISHED」になります。
TCPの状態遷移図です。複雑なように見えますが、CLOSEDの状態から複数の状態をたどっていって接続が確立されます。
TCPでデータを送る際には、ヘッダーとデータの二つに分かれます。これを手紙で例えると、宛名などが含まれている部分と本文が含まれている部分にわかれるのに似ています。
今回の勉強会では、Linuxカーネルにおける通信確立の実装についても見ていきながら進めました。ネットワークの知識はクラウドのセキュリティなどを考えるうえでも重要になってくるので、ぜひ勉強しておきたいですね。
つづいて、私の発表で、「UI/UXを考えるうえでの行動経済学」という名前での発表でした。行動経済学とは人間の行動を考えるうえでの心理学的な要素に注目した経済学です。行動経済学の著名な研究者であるダニエル・カーネマンは著書「ファスト・アンド・スロー」にて人間の2つ脳のシステムについて実験をもとに紹介しています。人間の脳には2つのシステムがあり、システム1とシステム2の2つに分かれています。システム1(速い思考)は、人間の直感的で脳のリソースをあまり必要としない思考です。例えば人の顔を見た際にその人の感情を読み取ったりとか、大きな音がしたときに音のなった方向を振り向くといったことです。また、楽器の演奏に慣れた人が楽器を演奏するといった行為もシステム1に該当します。一方でシステム2(遅い思考)は125×407を計算するとか、間違い探しをやるといったように、思考のリソースを使う注意深い行動のことをいいます。
そして、人間のシステム2の遅い思考はポイント制で、とくに複数のタスクを注意深く同時並行するのは人間には難易度が高いのです。実際、車を運転しながらYoutubeの動画を注意深くみるといった作業は非常に危険です。加えて、システム1の速い思考というのは止められません。例えばどんなに集中した環境でも近くで大きな音がしたら、そこから意識をそらそうとしても最初は意識がそちらに向いてしまいます。
これはUI/UXを考えるうえでなぜ重要かというと、例えば多くのアプリケーションで決定ボタンは画面の右下に配置してあります。にもかかわらず、その決定ボタンがある場所に削除ボタンがおかれていた場合、人間は衝動的に右下の削除ボタンを押してしまうといったことが起きます。
番号を入力した後、反射的に右下のボタンを押してしまう。
私たちはどうしてこのようなアプリケーションを作ってしまうのでしょうか。それは、エンジニアがアプリケーションを作るときには集中しているということです。私たちがUIを作成するときはそこに意識が向いているため、直感的でないUIを作ったとしても操作ができます。しかしユーザーが使う際に必ずしも集中しながらアプリケーションを使っているとは限らないためこのような現象がおきてしまうのです。ここのギャップがあるということを認識していることで、より操作のしやすいUIやUXを作れるのでないかと考えています。
最後はTさんによる「JSforceについて」の発表でした。JSforceはSalesforceのAPIを利用したJavaScriptライブラリで、Node.js上で利用することができます。JSforceを使うことで、JavaScriptで簡単にSalesforeceに対しAPIリクエストを行うことができます。したがってNode.jsが使える様々な環境にデプロイすることができます。
まず、Salesforceアカウントとの認証はOAuth2で行います。また、SOQLを用いてSalesforceのデータをクエリすることも可能ですし、JavaScriptのリクエストのメソッドを使ってレコードの作成や編集することもできます。JavaScriptやそのライブラリに慣れている人にとっては、データ取得がすっきりとかけてよいのかもしれません。
とはいえ、本来バックエンド側でやるべき処理はしっかりと責務を分割しておくべきなので、重たいデータ取得や一括の処理はバックエンドで実装すべきです。
以上が今回の社内勉強会の内容でした。