新人プログラマー対象のウェブプログラミング講習

内容 新人プログラマー対象のウェブプログラミング講習
期間 2004年10月 − 2004年11月
OS Linux
言語 Perl, PHP, HTML(CSS), JavaScript
アプリ Apache, MySQL

あるウェブ系企業で、新入社員のプログラマーを対象としたウェブプログラミング講習の講師をしました。
期間は1ヶ月半ほどで毎日5時間ほどの授業で、講習後は簡単なウェブアプリが制作出来るレベルにして欲しいという事で、HTML、PHP/Perlプログミラミング、UNIX系OSサーバの基礎知識を教えました。
講習の大まかな内容は以下の通りです。

  • HTML/CSS(テーブルレイアウト、CSSレイアウト、論理的なマークアップなど)
  • JavaScript(入力値のチェック、ドロップメニューの作り方、セレクトタグジャンプなど)
  • Perl/PHP基礎(演算子 条件制御文 変数 関数の説明)
  • ウェブアプリの習作(掲示板などの作成を通して、データ加工や画面遷移の考え方について)
  • プログラミングの前提知識(ファイル・変数名の命名方、ファイル管理、コメントのつけ方)
  • UNIX系OSのサーバ管理・ネットワーク管理

参加した新入社員は6人いたのですが、Java経験者が1人いるだけで、他は趣味でHTMLを書いたことがある程度でした。
スタート時点での習熟レベルですでにバラツキがありますが、加えて学習スピードが各自違うので、全員に同じ内容で授業をすると、分かってる人は退屈に感じ、分からない人は分からないまま次に進んで身につかないという問題が起きました。
最初は市販のテキストをなぞる形式で授業を進めていたのですが、このような問題のため、各自に異なったプログラミング課題を出し、他の5人に課題を取り組ませつつ、1人のプログラムを添削指導するという形式に替えました。
6人いるとそれぞれ癖というか個性があります。
とにかく真面目に説明したことを一言一句メモしてる人、課題の内容を勝手に変えてプログラミングしようとする人、やる気がない人、やる気があっても出来ない人。
それぞれの人に合わせて対応するのが大変でした。

講習が終わって、会社の人事の人にレポートを提出したのですが、「この人はそのうち上手いプログラマーになると思います」と報告した人がいました。
講習前はまったくのプログラミング未経験者だったんですが、講習を始めてすぐに高い学習能力を感じました。
授業中の学習意欲が高く、いい質問が多かったです。
講習が終わった時点では6人の中で特別抜けてたわけではないのですが、これは放って置いてもすぐに成長するだろうなと予想しました。
そして、この仕事を終えて数年後、何気なくこの会社のホームページを見たら、その時の人がその会社のエースプログラマーみたいになっていて、社長賞をもらっている様子が掲載されていました。
やっぱりなと思った次第です。

別の会社ですが、高学歴な人がプログラマーで入社してすぐに辞めたりするのを見てます。
確かに高いレベルのプログラマーになるには数学などの能力が必要と思いますが、その段階に行く前に、プログラマー向きの能力というか、性格のようなものが求められると思います。
その人はそういう能力があったんだと思います。

有名検索エンジンポータルサイトのコンテンツ管理システムの開発

内容 有名検索エンジンポータルサイトのコンテンツ管理システムの開発
期間 2003年2月 − 2003年4月
OS Linux, Windows NT サーバ
言語 Perl, JSP, シェルスクリプト, HTML/CSS
アプリ Apache, IIS, PostgreSQL

某有名検索エンジンポータルサイトのトップページがリニューアルすることになり、そのトップページを運営スタッフが更新するためのコンテンツ管理システム(管理画面)を作って欲しいという依頼でした。
トップページはニュース・天気予報・占い・TV番組表・広告などたくさんのコンテンツから構成されており、それらのコンテンツはサイト内のコーナーとして独立したページ(ウェブサーバ)を持っています。

  • 各コーナーのページ(ウェブサーバ)からトップページ用のデータを抜き出すバッチプログラムを作り、
  • 集まったデータをトップページ担当スタッフが編集するための管理画面を作り、
  • 編集後のコンテンツを本番のトップページ用サーバにアップロードするシステム

を作りました。

内容としては以上ですが、設計前の説明で以下の制約を課せられました。

  • DBサーバを管理する人がいないから、PostgreSQLやMySQLなどのDBを使ってはいけない。
  • コンテンツ管理システムはLinuxで、トップページ用サーバは複数台のWindowsで動かし、それらの通信はFTPのみ。

アップロードシステムは、スケジュール指定出来る仕様になっており、DBを使うのがプログラミングする上で楽なわけですが、NGとのこと。
スタッフが手動でFTPすることも考慮する必要がありました。

考えた末、アップロード予定の日時を年月日時分で分割し、年月日時分をディレクトリ名にして階層的なディレクトリを作成し、そのディレクトリに(バッチプログラム及び管理画面で作られる)アップロード対象のコンテンツファイルを置くようにしました。
CRONで実行されるFTPアップロードプログラムはディレクトリをスキャンし、アップロードすべきファイルが見つかれば、全ウェブサーバにFTPアップロードする仕組みでした。
知らない人が見れば変わったことしてるなって感じですが、他にも事情があって、そういう設計にしました。

もともと3ヶ月くらい制作期間があったんですが、リニューアル後のトップページのデザインがギリギリまで決まらなかったり、各コーナー担当者にお願いしたデータ生成の仕様が上がってこなかったりで、実質、リニューアル前2週間ぐらいで一気にシステムを作り上げました。
リニューアルの日、リリース作業でも予期せぬ問題が起きたりで、この仕事の後は本当にくたくたになりました。

こんな事もありました。
この会社は母体が伝統的な大企業なので、労働組合が強く、その日もプログラムを書いていたら、17時(その会社の定時終業時間)に知らない社員の人がやってきて、「春闘だから、今日はこれまでだよ!さあ帰ろう!」って言われて、(1週間後にリリースで全然間に合ってないんですが…)涙目になるという出来事がありました。
ウェブ業界には定時なんてあってないようなものという認識がありますが、やはり天下の●●●は違うなと感心しました。

インターネット回線事業会社の社内ネットワークの構築管理

内容 インターネット回線事業会社の社内ネットワークの構築管理
期間 2001年12月 − 2002年12月
OS FreeBSD, Windows 2000 サーバ
言語 Perl, HTML/CSS
アプリ Apache, Postfix, BIND, PPML, AntiVir MailGate, Active Directory/DHCP/DNSなどWindowsサーバアプリ全般, RADIUS

某有名インターネット企業の関連会社で社内ネットワーク全般を担当しました。
この会社の業務はデータセンターでのインフラ構築でしたが、社内に大がかりなネットワークシステムがあり、その管理をしました。
社内サーバルームに5-6台のサーバラックがあり、サーバが20台くらい、大型のルータ、スイッチ、アプライアンスが多々ありました。
サーバの内訳は、ウェブサーバ・メールサーバが複数台の他、社員が社内LANにアクセスするためのダイヤルアップサーバとその管理のためのRADIUSサーバ、ウィルススキャンサーバなどでした。
ウィルススキャンを社内サーバで行うのは、当時としては珍しかったと思います。
社員は100人くらいでしたが、非常に人の出入りが激しく、様々な関係会社から社員が出向してきていました。
それらはすべてWindows2000サーバでドメイン管理していました。
それまではUNIX系OSしか経験がなかったのですが、ActiveDirectoryを利用したDNSやWINS、DHCPの管理は統合されていて便利で、オフィスサーバとしてはWindowsの方が使いやすいなと感じました。

この会社の社員は技術者の占める割合が大きく、管理職の人たちは日本のインターネット業界を創世したような人たちでした。
社内規則で終業時に日報を書いてメールで提出することになってたんですが、非常に提出率が悪い。
そこで技術部長さんが、日報の未提出者に提出を促すリマインダーメールを送信するバッチプログラムを書いてくれました。
このプログラム、ソースを見せてもらったんですが、200行くらいのawkで書いてあり、「awkでこんな長いプログラム見るの初めてだ!」と衝撃を受けました。
awkで書かれた業務プログラムに出会ったのはそれが最初で最後です。
その後、その技術部長さんにある仕事を頼まれ、Perlで書いて提出したら、「最近はPerlなんて流行ってるんだね」と、昔からUNIXを使ってる人にはPerlすら新参者の言語なのだと思い知らされました。

当時2002年。
会議室の大型プロジェクターで、みんなでワールドカップの日本戦を観たことが思い出です。

音楽情報サイト制作及び社内ネットワーク構築

内容 音楽情報サイト制作及び社内ネットワーク構築
期間 2000年12月 − 2001年12月
OS Linux, Solaris, Windows 2000 サーバ
言語 Perl, PHP, Java, シェルスクリプト
アプリ Apache, InpriseAppServer, IIS, BIND, Postfix, Windowsメディアサーバ, PostgreSQL, Oracle8i, Samba/Netatalk, FML, pcAnywhere
ハード Sun Enterprise220R, Compaq DL380, CISCO 2600/1600, Alteon AD3, Watchguard FireBox

某音楽系放送局のウェブサイトの運営会社で、サイト制作及び社内ネットワーク構築を担当しました。
アーティストの新譜のリリースなどに合わせて、サイトで特集を組み、プロモーションをするサイトでした。
親会社が音楽業界にコネクションがあり、ユーミンなどメジャーなアーティストも扱ってました。
で、今思えば、かなり先進的なサイトで、アーティスト本人のブログ、アーティストの愛用品のオークション、アーティスト参加のチャット大会などを行ってました。

特に売りだったのが、プロモーションビデオの配信でした。
今のようにYouTubeはなく、ネットで音楽を聴ける(見られる)のは貴重でした。
ライブ会場に行ってライブの模様を中継するライブストリーミングもよく行いました。
当時はライブ会場にインターネット回線はまずなく、ライブストリーミングが決まると、会場にNTTのISDNを何本か引いて(ADSLはまったく普及してない時期)、ISDN回線を束ねて帯域を増やし(CISCOの高いダイヤルアップルーターを使ってましたが、資料がなく、設定に苦労しました)、データセンターにあるWindowsメディアサーバに送信、そこでリアルタイムにエンコーディングして、ウェブサイトから配信していました。

ちなみに、データセンターは事情から大阪の堂島にあり、サーバ工事のために大阪にはよく行きました。
リモートからifconfigコマンド打ち間違えてアクセス不能で大阪に行ったり、Code Redが流行って大慌てで大阪に行ったりですとか。

以上のようなウェブサイトの運営が自分の主な仕事でしたが、他に社内ネットワークの構築も大きな仕事でした。
会社が引っ越して新しいオフィスに移るので、そこのネットワークを作ることになりました。
主な内容は以下です。

  • Linuxのルーター兼ファイヤウォールの設置
  • DMZに社外関係者向けサーバを設置
  • LAN内に社員向けのファイルサーバを設置
  • (デザイナーがコンテンツをアップロードできるように)ISDNでデータセンターのサーバに直結で転送出来るシステムの作成
  • 来客用のセグメントに無線LANアクセスポイントの設置

メインのインターネット回線は、引っ越し前のオフィスではOCNエコノミーという専用回線でしたが、(当時はOCNエコノミーは一般的だったのですが)128kbpsを共用という低速な回線なため、新しいオフィスでは今は亡き東京めたりっく通信からADSLを引きました。
ADSL開通工事の際は、めたりっく通信からエンジニアが二人も来てくれました。
無線LANも当時としては珍しかったと思います。
サーバの数は結構なものになり、かしめ工具でケーブルを何十本作って、誰もいないオフィスで一人で配線して回りました。
いよいよ引っ越しになり、自分の作ったネットワークが無事動いた時は大きな達成感がありました。

この会社ではいろいろと思い出深いことがありましたが、覚えていることをいくつか。
ある日、会社の営業の人が、このバンド、まだ無名だけど絶対流行るよとくれたデモCDがあって、聴いてみましたが、ボーカルの声が地味で(デモCDで録音が悪かったのかも知れません)、これは売れないだろうとCDはすぐにどこかに捨ててしまいました。
実は、それはバンプオブチキンの『天体観測』で、この後に大ヒットしたわけですが、あのデモCD取っておけば良かったと後悔しました。

ここの会社ではFMラジオを1日中流してあり、当時よくオンエアされていたのが、くるりの『ばらの花』でした。
これを聴きながら、サーバ作ったり、プログラム書いたりしてました。
この曲を聴くとと当時のことをしみじみ思い出します。

レンタルサーバでのサーバ構築管理

内容 レンタルサーバでのサーバ構築管理
期間 1999年11月 − 2000年12月
OS Solaris, Linux
言語 Perl, PHP, シェルスクリプト
アプリ Apache, BIND, Sendmail, PostgreSQL, Majordomo, Realサーバ, CyberCache
ハード Sun Enterprise450, Sun Ultra5/10

レンタルサーバ会社での勤務で、主な仕事はウェブサーバやメールサーバの構築でした。
技術者は自分を含めて3-4人、デザイナーが1人、総務が1人、社長が1人という会社でした。
ここのレンタルサーバはサーバがSolarisなのを売り物にしていて、当時、OSはSolais2.6、ハードはSun Enterprise 450やNetraもありましたが、台数が多かったのはUltra 5でした。

今だとUltra 5のようなワークステーションをサーバにするレンタルサーバ業者はないでしょうが(というよりもSolarisをウェブサーバにしてるところがない?)、当時はSolarisを安く動かせるということで、Ultra 5を使ってました。
会社にはUltra 5 が何台も積み上げられていて、週に何度も、マシンにOSをインストールして、ApacheやSendmailをインストールして、レンタルサーバの管理用のCGIをインストールして、それをデータセンターに設置しに行ってました。

sun ultra 5会社は大手町と神田の中間にあり、データセンターはKDD大手町ビル(当時はKDDとDDIは別会社)で、歩いて10分程度。
むき出しのUltra 5を手で持ってKDDビルまで歩いて行くんですが、Ultra 5は微妙に重く、途中の鎌倉橋あたりで必ず休憩をしてました。

KDD(KDDI)ビルは当時(も今も?)インターネットの中心で、自分たちがハウジングしてるラック以外には、誰でも知ってる某検索エンジンサイトなど錚々たる顔ぶれでしたが、セキュリティは非常に甘かったです。
本来は、事前に入館予定のFAXを送り、ビルに入る際に守衛さんに入館証を見せて入館するんですが、急いでる時は、「すいません、FAX送ってないんですが、緊急なんで!入館証は忘れました。」と言って名刺を見せるだけで入れました!

当時のインターネット業界はまだ牧歌的でした。
あれから10年。
何も変わってないような、すべてが変わってしまったような…。