公開日 2023-10-12 更新日 2023-11-09
時は1999年末、やっと授業用コンピュータの更新が決まりました。Windows95も普及して、インターネットの体験をさせたいとの声が高まっていた時代でしたが、本校では1988年に導入されたフロッピーディスク起動のものを使い続けていました。
このときにはWindows98SE機を40台入れ、Linuxをサーバーにして移動ユーザプロファイルが使えるシステムを作りました。これは生徒がどのコンピュータを使っても自分の環境で使えるという仕組みです。その後、クライアント機もLinuxにして最初はsmb-mount, のちにはnfsを使ってUNIX系のマルチユーザーシステムとしました。
このシステムの構築のためのメモが残っていますが、読み解くのは意外に困難でした。こちらの知識不足とともに、ソフトウェアの不具合やその改善、仕様変更も絡んで二転三転します。しかも、ある問題が解決したときには次の作業で忙しくなり、記録がおろそかになっています。ソフトウェアの状況も変わっているので検証ができることも限られますので不正確になるかもしれませんが、思い出して書き留めておこうと思います。
予算の制約があってWindows98SEは妥当な選択でした。当時のLinuxはGUIのデスクトップとして使うのは無理でした。
どちらにせよハードディスクで起動するコンピュータになることで考えなければならないことができます。フロッピー起動では毎回はじめの状態に戻ります。また、課題はフロッピーに保存して提出となりますから、次のクラスに影響が残ることもなく、故障に代替え機をあてがうことも容易です。しかし、ハードディスク起動ではそうはいきません。次のような目標をたてました。
Windows95からWindows98に進むに従って、一つのコンピュータを複数のユーザで使用し、それぞれの設定を別々に記憶させることが可能になってきました。家庭での利用を意識してか「ファミリーログオン」と紹介されていたように記憶しています。ユーザーごとの設定をハードディスク内の個別の場所に保存することで実現するようになっていました。これを「ユーザープロファイル」と呼んでいました。ユーザープロファイルの内容とできるものはだんだん増えて、デスクトップアイコンやネットワークコンピュータ、スタートメニューなどを追加するかどうかの設定がGUIで設定できるように変化していきました。
さらに、WindowsNTサーバーを使えば、このプロファイルをサーバーに保存しておき、ログオン時にコピーして使用し、ログオフ時に書き戻しておくという使い方ができたようです。予算の関係でNTサーバーの導入はできませんでしたが、これをLinuxサーバーで何とかできないかということだったわけです。
当時アスキー出版から「Microsoft Windows 95リソースキット」というマニュアルが販売されていました。マイクロソフトのネットワークだけではなく、NetWareにも言及があって、NTサーバーでなくても何とかなるかもしれないと思いました。マイクロソフトもネットワークの世界ではまだ肩身の狭かったことがわかります。
Windowsクライアント時代に2方式、Linuxクライアント時代にも2方式とやり方を換えています。次の3つを念頭に置くと違いがわかりやすいでしょう。
サーバー環境は、Red Hat Linux 6.1J に samba 2.0.5a。 クライアント機はWindows98SEでした。プロファイルとユーザーホームの両立に問題があり、ユーザーホームはWSHで接続していました。
sambaはLinuxサーバーにNTサーバーの真似をさせるオープンソースlソフトウェアです。実験環境ではslackwareとsamba 1.9.18p2でしたが、本番環境では Red Hat Linux 6.1J と samba 2.0.5a を使いました。
2000年4月からの授業に向けて1月から3月までが準備期間でしたが、サーバーの認証によるログインと、移動ユーザープロファィルの実現にはかなりの紆余曲折がありました。
今から思えば、目星がついてサーバーを本番用のものに交換したときに、管理方式の異なるRedHatに移ったこと、Version2になったばかりのsambaに移ったことに加え、わかりやすく設定できるはずのRedHatのlinuxconfという管理ツールから始めてしまったために、いらない苦労をしてしまいました。sambaの設定ツールであるSWATも含め、「簡単設定ツール」を避けるようになったのはこのときの経験が原因です。
サーバーは X windowを入れずに、日常使いであったWindows98から Tera Term Pro というターミナルソフトで telnet 経由で管理をすることにしました。linuxconfも端末から操作するコマンドで、設定ファイルを編集するというものでした。
主要な部分のみ。
[global] workgroup = vine security = USER encrypt passwords = yes smb passwd file = /etc/smbpasswd domain master = yes preferred master = yes local master = yes os level = 32 domain logons = yes logon script = logon.bat logon drive = U: logon home = \\%L\%U logon path = \\%L\profiles\%U [netlogon] comment = netlogon path = /home/netlogon [profiles] path = /home/profiles browseable = yes guest ok = yes writable = yes [homes] comment = Home Directories browseable = no read only = no create mask = 0755 directory mask =0755 valid users = %S only user = yes [share] path = /home/share write list = adachi,otawa guest ok = Yes
%に英字(大小を区別)は置換されて接続に応じた値になります。主なものをいくつか書いておきます。
ユーザー名とパスワードの一覧を作り、perlスクリプトで一括してサーバーに登録しました。ユーザーの登録はunixユーザーの登録と共にsambaユーザーとしての登録も必要です。最初にsambaを試したときにはunixユーザーだけでよかったのですが、暗号化パスワードの採用と共にsamba用の登録が必要になりました。パスワードをそのままネットワークに流すのは盗聴される危険があるということで、暗号化して送信することになったのですが、その方式がそれぞれ異なるためにこのようになったということです。
このユーザー名のリストに従って、サーバー上にディレクトリ(フォルダ)を予め作成しておく必要があります。これもperlスクリプトでやりました。たとえばalphaというユーザーには /home/profiles/alpha と /home/alpha を作ります。
スクリプトについては後で詳しくのべます。
net time \\zebedee /set /yes net use u: \\zebedee\share net use /home
zebedeeはサーバーのhostname。 1行目は時刻の同期です。
2行目のshareは生徒用の読み出し専用の共有。実際には使うことはありませんでした。
最後の net use /home は、本来は net use * /home とすべきものです。これでは /home にしたドライブを表示するだけです。正しく指定するとうまく行かなかったのかもしれません。この時期の記録を探しましたが、無効にしている版もあり定かではありません。ここがうまく行かなくて次のWSHを使ったはずです。
var ObjNet; ObjNet = WScript.CreateObject("WScript.Network"); ObjNet.MapNetworkDrive("N:","\\\\zebedee\\" + ObjNet.UserName); WScript.Echo("\\\\zebedee\\" + ObjNet.UserName);
ObjNet.UserNameはユーザー名です。たとえば、alphaというユーザーなら、\\zebedee\alpha という共有を Nドライブとして接続するという指定です。
WScript.Echo()はただやったことを表示するだけ。
Windows上で作成して/home/netlogonにコピーします。Windows側からは \\zebedee\netlogon にあるように見えます。
システムポリシーファイルは、Windowsにポリシーエディタを追加インストールして次のように作成します。
1. [通常のユーザー]-[コントロールパネル]-[ネットワーク]で、 「[ネットワーク]コントロールパネルを制限する」をチェック 2. [通常のユーザー]-[シェル]-[制限]で「[ネットワークコンピュータ]から [ネットワーク全体]を削除する」をチェック 3. [通常のコンピュータ]-[システム]で「実行」をチェック。 さらに、起動時の実行プログラムの記述を追加。 追加は名前を適当にAddNetDriveなどとし、上記のWSHスクリプトを値として指定する。 具体的には wscript \\zebedee\nelogon\w1.js と記入
内容は、ユーザーのコントロールパネルへのアクセスの制限や、起動時の自動実行の指定です。
ポリシーエディタの設定は CONFIG.POL という名前で保存されます。これは、ログオン時に取り込まれてレジストリの一部になります。
Windows上でテストユーザーを使っていろいろ設定した際にできたUSER.DATを全部のユーザーのprofilesディレクトリにコピーします。
実際には /home/profiles/moto/ などに格納しておき、新規ユーザーを登録するときにコピーします。
alphaというユーザーを登録するには、/home/profiles/moto/をまるごと/home/profiles/alpha/としてコピーします。Windows側からは \\zebedee\profiles\alpha などにあるように見えます。これはユーザープロファイルの一部としてユーザーが変更可能なもので、デフォルトの設定を配布するという意味です。
機械やソフトの諸設定を一手に引き受けて記録するデータベースのようなもの。windows3.1時代の .INI ファイルのようなテキストファイルではないが、下記の3つのファイルに分けられて保存されている。
このうちUSER.DATはユーザーの好みの設定で、ユーザープロファイルとして保存される内容。CONFIG.POLが強制する内容という位置づけになっている。
ユーザーホームについての設定が一貫していませんね。後々、マイドキュメントをネットワークドライブにしていますが、これまでの記述ではそうなっていません。w1.js により、N:ドライブができ、ユーザーalphaならば 'zebedee'のalpha(N:) というドライブが C: D: の次に並びます。しかしこれだけではマイドキュメントになりません。もともとsmb.confの「logon home = \\%L\%U」がログオン時のユーザーホームの指定で「logon drive = U:」がそれをU:に割り当てるという指定のように見えます(実はこれはNT用て98では働きません)。
第一期の設定のときには、Windows98の仕組みとしてマイトドキュメントがどこになるのかを把握できていませんでした。上に掲載した図をもう一度掲示しますが、個人的に使用したい項目(つまりはユーザープロファイル)の選択にマイドキュメントフォルダがあります。
ここで選択した項目は、c:\windows\profiles\<username>\ に対応するフォルダが作成されてそこに格納されます。これが domain logon になっていると、\\zebedee\profiles\<username>\ にコピーされ、ログオンとログオフのときに同期されます。つまりマイドキュメントはユーザープロファイルの一項目で、ユーザープロファイルのコピーされる場所をユーザーホームと言っているようなのです。これが混乱の元であったようです。
「My Documents」を、ユーザープロファイルの項目として選択すると、ユーザーがalphaならば Windowsでは 'c:\windows\profiles\alpha\My Documents' になり、サーバー側では '\\zebedee\profiles\alpha\My Documents' と同期されます。マイドキュメントには大きなファイルも置かれる可能性が高いですから、授業が終わって全員がログオフするタイミングで、一斉にコピーされるというのはまずい設計なので、これは指定から除きました。その代わりに、ネットワークドライブをマイドキュメントにできれば、生徒が保存するタイミングがまちまちになるので、アクセスが短時間に集中しないと考えたのです。しかし、logon home と logon drive そして、net use u: /home などではうまく行かず、WSHでネットワークドライブをドライブ名(N:など)で指定し、マイドキュメントの位置をそのドライブにすることで実現しようとしたのです。
ここで解説した設定ファイルの内容は3月21日あたりの記録にあるもので、全体を総合すると不要な設定があったりドライブ名が異なったりしています。授業の始まる4月10日あたりまではまだ日があります。この後変更があったか、多少矛盾したままでも動いたのかわかりませんが、正確な記録がないのでこのままにしておきます。次の年の改訂ではきちんとした物になります。
設定は疑問が残っても実際の接続は記録があります。6月になって作成した、生徒に画像を保存する場所を説明する図があります。次の図がそれです。
この図ではユーザーは架空のN8hogeになっています。\\zebedee\N8hoge が U:ドライブに接続されていて、それが「マイ ドキュメント」になっていることがわかります。
\\zebedee\share は U: ではなく、S:になっています。
使用した画像処理ソフトのデフォルトの保存場所がソフトのインストールディレクトリ内のImagesフォルダになっていて、変更しようとすると、ディレクトリツリーが表示されるのですが、マイドキュメントが隠れていて「zebedeeのN8hoge」が先に見えるのでこの説明図を作ったという次第です。
というわけで、smb.conf, logon.batとw1.jsは次のようになっていたのではないかと推測されます。
推測のsmb.confの [global] セクションの要点
domain logons = yes logon script = logon.bat logon path = \\%L\profiles\%U
推測の logon.bat
net time \\zebedee /set /yes net use s: \\zebedee\share net use /home
推測の WSHスクリプト(w1.js)
var ObjNet; ObjNet = WScript.CreateObject("WScript.Network"); ObjNet.MapNetworkDrive("U:","\\\\zebedee\\" + ObjNet.UserName); WScript.Echo("\\\\zebedee\\" + ObjNet.UserName);
実はsambaの仕様にも変更があって(たぶんWindowsにも変更があって)齟齬が生じていたようです。sambaの次のバージョンのマニュアルでそれが明かされます。つまりは正しくはないけれど、総合的には結果としてうまくいっていたということらしいので、これ以上追求しないことにします。
以上、ユーザープロファイルとマイドキュメントを分け、ユーザープロファイルは logon path で指定し、マイドキュメントはネットワークドライブとしてU:に接続してマイドキュメントに指定するという構成になりました。
例として、alphaというユーザーがログオンしているときの接続の様子を図示します。
プロファイルはログオンとログアウトで相互にコピーして同期します。ログアウト後もデータがクライアント機に残ります。
もしも全部のクライアント機にログオンしたことのあるユーザーがいれば、全部のクライアント機の C:\windows\Profiles にデータが残ります。
逆に図にある gamma の様にサーバーに登録されたユーザーであっても、それを使ったことのないクライアント機にはプロファイルデータは残りません。
マイドキュメントは、サーバーに直接読み書きし、クライアントとは同期しません。つまりどのクライアント機にもデータは残りません。
授業前の設定はサーバーだけではありません。クライアント機となるWindows機の設定も必要です。
実習室に納品されたWindows機は、通常にプレインストールされたWindowsマシンと同様で所有者を入力し、プロダクトコードを入力する必要がありました。40台ありますが、この時代は一つずつやるしかありません。ついでに次のような設定をします。
LANを通して接続、 プロキシは設定しない、 メールのための登録はしない。 すぐに接続はしない。
HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Main の FirstHomePage という文字列を削除する ついでに同じ所の Start Page の値を http://192.168.1.129/ にする。 これは zebedee のWebPageを指す。通常の方法でもできるが、ついでだ。
HKEY_LOCAL_MACHINE\Network\Logon に[編集]-[新規]-[DWORD値]で DontShowLastUser を作り値を1にする
Microsoft ネットワーク クライアント ネットワークカードを指したアダプタ TCP/IPプロトコル
IPアドレス 192.168.1.131~170 サブネットマスク 255.255.255.0
WINSサーバー 192.168.1.1
ゲートウェイ 192.168.1.222
ホスト sheepXX ドメイン seiai.ed.jp DNSサーバー 202.XXX.YYY.ZZZ XX には 01~40 までの数字が入る。
コンピュータ名 sheepXX ワークグループ vine XXには前項と同じ 01~40 までの数字が入る
[デスクトップ]フォルダと[最近使ったファイル]メニュー [スタート]メニュー [Favorites]フォルダ
(*1)により、マイドキュメントが U: になっていたのかもしれない。
(*2)と(*3)は重複している気もするが、Windowsが98SEにバージョンアップするときに [パスワード]の項目をそのままにして、[ユーザー]の項目を作ったということらしいので念のために両方やっておく。プロファイルには[My Documents]は加えない。
[パスワード]から入ったときの選択
[ユーザー]から入ったときの選択
移動ユーザープロファイルのために、ユニークなユーザー名が必要になります。加えて、なりすましを防ぐためにパスワードが必要です。
ユニークである必要から、学籍番号のようなものになりがちですが、自分の名前のほうが嬉しいものです。
しかし、さすがに全校で同姓同名の管理をするのは大変です。そこで、ローマ字で表した名前に入学(転入)時のHR名と年度の下一桁を加えて作ることにしました。
例えば
n8hanako
n:登録時のクラス名。本校ではa,b,c,d,…です。
8:入学年度の下一桁。ここまでで、同姓同名の管理はHR単位ですればよいことになります。10年経てば同じユーザー名があっても良いとします。
hanako:生徒の名前または名字から6文字をとります。多少長くても問題ないのですが、いろいろな都合で全部で8文字にしています。
本校の歴史的理由からひらがなのよみをローマ字に変換するプログラムを作っていたのでこの発想は自然でした。
文字の打ちやすさから、全部小文字とします。漢字をいれないのはOSの制約と、文字コードの問題です。当時はWindowsがShift_JIS、LinuxはEUCで運用していました。いつの頃からかWindowsも最初のユーザー登録で日本語モードがデフォルトでONになりましたが、実はそれは別名で、裏では英字からできたユーザー名を使っていました。教員のsambaサーバーへの接続で支障がでて判明しました。
英字と数字からなる8桁の文字列を自動生成しました。当時キーボードが初めてという生徒もいたのでShiftキーの使用を避け、l(エル)と1(いち)など判別しずらいものは片方しか使わないこととしました。
生徒には名刺より少し小さい紙に「氏名、ユーザー名、パスワード」を個別に印刷したものを配布し、最初の時間に暗記するように指導しました。パスワードは管理者が知らなくても運営ができるし、そうするのが正しいと示すために、パスワードの一覧表をつくらず、パスワードを忘れた場合は再設定して知らせるという方針にしました。運用してみると忘れたと申し出る生徒が多く、流石に手間なのでパスワードの一覧を隠し持っておき、知らせることにしました。それでも一月ぐらいすると落ち着きます。
当初は生徒が自分でパスワードを設定することを考えたのですが、単純なパスワードにしないようにするのが厄介な上、unixユーザーとsambaユーザーのパスワードの同期も必要だし、忘れてしまったときの対処が管理者による再設定となり、授業進行の妨げになるので断念しました。
乱数でパスワードを作るBASICプログラム(自作)を作りました。英字候補を文字列として与えています(abc順でなく、キーボードの並びです)。候補を文字列で表すことで候補に入れない文字を簡単に設定できます。
また、数字よりも英字が多く選ばれるように候補をつなげています。出来上がった8文字が英字だけ、または数字だけであったときには修正される様になっています。
一度走らせると40人分のパスワードがranpas.txtというファイルになります。
''ransuu ni yori password o tsukuru TRUE=(1=1):FALSE=not TRUE randomize val(mid$(time$,4,2))+val(mid$(time$,7,2)) KOUHON$="1234567890" KOUHOA$="zxcvbnmasdfghjkqwertyuiop" KOUHO$=KOUHOA$+KOUHON$+KOUHOA$ KLN =len(KOUHO$) KLNA=len(KOUHOA$) KLNN=len(KOUHON$) NMAX=40 WORDLEN=8 DFILE$="ranpas.txt" open DFILE$ for create as #2 for N=1 to NMAX PAS$="":NEXIST=FALSE:AEXIST=FALSE while len(PAS$)<WORDLEN I=0:while (I=<0 or I>KLN) :I=int(rnd*KLN+1) :wend P1$=mid$(KOUHO$,I,1) if NEXIST=FALSE then if instr(KOUHON$,P1$)>0 then NEXIST=TRUE if AEXIST=FALSE then if instr(KOUHOA$,P1$)>0 then AEXIST=TRUE PAS$=PAS$+P1$ wend if NEXIST=FALSE then I=0:while (I=<0 or I>WORDLEN):I=int(rnd*WORDLEN+1):wend J=0:while (J=<0 or J>KLNN) :J=int(rnd*KLNN+1) :wend mid$(PAS$,I,1)=mid$(KOUHON$,J,1) else if AEXIST=FALSE then I=0:while (I=<0 or I>WORDLEN):I=int(rnd*WORDLEN+1):wend J=0:while (J=<0 or J>KLNA) :J=int(rnd*KLNA+1) :wend mid$(PAS$,I,1)=mid$(KOUHON$,J,1) endif print PAS$ print #2,PAS$ next ''s$=input$(1) close #2 end
作られるファイルの例です。
8ydq6din hjrmr0kd t8wc1gxr jdbtu4j8 ....
登録のもとになるユーザー名とパスワードの元ファイルをつくります。次のようなものです。
a8hanako 8ydq6din hanazawa hanako a8wakame hjrmr0kd isono wakame a8nobita t8wc1gxr nobi nobita a8sizuka jdbtu4j8 minamoto shizuka a8takesi 5nczum4c gouda takesi .....
これを使って3つの作業をします。(1)unixユーザー登録、(2)sambaユーザー登録、(3)プロファイルフォルダを用意 です。
Linuxサーバーのユーザー登録ですが、unixのOSの形式ということで、unixユーザー登録と呼ばれているようです。
自作のperlスクリプトです。ユーザー名, パスワード, コメント(姓名をローマ字で)をスペース区切りで書いたASCIIテキストファイルを読み、useradd コマンドを使ってユーザーを登録をします。
スクリプトの名前がptestなのは、動作testのつもりのスクリプトがそのまま本番用になってしまい、名前にtestがついたものがアカウント登録用のperlスクリプトという括りになってしまったというだけです。Linuxなんだから.plなどという拡張子をつけたくないという心理も働いたような気がします。
#!/usr/bin/perl print "add new user\n"; # $filename="nampasyy003.txt"; # $def_group="g981"; # $filename="nampasyy002.txt"; # $def_group="g991"; $filename="nampasyy.txt"; $def_group="g981"; open(SFILE,$filename) || die "cannot open $filename"; while (<SFILE>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "$u - $p - $gc / $os\n"; #不要な残渣 $user_fullname=$gc . " " . $os; print "$user_fullname\n"; `/usr/sbin/useradd -c \"$user_fullname\" -m -g $def_group $uname`; open(CMD, "| /usr/sbin/chpasswd > /dev/null"); print CMD "$uname:$password\n"; close(CMD); } close(SFILE);
$def_group は主グループ名で、この時は学年ごとにしていますが、使うことはありませんでした。ほどなく ユーザー名と同じ名前のグループ、つまり「ユーザープライベートグループ」が一般的になるので、指定しないようになります。
スクリプトの解説
Linuxサーバー機で働くsambaサーバーへのユーザー登録ですが、sambaユーザー登録と呼んでunixユーザー登録と区別します。unixユーザーを登録していなければsambaユーザーは登録できません。
これも自作のperlスクリプトです。ユーザー名, パスワード, コメント(姓名をローマ字で)をスペース区切りで書いたASCIIテキストファイルを読み、smbpasswd コマンドを使ってユーザーを登録をします。
#!/usr/bin/perl print "set samba passwd\n"; # $filename="nampasyy003.txt"; # $filename="nampasyy002.txt"; $filename="nampasyy.txt"; $ct=0; open(SFILE,$filename) || die "cannot open"; while (<SFILE>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "\n"; $user_fullname=$gc . " " . $os; print "$uname $user_fullname -"; #`/usr/bin/smbadduser $uname:$password`; open(CMD, "| /usr/bin/smbpasswd -as $uname > /dev/null"); print CMD "$password\n$password\n"; close(CMD); $ct=$ct+1; print "$ct\n"; } close(SFILE);
スクリプトの解説
ptestで使ったユーザー一覧ファイルを読み、新規ユーザー名のフォルダを作り、雛形ユーザーのプロファイルをコピーし、パーミッションを設定する perlスクリプトです。
雛形ユーザーのプロファイルは /home/profiles/moto/ に入れてあります。
主グループ名を学年ごとにしています。$def_group がそれですが、使うことはありませんでした。ほどなく ユーザー名と同じ名前のグループ、つまり「ユーザープライベートグループ」が一般的になるので、$uname:$def_group は $uname:$uname になります。
#!/usr/bin/perl print "set /home/profiles/user \n"; # $filename="nampasyy003.txt"; # $def_group="g981"; # $filename="nampasyy002.txt"; # $def_group="g991"; $filename="nampasyy.txt"; $def_group="g981"; $ct=0; open(SFILE,$filename) || die "cannot open"; while (<SFILE>){ chop; chop; ($uname,$password,$gc,$os)=split(/ /); print "$gc $os -"; `mkdir /home/profiles/$uname`; `cp -rf /home/profiles/moto/* /home/profiles/$uname`; `chown $uname:$def_group /home/profiles/$uname -R`; `chmod 0700 /home/profiles/$uname -R`; $ct=$ct+1; print "$ct\n"; } close(SFILE);
ネットワークは1ギガビットのネットワークでしたが、接続の遅れを感ずることはありませんでした。学校のネットワーク利用では教師の号令で一斉に何かをすることが多く、突風が吹くような使い方になると心配したのですが、それほどではありませんでした。ただし、ここに紹介しなかったインターネットへの接続はダイアルアップルーターでのADSL接続でしたのでそこそこ遅かったのですが、校内のサーバーにsquidというプロキシーサーバーをいれてキャッシュしましたのでイライラしない程度には使えました。
普通高校に教科「情報」が入るのは2003年度から。この年の授業は学校設定の科目としてのものでした。
テキストはhtmlで自作して校内のサーバーに置いて生徒がログオンした自分のコンピュータから見られるようにしました。予算の関係でプロジェクターなどを用意できなかったので、これは苦しかったのですが、おかげでテキストはそのまま残っています。
当時はキーボードを触るのが初めてというのが大半で、マウスの操作も、ウインドウ操作も説明が必要でした。
Linuxサーバーを使っているので、校内にミニインターネット環境があるわけですから、最終的にhtmlでウェブページを作成して校内で公開するとか、メールを送受するなどの体験からその仕組みに触れてもらおうという方針を決めました。
授業が進むに従い書き加えていきましたから、1年目は最初からこの分量ではありません。使用したソフトウェアなどについては、ページを改めて書きます。