ネットワークプログラミング
(Network Programing) 第1回 4/15
1 はじめに
ネットワークプログラミングを学ぶことの意味

- 技術的変化
- かつてはコンピュータ(大型機のイメージ)を中心に情報システムが作られ、
- その本体内で動作するプログラムに、能動的機能のない「端末」を通じて操作を行っていた
(情報技術 IT と呼ばれていた;右左図)。
- その後、ネットワークの形で使われるようになり、ICTと呼ばれるようになった(右右図)。
- 発想転換の必要
- 入門段階のプログラミング教程では、
- プログラム中で動作するオブジェクトをプログラム内ですべてコントロールする。
いわば神の視点での指向を行うことになる(右右図)。
- プログラムは1つのメインプログラム(制御の流れ)から成り(右左図
ただしC言語のイメージ)、
入力データに対応して出力データを発生させるという論理でプログラムを作ることを学ぶ。
- 現実問題として、ネットワークを前提としたプログラミングでは(もしくは、
現実に我々が遭遇する問題解決の思考においても)
設計者が制御できない(外部の)主体の挙動に対応することが必要となる。
2 受講の要件
パソコンは毎回必携 
- もちろんネットにアクセスできること
- レジュメの閲覧、メールの読み書き
等だけならスマホでも(たぶん)可能
(画面の狭さを厭わなければですが)しかし、
- プログラミングはキーボードがないとほぼお手上げ
- この授業の特徴的なプログラム動作検証(右図のように複数の窓=プログラム
の間での通信を行う) を行いたいと思うとPCでないと無理があるだろう。
<!–
部屋の電源コンセントの数が不足しているので、各自、
(この時代のマナーの1つとして)二股コンセントかテーブルタップを
PCのACアダプタと一緒に携行(する習慣をつけるように)して下さい。
–>
お互いの通信手段としてネット上の様々な機能を活用していきたいと思います。
- Google Chat(資料集トップページに入口リンクあり;ご参加下さい)をリアルタイムの連絡路として使います。こそこそ話に使ってもらってもOKです(先生からも見えてしまうけど)。
- メールは重要です(後述)。 <!–
- 必要に応じて Google
Classroomも使います(その際には指示します)。
平岡は4限がオフィスアワーの予定
質問など自由にどうぞ(あるいはメール等で) –>
非常勤の待遇で来ています。オフィスアワーは(オフィスそのものが)ないので、
メールかチャットでの連絡をお願いします。
- 教科書について
- 教科書は特に指定しない。
- Webでの調査を幅広く活用するので、検索に習熟しておくこと。
(情報は大抵ネット上にあります)
メールでのやりとりを行う
(原則として大学のアドレスを使ってください)
平岡のアドレス: hiraoka@nagano.ac.jp
件名の先頭に (NP) と書いておくこと
(内部的にNPという略号を使ってます)
課題(レポート)は原則としてメール提出
なお、本科目は例年は「ネットワーク構築論」と交替で隔年開講されています。

オンラインソフトを多数使用する
- ソフトを探し出すワザも身につけておくこと
- 窓の杜 Vector などが 信頼できるサイト
- (ただし最近はパッケージマネージャ(後述)で大抵のソフトが入手できるので
その重要性は減っているが)
情報源について
- 特に教科書は指定しません
(情報は大抵ネット上にあります)
- 特にリファレンス・マニュアルは重要
- 必要に応じて情報源はブックマークしておくこと
(この資料集サイトも含めて)
- 調査・検索の技術も重要です
- 初出単語はその場で調査
- いきつけの サーチエンジン 辞書サイト(英和・和英
技術用語など)を持っておくこと
- 実習用言語として主にruby
を使う
- 様々な言語に関心のある方のために、他の言語での使用例も
並行して提示するようにしています(資料集トップページ参照)。
3 環境の準備 
プログラミングを行うために必要な道具立ては以下の2つ(3.1~3.2)
注)
- IDE(統合開発環境)はエディタと実行環境の両方を1つの
アプリケーションで支援する(大規模開発では有用)
- だがこの授業では2つの理由から、下記のような環境を選択する
- この授業では小規模なプログラムしか作らない
- 様々なツールを選んで使うという文化にも触れておきたい
- 必要なものはインストールして使う、というのに慣れて下さい。
- インストールの方法としては(多くの場合)以下の2通りあります。
(お勧めの方法は前者)。
パッケージマネージャ
パッケージマネージャを活用するなら:
- 開発およびシステム管理系は Scoop
に用意されていることが多い
(これが、おすすめ)
- できれば早いうちにScoopをインストールしておいて下さい。 (案内のページ)
- パッケージマネージャとして Chocolatey
もあります(こちらの方が倉庫は大きい)が、
使い勝手の点で、(特に開発系では)まずScoopを使ってみることをお勧めしています。
- 開発元のダウンロードページからインストーラをダウンロードして実行。
(右図のように辿るといいだろう)
- なお、パッケージマネージャに関する解説の中に
proxyの項目が(痕跡として)書かれている。
- インストールにあたっては考慮する必要はないが、本授業で今後考慮する必要がある可能性もあるので、
本学の環境で proxyのアドレス ‘proxy’ と、ポート番号 3128 は
記憶(または記録)しておくといい。
エディタ
3.1 エディタ
メモ帳でもプログラミングはできますが機能不足でかなり不便です
TeraPadはお持ちだと思います。これでもまあまあのことはできます
特に、全角スペース等を可視にする機能は時々有用になります
伝統的に開発者は vi(や Vim)、Emacs などを使ってきました
(でもちょっと敷居が高いのでここではお薦めはしません)
昨今は Sublime Text、NotePad++、Atom、VSCode など
Windowsで使える良質なエディタがいくつかあります
- 定評のあった
Atomエディタは更新が終了された(アーカイブとしては残っているが)ので使うには不安があるが、代わりに
その後継として Pulsar が使用可能。
Syntax Highlight の機能があると
心地よくプログラムが書けます
(それだけではないけど)
もう1つ、Undo機能が充実していることも重要

3.2 言語処理系(ruby) 
インストールされていることの確認:

- インストール済の人は改めてのインストールは不要ですが、
あまり古いバージョンの人(バージョンが1.8のような数字)なら
最近の版を入れ直しましょう。
3.3 補足
コマンドプロンプトについて
- 左端に表示されている文字は「プロンプト」
(コマンドプロンプトという名前もここから来ている)
- コマンドと、(必要に応じて)コマンド引数を入力するが、
- それら相互の間には(英語の文などと同様に)
スペース(1文字以上の)が必要
- 入力し終わったら ENTER を叩く。
それではじめてコマンドがコンピュータに届きプログラムが動作する。
- コマンドとして ruby
とだけ入れた場合は、画面が一見止まった状態になる。
- これは、rubyプログラムを打鍵して入力するのを待っている状態。

- これを終了させるためには、右図のように
ctrl+Z を押したあと ENTERを入力する。
4 第一歩の技術
5
ネットワークについての重要概念
こうした用語は検索して調べてみておいて下さい
(補足解説を追々していきますが予習として)。
- URL
- ドメイン名
- IPアドレス
- ポート
- proxy
6 プログラムを動かしてみる
エディタでの保存
7 アンケート
ここ(Google
Forms)からアクセス。または、
右下欄の質問にメールで平岡あて送信ください
- パソコンやスマホ等の情報機器(についてネットワーク接続を活用する機能)を、
どんな用途に使ってますか
(パソコンのOffice系ソフト、スマホで音声通話、以外のものから
自分にとって重要な/使用頻度の高いアプリケーションを
3,4つ書いて下さい。)
- 上記で、不便を感じていることはありますか。
(あれば、具体的に書いて下さい)
- これまでに(主として大学で)どのようなことをして/学んで
きましたか
(特にパソコン管理技術およびプログラミングに関連して)
- この科目に何を期待しますか
自分はどんな取り組みをしたいと思いますか
作ってみたいプログラムなどはありますか
- 当科目ではRuby言語を中心に使っていく予定ですが、他の言語を使いたいという希望はありますが。(あればその言語名とその理由をお書き下さい。)
- その他、自己紹介、先生に予め行っておきたいこと、など、
自由にお書き下さい
4/15 課題(要約)
① まだの人はruby処理系をインストールしておくこと
② プログラムを動かしてみてください ③
アンケートよろしく(①~②ができたかどうかも付記ください)