今回はSDの最終課題についての話をします。ヤバい人が多いSDの最終課題である「チャットクライアント」ですが爆死者が続出しています。前回(2016/07/07)では、定時に帰れる人はほとんど居ませんでした。考えて示していけたらと思います。直接的な問題に対する答えを示す訳ではないので、ご留意ください。爆死原因を考える爆死した人を見てみると、様々な原因が考えられます。プログラムの構造を理解出来ていない色々なWebなどを参考にしすぎてヤバい追加したプログラムがゴチャゴチャで整理できていないロジックがヤバい一方、Javaの書き方には流石に慣れてきており、そこはあまりネックになっていないように感じます。(ここが大事で、Javaの書き方すら怪しい人はマジでヤバいです。)一貫して言える事は「その書いてるプログラム、ほんとに理解できてんの?」っていうのが根底にあると思います。ここでの理解とは、「読むことができ、やってることを他人に説明できる」までを含みます。プログラムの構造を理解するチャットクライアントの動作を追ってみるSD最終課題は、ステップバイステップで進んできています。出発点は皆一緒で、教科書に載ってる「カウンセラーとのお話をするプログラム」を改造していく課題であるとも言える訳です。この段階で、「やべえ、チャットクライアントいきなり作れって言われてもわかんねえ、ググるか」って言ってる人はすぐ死にます。対話?チャット?どう動いてる?最初は、対話プログラムの動作を理解する必要があります。教科書と課題の順を追って理解してみましょう。最初は、教科書16.3までです。これは「サーバー」と「クライアント」が一対一で対話を行います。図示すると以下のようになります。それぞれサーバーとクライアントには、出口と入り口(outとin)があります。クライアントからサーバーに情報を送りたかったら、クライアント側の出口(out)に情報を渡して上げます。すると、不思議なことにサーバー側の入り口(in)に情報が流れ着きます。これが今回の課題の超大切な部分です。これだと一対一で不便だよね!って事で次が教科書16.4です。スレッドってのを使うことで、複数のクライアントとの接続を可能にします。図示すると以下のようになります。先ほど、出口と入り口を持っていたサーバーですが、今回は出口も入り口も持ちません。サーバーは、クライアントが接続してきたら、それぞれのクライアントとの通信を行う部分(つまり、出口と入り口)を持つ「スレッド」をぬるっと作り出し、それに情報のやりとりをさせます。サーバー一人だと大変だから、自分の分身みたいのをもりもり作って、そいつらに仕事をさせてるような感じです鋭い人はここで気付くと思います。対話プログラムもチャットプログラムも、本質的にやってる事は変わらない訳です。短くなりましたが、前編はここまでで。中編だか後編だかは、夜ご飯を食べた後に上げたいと思います。(10)月別アーカイブ検索はてなブログをはじめよう!ne5okuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。