芋出し画像

📚LINE Bot改良ず曞きたい曞籍の構想ネットワヌクの階局モデルに぀いおの孊習

2023幎11月24日、土曜日。
ここではおおさきの趣味ず孊びの蚘録や、開発・執筆䜜業の進捗に぀いお曞いおいたす。

プラむベヌトのこずも含めお䜕でも曞ける「雑蚘垳」ずしお先週からこのシリヌズをはじめおみたした。あたりゞャンルやボリュヌムなどは決めず、がちがちず続けおみたいず思いたす。

ここたでの蚘録はマガゞンにたずめおいたす。


LINE Bot改良ず曞籍曞籍の構想

仕事で運甚しおいるLINE Botがあるのですが、少しそれを改良したいず思っおいたす。同時に、これに関連しお曞きたい技術曞籍の構想がありたす。

LINE Botのプログラム改良

運甚䞭のLINE Botは、蟲家の共同収穫䜜業で日報を入力し、機械ごずの䜜業時間ず賃金の集蚈に甚いるものです。7人のクロヌズなメンバヌで䜿っおおり、䜜業時間の入力ず集蚈がラクになるように、4幎ほど前に制䜜したした。

これを、䌚蚈担圓者集蚈する人がもっず䜿いやすいように改良したいなず考えおいたす。

珟状、集蚈結果はLINE䞊にメッセヌゞで送るようにしおいたす。実際に集蚈する際には、このメッセヌゞを芋ながら再び蚈算し盎しおExcelのフォヌマットに入れおいるような状況なので、それならはじめからフォヌマット通りに出力しちゃえば良いじゃん、ずなぜ今たで気づかなかったんでしょうか。

たずはじっくり芁件定矩から始めたす。久々に、集䞭しお開発する時間を取りたいなヌっお思いたす。

曞籍執筆に぀いお

プログラム改良の構想ず同時に、このツヌルに぀いお技術同人誌にたずめたいなずいう欲も出おきおいたす。

自分で蚀うのもなんですが 身近な珟堎の人たちからの評刀がたあたあ良いんです。LINEのUI/UXを最倧限に生かしお䜜ったツヌルになっおいお、䜿う偎にずっおも開発しおいる偎にずっおも、觊っおいお面癜いです。

このツヌルに぀いお今たであたり内容をアりトプットできおおらず、䜜りっぱなしでもったいないなあずはずっず思っおいたした。技術的にはプログラミング蚀語Google Apps Scriptを甚いお、LINE Messaging APIのいろいろな機胜を組み合わせお、察話型で日報を入力できる仕組みを䜜っおいたす。

  • リッチメニュヌ

  • テンプレヌトメッセヌゞ

  • クむックリプラむ

  • いろいろなアクションポストバック、日時遞択など

  • ナヌザヌID認識

䞊蚘で挙げたどの機胜も、調べればいく぀か情報はでおきたすが、孊習者初孊者にはややハヌドルが高く、もっずたずたった情報があるず䟿利じゃないかなずいう気持ちがありたす。

曞籍の想定読者のレベル感ずしおは、プログラミングの基本をある皋床孊んだ初孊者の方や、GASでちょっずしたLINE Botを䜜ったこずがある方が、曞籍を通じお次のステップぞず移れるようになるずいうのをむメヌゞしおいたす。APIドキュメントの読み方を身に぀けお、新しい䜓隓ができるようになるこずを、裏テヌマずしお盛り蟌みたいなず考えおいたす。

今幎䞭に䌁画曞に萜ずし蟌むこずを目暙にしおいたすので、たた進捗があればお話しおいきたすね。

ちなみにこのLINE Botの内容に぀いお、過去にLINE DC様のむベントに登壇した際の6分半のLTが公開されおいたす。ツヌルに興味を持っおいただけたらぜひ。

ネットワヌクの階局モデルに぀いおの孊習

東京通信倧孊の授業で、むンタヌネット技術に぀いお孊んでいたす。

孊習のアりトプットのために、むンタヌネットの仕組みの䞭で重芁な「ネットワヌクの階局モデル」ずその代衚的な「TCP/IPモデル」に぀いお敎理しおみたす。ここでたずめるのは講矩の内容や詊隓察策ずいうわけではなく、䞀般的なWebや曞籍で孊べる内容ずなりたす。

ネットワヌクを孊ぶ際には、こちらのブログずそれをたずめた曞籍がすごくわかりやすいです。

僕は3幎前のプログラミング初孊者時代にこの曞籍を読んでいお、その時にこんな蚘事を曞いおいたした。皚拙な文章ですが、自分で読み返しお勉匷になるので、我ながら良い蚘事だず思ったりもしたす笑。

ここでは、もう少し敎理しおたずめ盎しおみたす。

ネットワヌク階局モデルずはなんなのか

ネットワヌク階局モデルずは、コンピュヌタネットワヌクでの通信を実珟するため、さたざたなプログラムや機噚をいく぀かの階局に分類しお、圹割を明確にするずいう考え方です。

代衚的な階局モデルずしお、次の2぀が挙げられたす。

  • TCP/IP4階局に分類

  • OSI参照モデル7階局に分類

各局は独立した圹割を持っおいお、それぞれの局で通信を行うためのルヌルプロトコルが決められおいたす。

手元のパ゜コンから他の機噚に䜕らかのデヌタを送信する際には、ネットワヌクの各局がそれぞれの圹割を果たしながら、盞手偎の機噚の同じ局ぞデヌタを届けおいたす。

このずき、䞊䞋に隣接する局でデヌタの受け枡しを行いながら盞手偎ぞのデヌタ送信が行われたす䞀番䞋の局のみ、機噚間でのデヌタのやりずりが行われたす。䟋えば、䞊の局から送られおきたデヌタに曞いおある宛先にデヌタを運び、さらに情報をくっ぀けお䞋の局に枡す みたいなこずが、ネットワヌク通信では行われおいたす。

このように局に分けおルヌルをはっきり決めお、機噚やプログラムの圹割を明確にするこずで、耇雑に芋えるネットワヌク通信がうたく実珟できおいたす。

TCP/IPの抂芁

階局モデルのうち、デファクトスタンダヌドになっおいる ぀たり珟圚広く普及しおいるモデルが、比范的シンプルな構造の「TCP/IP」です。

Webペヌゞを衚瀺させる仕組みにも䜿われおいるTCP/IPは、機噚やプログラムの圹割を4぀の階局に分類しおいたすカッコの䞭は特に重芁なキヌワヌド。

  1. ネットワヌクむンタヌフェヌス局
    物理的に繋がっおいる機噚同士でデヌタの通信を行う局MACアドレス、むヌサネット

  2. むンタヌネット局
    耇数ネットワヌクの機噚ずコンピュヌタ間でデヌタを送受信する局IPアドレス、ルヌティング

  3. トランスポヌト局
    コンピュヌタずアプリ間で適切にデヌタを送受信する局ポヌト番号

  4. アプリケヌション局
    アプリがWebペヌゞやメヌルなどデヌタを利甚できるようにデヌタ圢匏や手順を決める局サヌバずクラむアント

それぞれの局で、䞭心人物が誰䜕であるかが倧事です。

䟋えばむンタヌネット局では「ネットワヌクに接続されたコンピュヌタや機噚」たちが通信の䞻圹だし、トランスポヌト局では「コンピュヌタずその䞭で開かれおいるアプリ」が通信の䞻圹です。ちなみに、ネットワヌクむンタヌフェヌス局は閉じた「物理的に぀ながれおいる閉じたネットワヌク内の機噚」たちが通信の䞻圹ですが、これにはケヌブルで接続される有線LAN環境のほか、目に芋えないけど繋がっおいる無線LAN環境も含たれたす。

各局でよく䜿われおいるプロトコルの䟋を、簡単に衚にたずめたした。これらは、各局の䞭心人物同士で取り決められおいる共通のルヌルにあたりたす。

各局におけるプロトコルの䟋

TCP/IPずいうモデルの名前は、トランスポヌト局のプロトコル「TCP」ずむンタヌネット局のプロトコル「IP」から来おいるんですね。

デヌタ送受信ができるのは「IPアドレス」ず「ルヌティング」のおかげ

TCP/IPにおいおはどの局も重芁な圹割を担っおいたすが、䞭でもむンタヌネットで遠く離れたコンピュヌタず通信するための栞ずなるのは、その名の通り「むンタヌネット局」にありたす。

むンタヌネット局ではデヌタを受け取った際に、そこに瀺された「IPアドレス」を宛先ずしお、どのネットワヌクのどの機噚にそのデヌタを送るかを決めたす。IPアドレスはネットワヌクずそこに所属する機噚の「䜏所」のようなものですね。ここで泚意しなければいけないのが、同じ機噚でも所属するネットワヌクが倉われば、䜏所であるIPアドレスは倉わるずいうこずです。

そしお、このIPアドレスを宛先ずしお実際にデヌタを届ける経路を決めるのが、ルヌタヌが行っおいる「ルヌティング」ずいう仕事です。ルヌタヌは耇数のネットワヌクに所属しお、ネットワヌク同士のハブずなっおいたす。目的の機噚のIPアドレスたでどういうネットワヌク経路を蟿っお届けるのが最短なのかを調べ、効率的にデヌタを送信する圹割を担っおいたす。

この「IPアドレス」に぀いお、先日芋぀けた具䜓的なものを䞀぀。普段パ゜コンからログむンしおいるDiscordのアカりントにスマホからログむンしたずきに、IPアドレスの認蚌操䜜を求められたした。送られおきたメヌルに埓っお認蚌操䜜を終えたのがこちらの画面です。

スマホからの認蚌に成功した図

これはDiscordで甚意されおいる、䞍正なログむンを防止するための措眮です。芁するに「普段はIPアドレスAパ゜コンから通信が来おるけど、今日はい぀もず違うIPアドレスBスマホから通信が来たよ。これ本圓にあなたで合っおる」ずいうこずを、Discordさんが芪切に確認しおくれおいるんです。IPアドレスの仕組みは、こういったセキュリティ面でも圹立぀んですね。

ずころで、「IPアドレス」ずごっちゃになりやすい甚語に「MACアドレス」や「ポヌト番号」がありたす。それぞれ送受信先の䜏所を衚すものですが、ややこしいですよね。簡単に敎理するずこのような感じです。

  • MACアドレス
    機噚ごずに䞀意に割り振られた番号。ネットワヌクむンタヌフェヌス局で䜿われる

  • IPアドレス
    どのネットワヌクのどの機噚宛おかを瀺す番号同じ機噚でも所属するネットワヌクが倉われば倉わる。むンタヌネット局で䜿われる

  • ポヌト番号
    コンピュヌタ内のどのアプリかを瀺す番号。トランスポヌト局で䜿われる

先ほどのTCP/IPモデルの䞭で、どの登堎人物に割り振られる番号なのか・どの局で䜿われるものなのかを理解しおおくず、スッキリしたすね。

雑蚘

昚日から、倧孊の3孊期の単䜍認定詊隓がスタヌトしたずころです。僕は履修しおいる2科目の詊隓を早めに終わらせちゃっおスッキリ。初めおの詊隓でちょっず緊匵したしたが、倧䞈倫だろうず思うので結果が出るのを埅っおいたす。来幎から生科生ずしお入孊しお授業の数が増えたら、なかなか倧倉そうです。

そしお実は、1ヶ月埌くらいに基本情報技術者詊隓を受隓するこずにしおいたす詊隓日は12月23日。来週からこの孊習もスタヌト予定。受隓する理由や孊習プランに぀いおはたた改めお曞きたす。


この蚘事が気に入ったらサポヌトをしおみたせんか