「Visual Basic」を含む日記 RSS

はてなキーワード: Visual Basicとは

2025-08-30

プログラマーって別に稼げる職業じゃなかったんだよ

プログラマーって聞くと今の若い人は稼げる業種って思うかもしれない。でも昔は、そのイメージとはまるで真逆だったんだよ。

90年代初頭、日本バブルの余韻が残ってたけど、IT業界なんてまだオタクの延長みたいに見られていた。NECPC-9801シリーズオフィス定番で、OSMS-DOS 3.3とか、その後にWindows 3.1が出ておお、マウス操作できる!なんて騒がれていた時代だ。

もちろんインターネットなんて一般にはまだ普及してなかった。せいぜいパソコン通信ニフティサーブPC-VANアスキーネット回線速度は2400bps。ピーヒョロロっていうモデム音が夜中の住宅街に響いていた。

俺らはそういう環境C言語アセンブラを叩いてたんだ。コンパイル時間がかかるからトイレに行って戻ってきてもまだ終わってなかったりした。

今みたいにGitHubコードを共有なんて夢のまた夢。ソースのやり取りはフロッピーディスクで手渡しだ。5インチのぺらぺらのやつな。運が悪いと磁気にやられて一発で飛ぶ。だから俺たちはよくフロッピー神社に参拝とか冗談言ってた。

当時のプログラマー給料なんてひどいもんだよ。

正社員手取り20ちょっと下請けフリーランスだともっと安い。今でいうSESの走りみたいな人売りも普通にあった。客先常駐COBOLやらされてバグが出れば徹夜オフィスに寝袋持ち込んで、カップヌードル缶コーヒーの山を築く。徹夜明けに食う吉野家の牛丼が唯一のご褒美。今みたいにエンジニア市場価値が高いなんて考え方はなかったからな。ただの駒だよ。

バブル崩壊後はさらにひどくなった。

仕事は増えるのに単価は下がる。Windows 95の発売で世の中はインターネット元年なんて浮かれてたけど俺たちプログラマー現実は泥臭いコード修正の山。Visual Basic 6.0やDelphiが出て「これで開発効率が上がるぞ」なんて言ってたが、結局は納期に追われるだけ。SunJavaが登場したときも「Write once, run anywhere」なんて夢を見せてくれたけど、実際には動かないアプレットと格闘する日々。

Linuxが台頭してきたのもこの頃だ。

SlackwareRed Hat Linux 5.2をCD-ROM雑誌付録で手に入れて、夜な夜なインストールに挑戦。LILOがうまく動かなくて起動しない、ネットワークカード認識しない、X Windowが真っ黒。そんな壁に何度もぶつかっては2ちゃんねる(当時はまだ草の根BBSが多かったが)やUNIX USER誌を読み漁って解決する。それが楽しくて仕方なかった。でも金にはならなかった。オープンソースに貢献しても無償善意で済まされるだけ。Red HatMySQL ABが上場するまでは、ただのボランティア活動と見なされてた。

今思うと、あの頃は純粋だった。

技術のものが楽しくて、ASCIIOh!Xを小脇に抱えて徹夜コードを書いた。秋葉原ジャンクパーツを漁って自作PCを組み立ててベンチマーク数字一喜一憂した。

飯代を削ってもSCSIハードディスク投資したし、月刊アスキー付録CD-ROMに入ってたシェアウェアを片っ端から試した。儲けようなんて意識はなかった。ただ、面白いものを作りたかった。

それが今じゃITは完全に拝金主義コードの美しさより投資家の顔色を見てる。エンジニアもどこが年収いかばかりで、言語フレームワークを選ぶ基準が金になっちまったPython流行るのもAIブームに便乗してのことだし、ブロックチェーンやNFTなんかバブルがはじける前提のネタ探ししか見えなかった。

もちろん、技術商業化されて豊かになった面もある。AWSGCPのおかげで誰でも世界規模のサービスを立ち上げられるようになったし、GitHubDockerで開発環境も夢みたいに便利になった。だがその一方で楽しいからやるという純粋さはどこへ行ったんだろう。GitHubの草がどれだけ生えてるかが採用基準になる時代Qiita記事投稿するのも、技術共有じゃなくて転職市場でのポイント稼ぎ。

あの頃には確かに、金ではなく面白さに突き動かされる熱があった。それが今は金の匂いに上書きされてしまったように感じる。

プログラマーって、本当は稼げる職業じゃなかったんだよ。

でも稼げなくても、やる価値があった。

今の若いエンジニアたちにその気持ちがどれだけ伝わるかは分からない。

当時「Hello, world.」と表示されるだけのプログラムに、30年前の俺は心を震わせていた。

その震えを知っているからこそ、今の金の匂いにむせ返る業界がどうにも虚しく見えてしまうんだ。

2025-06-21

[]横浜F・マリノスが今年壊滅している理由解説するよ

それは序盤の過密日程の影響とか、親会社経営危機とか、地元有力者との関係性の話ではない。それらの影響が全くないとは言わないが枝葉だ。

真の理由は、企業理念の設定ミス

マリノスは「アタッキングフットボール」というものクラブフィロソフィー企業理念)に置いている。1年間のスローガンではなく永続的なものとして。

タッキングフットボールとはざっくり言えばボールを常に持ちながらゴールに向かうスタイル(以下「ポゼッション型」とする)であり、2018年アンジェ・ポステコグル監督から始まった戦術でもある。

そして2019年2022年J1リーグ優勝を果たし、2021年2023年も2位と一時代を築いていた。

しかサッカースタイルは数年スパン栄枯盛衰を繰り返すものであり、本来それを企業理念に置いてはいけないものだ。

一般企業に例えたら「当社はガラケー向けサービスに特化」とか「当社はVisual Basic技術者集団としてお客様に貢献」という、寿命が長くない技術的な要素を理念に置いてしまうのと同じだ。

そしてポゼッション型が栄枯盛衰の「枯・衰」側に明らかにいたここ1-2年で、見事にマリノスは壊滅している。

ボールを持つサッカースタイルポゼッション型)が厳しくなった理由解説

いくつかあるがこの3点が大きい。

・3人→5人交代制に変更/夏季飲水タイムの追加:いずれもコロナ禍の副産物。これにより個々の選手がより長い時間走れるようになり、ポゼッション型よりも「ボールを持っている相手を追い込む」サッカースタイルの方が有利になった。後者2022年ワールドカップドイツスペイン撃破した日本代表が好例。

主審ポジショニング変更:主審は「よりボールに近いところに位置取りをしなさい」というFIFA通達2024年にあり、その結果主審ポジショニンググラウンドセンター付近から極力離れないようになったため、ポゼッション型のチームにとっては常に主審邪魔になるようになった。カウンター型のチームはボールを持ったら主審を追い越すボールをさっさと前方に出すので、主審邪魔にならない。つまりポゼッション型のチームとカウンター型のチームが対戦するというのは、11人vs12人で試合をするのに近しくなる。

特に後者の影響は大きく、2024年Jリーグではマリノス以外でも川崎フロンターレなどのポゼッション型のチームがことごとく低迷した。

そして川崎2025年シーズンポゼッション型の戦術を止めてカウンター型に切り替え、ACLでは決勝進出Jリーグも昨年より上の順位位置するなど健闘している。

一方でマリノスポゼッション型の継続選択したが全く勝てず、監督解任を経てカウンター型の戦術に切り替えて、首位鹿島などに2連勝。これを続ければ残留は出来そうだと誰もが見ていたが・・・

「アタッキングフットボール」の成功体験から抜け出せない選手

なんと選手達がカウンター戦術への転換を拒否した。

「俺達はアタッキングフットボールをやりたいかマリノスに来たんだ!話が違う!サッカー変えるなら他所移籍する!」と言い出す選手が多数出て来てしまい、このままではクラブ存続どころか翌月以降の試合開催が不可能になる可能性すらあったため、戦術ポゼッション型に戻したうえで6/19に今月2度目の監督解任の運びとなった。(こういう流れが起きていることは、直近1週間の各メディアから報道で分かる)

まさに、サッカースタイル企業理念に置いてしまっていたが故の事象である川崎サッカースタイル企業理念に置いていないのでスタイル変革が出来たが、マリノスには困難なのである

しかしその戦術は、上述の通り賞味期限切れである天皇杯JFL(4部相当)かつ中2日でコンディション万全ではないチームに0-2で負け、さらにその後の新潟との裏天王山なすすべなく完敗という体たらく

そして今日岡山ホーム日産スタジアムでの試合だが、おそらく0-3か0-4くらいで負けるだろう。

そして、秋が深まる前に、J2降格が決まっているだろう。

それでも増田マリノスの年間チケットホルダーでもあるので現地に行く。

過去成功体験に囚われ、変化への対応拒否する、レガシー人達の集まり」がどういう末路をたどるかという、今後の自分社会人生活でも大いに参考になるであろう、生きた教材を見に・・・

2025-02-14

AI生成記事

九州大学病院オブジェクト指向システム導入の記録

序章:革新的システムへの期待

1990年代半ば、九州大学病院(九大病院)は病院情報システムの全面刷新計画していた。従来の断片化したシステム統合し、最先端オブジェクト指向技術を全面採用した次世代システムに生まれ変わらせるという大胆な構想である

tumblr.com

。入札条件にも「純粋オブジェクト指向技術で実現すること」を掲げ、業界内でも前例の少ない大規模プロジェクトに挑むことになった​

tumblr.com

。この計画応札した日本IBMは、開発言語にSmalltalk採用し、社内外からオブジェクト指向開発の専門家を総動員する。日本IBM自身のチームに加え、Smalltalk豊富経験を持つ多数のシステムインテグレータ各社が協力企業として参画し、一時期は約200名もの技術者が開発に従事する巨大プロジェクトとなった​

tumblr.com

医療現場からは「21世紀を先取りするシステムになる」という期待の声が上がり、IBM側も「国内最高峰病院に最新技術を投入できる」と意気込んでいた。誰もが、この試みに大きな希望を抱いていたのである

1996年プロジェクト始動曖昧要件定義

プロジェクト1996年、本格的に動き始めた。九大病院情報システム担当者たちは、院内各部からシステムへの要望ヒアリングし、「新システムへの要望リスト」を作成して日本IBM提示した。しかし、その内容は具体性に欠けていたと言われる。「実現したい業務全体像がはっきりしていなかった」のだ。病院側は約1,400床を擁するマンモス病院ゆえ、部門ごとの意見をまとめ上げ全体方針を打ち出すことが難しく、提出された要件定義書は「中身はほとんどなかった」と関係者は振り返る。一方の日本IBMも、その不十分な要件定義を十分詰め直すことなく開発を進めようとし、この問題放置してしまった。プロジェクト序盤から、実は大きな不安の種が芽生えていたのである

それでも当初の計画は極めて野心的だった。フェーズごとに順次システムを稼働させる計画で、第1次カットオーバー最初の稼働開始)は1997年1月と定められていた​

tumblr.com

。限られた時間の中、日本IBMと協力各社の開発チームはオブジェクト指向の新手法に挑みつつ、多数のサブシステムを並行開発するという難事業に取り組み始めた。しか要件曖昧さは各所で影響を及ぼす。開発メンバーの一人は後に「実際にはオブジェクト指向入り口にさえたどり着けなかった」と語っており、肝心の新技術を活かす以前に基本事項の詰め直しに追われる状況だったという。

1997年初頭:見えてきた遅れとすれ違う思惑

年が明けて1997年になると、第1次稼働予定の目前になっても開発は難航していた。結局、日本IBM1996年10月末になって九大病院側に「当初予定の1997年1月にはシステム稼働が間に合わない」と突然伝えることになる。これは病院側にとって青天の霹靂であった。代替策として「一部機能範囲を絞れば1月稼働も可能」といった提案すら無く、一方的に延期が告げられたことに、病院担当者たちは強い不信感を抱いたという。プロジェクトマネージャー同士の密なコミュニケーションも欠如しており、延期決定前から両者の意思疎通は十分でなかったようだ。これが最初の綻びとなった。第1次稼働時期は当初計画より9カ月遅れ1997年10月へと大幅に後退する​

tumblr.com

この延期表明を境に、現場は混乱に陥る。病院側は日本IBMだけに任せておけないとの思いから、一部の協力会社と直接組んで独自プロトタイプ開発に乗り出すなど、プロジェクト体制は分裂気味になった。一方、日本IBM側の士気も下がり始める。ある協力会社メンバーは「これほど求心力のないプロジェクトも珍しい」と当時を振り返り、リーダーシップ不足だったIBM姿勢に驚いている。複数の外部企業(延べ10社以上)が関与する巨大プロジェクトでありながら、日本IBM1997年10月頃まで一貫して主導権を握れずにいた、と多くの関係者が指摘する。誰がハンドルを取っているのかわからないまま巨艦だけが突き進む――そんな不安定な状況であった。

事態を重く見た九大病院日本IBMは、1997年2月から6月にかけて要件定義のやり直しに着手する。一度作成した要件定義書を更地に戻し、業務フローも含めてゼロから整理し直す作業だ。しかしこのリカバリーにも時間を要し、プロジェクトの遅延はさらに広がっていった。「ようやく問題点に光を当て始めたかに見えたが、時すでに遅し。気づけば頭上に厚い雲が垂れ込めていた」と語る関係者もいる​

b.hatena.ne.jp

プロジェクトは先の見えないトンネルに入り込み、関係者の心にも次第に不安が募っていった。

1997年春:一筋の光明オブジェクト指向データベースの導入

混迷を極めるプロジェクトに光が差し込んだのは、1997年春のことである要件定義の立て直しと並行して、日本IBMシステム技術基盤を強化すべく重大な決断を下した。従来のリレーショナルDBではなく、米国GemStone Systems社のオブジェクト指向データベース(ODB)「GemStone」を採用する方針を固めたのだ​

tumblr.com

。GemStoneはSmalltalkとの相性が良いことで知られ、オブジェクト指向開発との親和性が高い製品である

tumblr.com

。この採用決定に伴い、GemStone社から複数名のコンサルタント来日プロジェクトに参加。停滞していた開発体制の再整備が行われた​

tumblr.com

経験豊富専門家の助言により設計も見直され、チームはようやく開発の目処を掴み始めたのである

tumblr.com

病院側もこの動きを歓迎した。長引く遅延に業を煮やしていたものの、最新のODB導入で性能や拡張性の課題解決されるならばと期待を寄せた。協力各社の技術者たちも「ようやくトンネルの先に光が見えた」と胸をなでおろした​

b.hatena.ne.jp

現場には久々に前向きな空気が漂う。遅れを取り戻すべく、再結集した開発チームはスパートをかけた。システム全体のアーキテクチャをGemStone前提に再設計し、失われた時間を埋めるため懸命な努力が続けられる。巨大プロジェクトは今、再び軌道に乗ろうとしていたかに見えた。

1997年夏:GemStone契約交渉の決裂、暗雲の再来

しかし、その光は長くは続かなかった。1997年7月初旬、プロジェクトに再び試練が訪れる。日本IBMとGemStone社との契約交渉が突如決裂し、参画していたGemStone社コンサルタント陣が全員帰国してしまったのだ。肝心のGemStone製品も利用不能となり、頼みの綱を断たれた開発チームは一瞬にして暗闇に放り込まれた。まさに「悪夢のような出来事」であった。

7月20日になって、日本IBMはようやく協力各社を集め緊急説明会を開いた。日本IBM側の説明によれば、「GemStoneとの交渉決裂は企業日本IBM)の根幹に関わる問題による」という。詳しい理由として、契約書の条項に**「システムユーザー等が何らかの理由でGemStone社を訴えた場合、メイン・コントラクタである日本IBMが全ての法的対応を負わねばならない」といった内容が盛り込まれており、日本IBMはこの重い責任リスクを受け入れられなかったのだという。さらに料金面でも折り合わず、3カ月間におよぶコンサルタント8名の派遣ソフトライセンス料などに数億円近い費用**を要求されたことも判明した。法的リスクコスト高騰――企業として譲れぬ一線を越える契約条件に、日本IBMは最終的に「ノー」を突きつけた形だ。だが、それは即ちプロジェクト生命線を断つことを意味していた。

この報に接した開発現場は騒然となった。GemStoneを中核に据えて進めてきたアーキテクチャ設計を一から練り直す必要が生じたためである。ある協力会社関係者は「この時点でプロジェクトの失敗を覚悟した」とまで語っている。大黒柱を失ったチームには動揺と失望が広がった。折しも夏本番を迎え、福岡の空は照りつける日差しに覆われていたが、プロジェクトには再び厚い雲が垂れ込め始めた。

1997年8~9月代替案への賭けと懸命の設計変更

GemStone脱落という非常事態に対し、日本IBMと九大病院必死リカバリーを図る。1997年8月上旬、急遽代替のODB製品としてフランスA.D.B社の「Matisse」を採用する決断が下された。Matisseは国内では知名度の低いODBだが、日本でも過去Smalltalkアプリケーションデータベース採用された実績があり、「何とか使えるめどは立つ」と判断されたのである

しか代替とはいえGemStoneとMatisseでは機能に大きな違いがあった。GemStoneで可能だったサーバ側でのSmalltalk処理実行がMatisseではできず、セキュリティ機能も貧弱だったため、開発チームは不足分を自前で作り込む必要に迫られた。この結果、システム全体の設計クライアント中心処理へ大幅に変更せざるを得なくなり、再び設計の手戻り作業が発生した。炎天下での再出発であるエンジニアたちは寝食を忘れ、懸命にコードを書き直した。

その甲斐あってか、1997年9月末の時点で第1次開発の主要部分を年内に実現できる見通しが立ったという。一度は暗転したプロジェクトにも、わずかながら光明が見えた。病院側も「何としても年内稼働を」という思いで支援を続ける。だが、このとき水面下では別の動きが進んでいたことを、現場の多くは知らなかった。

1997年10月:小さな後退、大きな決断

1997年10月9日、事態は最終局面を迎えた。この日開かれた会議で、日本IBMSmalltalkによる開発断念と、マイクロソフト社のVisual BasicVB)への全面的方針転換を突如宣言したのである晴天の霹靂とも言えるこの決断に、現場は凍りついた。幾多の苦難を乗り越えようやく目指してきた最先端技術での構築を諦め、当時広く普及していたVBという「オブジェクト指向ではない」開発ツールで作り直すというのだ。九大病院が当初求めた**「純粋オブジェクト指向」**という条件にVB合致するかは議論の分かれるところだが​

tumblr.com

病院ももはや背に腹は代えられない。最優先すべきはシステム稼働そのもの――この苦渋の転換を受け入れる以外になかった。

実はこの決断に至る伏線存在した。日本IBM1997年4月からかにVB採用可能性を九大病院に打診しており、さら8月からは段階的にSmalltalk担当エンジニア現場から引き上げ始めていたという。ある協力会社メンバーは「裏ではVBによる開発をすでに進めていたようだ」と振り返っている。つまりGemStone交渉決裂後、表向きはMatisseによる巻き返しを図る一方で、日本IBM本体は別動隊でVBシステムの構築に乗り出していた可能性が高い。振り返れば、日本IBMにはSmalltalk固執しない理由もあった。同社は翌98年2月長野冬季オリンピック向けシステムSmalltalkで構築しようとして失敗し、結局VBで作り直したという“前歴”もあったと伝えられる。アトランタ五輪1996年)では自社Smalltalkツール(VisualAge)を投入したものの、国内の大型案件では苦戦が続いた経緯があった*4。豊富人材がいるVBなら「最後人海戦術で何とかできる」という計算も働いたようだ。GemStoneとの契約不成立も、IBMにとっては結果的Smalltalkを断念する良い口実になったのではないか――協力会社メンバーの一人はそんな憶測さえ口にする。

方針転換の発表とほぼ同時に、Smalltalkで開発を担っていた協力会社の大部分はプロジェクトから撤退することになった​

tumblr.com

10月中旬には、多くの外部技術者が病院を後にしている。自ら招いた転換とはいえ日本IBMにとっても苦渋の決断であった。投入したリソース費用は莫大で、一からVBで開発し直すのは会社としても大きな後退だ。しかし背に腹は代えられない状況まで追い詰められていたことも事実であろう。IBM現場責任者は病院側に深々と頭を下げ、「必ずや残された方法で間に合わせます」と約束したという。九大病院担当者も沈痛な面持ちで頷き、「形はどうあれ、患者さんに影響を及ぼす前にシステムを動かしてほしい」と絞り出すように告げた。

以降、日本IBMは自社内のVB技術者や、自社が持つ病院向けオーダリングシステムパッケージ製品*5などを総動員してシステム構築を続行した​

tumblr.com

データベースも、当初IBM提案していながら見送っていた自社のリレーショナルDBDB2」を採用する公算が高まった​

tumblr.com

目標は「年度内(1998年3月まで)の第1次稼働」​

tumblr.com

。もはやオブジェクト指向の夢を追う余裕はない。現実的かつ確実に動く仕組みを、一刻も早く届ける――プロジェクトはその一点に向け再編成された。かつて200名近くいた開発陣は大幅に縮小され、構成メンバーも一変する。病院看護師スケジュール管理など一部のサブシステムは、撤退しなかった協力会社が細々とSmalltalk開発を続けていたが、その姿はもはや主流から外れた存在となっていった​

tumblr.com

。ある古参の協力技術者は去り際に「全力を出して戦う前に、白旗を上げてしまったという感じがする」と寂しげに語ったという。こうして九大病院プロジェクトの第1フェーズ――オブジェクト指向技術による野心的挑戦のフェーズは幕を下ろしたのであった。

1997年末:現場への波紋と社会的注目

VBへの方針転換後、九大病院現場には複雑な空気が流れていた。病院スタッフにとってシステム刷新は長らく待ち望んだ悲願だったが、その中身は当初聞いていた「最新技術結晶から一転して、従来型の技術で作られるものになってしまった。「結局、夢物語に終わったのか」という落胆の声も一部にはあった。しかし同時に、「多少古くてもいい、とにかく業務改善する仕組みを早く動かしてほしい」という切実な声も強まっていた。目指すゴールは変われど、一日でも早く新システムを稼働させ、慢性的業務負荷を軽減することが現場の切実な願いとなったのだ。プロジェクトチームは日夜作業を続け、簡易な操作研修なども始めながら、年明けまでの稼働に向け突き進んだ。

そんな中、1997年11月3日付の西日本新聞朝刊一面にこのプロジェクトに関する記事掲載される。タイトルは「九大病院システム未完 巨額費用批判」。内容は「九大病院システム未完成にもかかわらず日本IBMに月額4,250万円を支払い続けており、税金無駄遣いとの指摘が出ている」という衝撃的なものだった。同日、このニュース地元RKB毎日放送東京ではTBS)のテレビニュースでも報じられ、九大病院プロジェクト社会問題として一気に世間の注目を浴びることとなった。院内では「患者そっちのけで何をしているのか」といった批判も耳に入るようになり、大学本部所管官庁からの問い合わせも相次いだ。追い打ちをかけるように外部から視線が厳しくなる中、病院IBMはただひたすら開発を前に進めるしかなかった。

結末:プロジェクトの結末と残された教訓

1998年初頭、紆余曲折を経た九大病院の新システムは、当初の構想とは似ても似つかない形でようやく一部稼働に漕ぎつけた。日本IBMは多数のVBプログラマを投入して力技でシステムを完成させ、旧来システムの置き換えを順次進めていった。最終的に納入されたのはSmalltalkでもオブジェクト指向DBでもなく、Visual BasicリレーショナルDBによるシステムだった。かくして九大病院の「純粋オブジェクト指向システム」への挑戦は事実上の敗北に終わった。現場医師職員は、当初期待された華々しい先端技術恩恵を受けることはなかったが、ひとまず業務に支障のない情報システムが手に入ったことで安堵するより他なかった。プロジェクトは当初の理念を捨てて現実路線へ舵を切ることで、なんとか沈没だけは免れたと言えるだろう。

振り返れば、この失敗の背景には最新技術への挑戦ゆえの困難もあったが、それ以上に古典的とも言えるプロジェクト運営上のPermalink | 記事への反応(0) | 21:29

2024-11-26

就活メール消してたら1日終わる

有益なことは書いてない。ただ現状を記した。

まだなにも就活してない、就活関連のゴミメールを消してたら1日が終わるだけ。

【事前情報

工学部環境系の学科26卒

・ほぼFランに近い位置づけの大学

資格特になし

GPA3.7(勉強に熱心な学生が少ないので取れた)

・夏のインターン未参加

上京したい(横浜あたりでも良い)

・通院経験はないが精神の具合が悪い

・働く意欲はわりとある

アルバイトスーパーレジ打ちと中学生対象塾講師

まだ詰んでるとは思ってないけれど、結構全部しんどい。完全に詰む前にどうにかしたい。

面接対策とかSPI、やったほうが良いことはたくさんあるんだろうけど、どれも手付かず。具体的になにから始めるべきか分からない。

わがまましかないけどインターンには参加したくないし。働く意欲は結構あるのに、全部怖くてなにも就活してない。してる人はセミナーとかインターンとか参加してるっぽい。

薄々、気づいてはいたけどこんな大学じゃ高いGPA取っても就活にほぼ意味ないっぽい。学内推薦もあるにはあるが、弊学の立地的に東京企業の推薦はまずないと思われる。実際のところ、給付型の奨学金欲しさに成績を取るのをいろいろ頑張っただけで、これと言って自信のある学問分野もべつにない。

漠然システム開発SIer的なやつ、たぶん)に興味があるけれど、プログラミング経験特になし。授業でPythonVisual Basicに触れたことがある程度。システム開発に興味を持ったのも、単純に東京ならそういう会社が多いだろうと目を付けただけ。

あー、就活終わんねぇかな、なんにもしてないけど。

はてな匿名ダイアリーはじめて書いたから、いろいろおかしいとことあったらごめん。

2023-09-08

anond:20230908132802

最近の若者が触れる言語だと使いようがないし言語構造として持っていないものも多いからね

これ該当するのって古い時代BASICだけなんだよね

Visual Basicの時点でそんな書き方する方が難しいし

Cでさえかなり無理しないと書けない

2023-01-12

Pythonって何を作れるの?

プログラミングイメージが、学生時代にやっていたCやVisual Basicでのゲームプログラミングで止まっているので、Pythonで作れるものイメージが湧かない。

プログラミングといえば、キーボード操作キャラクター画像を動かしたり、効果音を流したりできるexeファイルを吐き出すイメージなのだが、Pythonはどうもそうじゃないらしい。

まじでなんなんだPythonって。

2022-09-21

タクティクスオウガと俺の半生

11月リメイク版が発売されるので思い出話を書いてみたい。

から25年前の1997年ののこと。当時小学生だった自分の1歳年上の従兄が、夏休みにお婆ちゃんの家にこのゲームを持ってきていたのが全ての始まりだった。

タクティクスオウガっていうゲームがあるんだ。すげーから一緒にやろうぜ。」

従兄に勧められるままゲームを始めたのだが、タクティクスオウガが『すげー』ことはすぐに分かった。

中世ヨーロッパ風の権謀術数渦巻く世界観重厚BGMの中で敵味方がターン関係なく立体的なマップで繰り広げるリアル戦闘

背中に翼の生えたキャラクターが民家の屋根の上に移動して弓を射ると放物線上に矢が飛んでいくわ、ふわふわと宙に浮かぶ幽霊魔法を唱え敵が炎に包まれると足元の草が焼けるわと細部までこだわったビジュアル

とにかく衝撃的なゲームだった。いてもたってもいられなくなり、従兄がお婆ちゃんの家から帰った直後にお小遣いを握りしめて町のゲーム屋さんに走った。

お店のレジ商品を買うときにすごくドキドキしたのを今でも覚えている。スーパーファミコン版のタクティクスオウガ商品パッケージ英語タイトルが書かれており、フォント英語旧字体みたいな形だったので、読み方があっているかな、間違って別のソフト買っちゃうんじゃないかなとすごく緊張したのだ。ぜんぜん自信が無かったが、店員さんにタイトル合ってるか確認して無事に買うことができた。

クワクしながら商品を持ち帰り、ゲームを始めたが小学生にとっては、難易度が高く難しいゲームだった。初回プレイ時にはキャラクターの強さを表すパラメータが多すぎてさっぱり分からなかった。

だけど作りこまれチュートリアルオンラインヘルプ等の親切な機能がたくさんついていたおかげで何とかゲームを進めることができた。一番助かったのは戦闘中の中断セーブ機能だ。小学生の時には、1日ゲームは30分までというルールがあったので非常に助かった。

さて、ゲームを買ってから2週間くらいの時のこと。難しいながらも俺はどうにかChapter1の終わりまでシナリオを進めていた。このゲームプレーヤーが会話中の選択肢を選ぶことでシナリオ分岐するんだけど、途中で出てきた選択肢が衝撃的だったのは今でも忘れられない。ネタバレになるので詳細は伏せるが小学生には重たすぎる内容だった。無茶苦茶悩ましい選択だったが、片方を選んでゲームを先に進めてみた。だが、すぐにゲームに行き詰った。キャラクター育成をよくわからずに進めていたので自軍ユニットが弱く戦闘で勝てなくなったのだ。このまま先に進めないのも悔しかったので攻略本を買うことにした。

ここで話は少々脱線するのだが、俺の生まれ育ったのは日本海側の田舎町だ。町の本屋さんはあまり大きくない。なので、地元本屋さんの攻略本コーナーにはメジャー作品のものしか置いてないわけだ。ゼルダの伝説とか、ドラクエとかFFとかまあそれくらい。それらに比べるとタクティクスオウガマイナーだった。苦労を重ねて隣町の古本屋さんで偶然攻略本を見つけて手に入れるまで1か月かかった。その後は攻略本を熟読してゲームシステムの理解を深めて1から再挑戦したのだが、家の方針で1日のゲーム時間が30分に制限されていたので、クリアするまでにはさらに2ヶ月ほどの時間を要した。だけどその分クリアしたときの達成感は大きかった。興奮冷めやらぬ俺は、小学校同級生たちにタクティクスオウガのすごさを布教したが上手くいかなかった。俺がタクティクスオウガ出会った1997年当時、家庭用ゲーム機の主役はスーパーファミコンからプレイステーションに移行しつつあり、同級生たちはファイナルファンタジー7ファイナルファンタジータクティクスといったスクウェアの大作ゲームに夢中になっていたのだ。

同級生のN君に、「タクティクスオウガってファイナルファンタジータクティクスパクリでしょ?」と言われたのは傷ついたなあ。なんていうか、自分イケてると思ったゲームをディスられるという経験がなかったので。残念ながら、うちの地元では最初タクティクスオウガを紹介してくれた従兄以外に周りでタクティクスオウガファンを見つけることができなかった。

それから2年後の1999年。俺は中学生になり、田舎町の我が家でもインターネットが使えるようになった。ネットが使えるようになってすぐに、以前はまっていたゲームタクティクスオウガ攻略情報を調べてみた。地元田舎町にはいなかったタクティクスオウガファンは、ネットの向こうにはたくさんいるようだった。ファンの集めた情報は膨大で、攻略情報にとどまらゲーム舞台背景の考察クリエイター音楽趣味までカバーしていて、中学生の俺の知的好奇心ガンガン刺激された。ディレクター松野氏の名前もこの時に知った。余談だが、「タクティクスオウガファイナルファンタジータクティクスは主要な開発スタッフが同じ」というのも同時期に知ったので、小学生の時にパクリ呼ばわりしてきたN君に対して「両方同じ人が作ってんだよ、適当言うなざまあ」という気持ちが芽生えたのはここだけの話である

ネット情報から刺激を受けた俺はゲーム世界観もっと味わいたくなって、前作の「伝説のオウガバトル」もプレイしてみた。ディレクター松野氏が好んでいたらしいQueen楽曲を聞いてみたくなり、生まれてはじめて洋楽CDを買いにも行った。コーヒーを飲めるようになった時のように、背伸びして少し大人になった気分がした。

そのうち自分でも似たゲームを作りたくなって、おこづかいVisual Basicを購入したりもした。プログラミング入門書片手にそれらしい画面までは作ったが、しょせんは中学生。体系だったプログラミング言語の知識がないためサンプルコードコピペに終始し、1年くらいかかって紙芝居のようなものが出来て終わった。その後は、高校入試大学入試で忙しくなったのでしばらくゲームから遠ざかっていた。

そこからさらに時が流れて俺は社会人になった。中学生の時のゲーム作りの経験からソフトウェアエンジニアの適性は無いなと思ったのでハード系のエンジニアとして就職した。タクティクスオウガから受けた影響は俺の人生を変えたのであるゲームから遠ざかっていた俺だが、2010年タクティクスオウガの1度目のリメイクニュースを聞いて再び情報を集めだした。そこでたまたま開発者松野氏のプロフィールを見つけたのだが、なかなかの衝撃だった。

まずはスーパーファミコン版のタクティクスオウガ開発時の年齢。発売日の時点で29歳なのであるゲームの開発期間が2年くらいだとすると、開発開始時は27歳くらいだろうか。その若さであの革新的ゲームの開発指揮を執ってたのかよ!松野氏と面識のあるゲームクリエイターインタビュー記事天才という理由が分かった気がする。次に出身地新潟県妙高市となっている。地方出身であのゲーム重厚シナリオを描くだけの知識を身に着けたのか!というのがもう一つの驚きだ。

先に俺の出身地日本海側の田舎町だと書いた。地方で育ったからわかるのだが、地方ゲーム攻略本に限らずあらゆる情報が都会に比べて乏しい世界だ。タクティクスオウガ世界観形成している中世ヨーロッパ歴史文学知識松野氏はどこで得たのだろう?世代的にインターネットが無い時代なので、俺が田舎で育った時よりもさら情報は手に入れにくいはずである。これは今でも気になっているので、今度出る予定のリメイク版の開発者インタビューでだれか聞いてみてほしいところである

最後になったが、今回出る2回目のリメイク版もすごく楽しみにしている。なんていうか2回もリメイクが出るだけでもすごいのに、2回ともオリジナルの開発メンバーがかかわっているのがまた驚きなのだ

発売元スクウェア・エニックスはFFドラクエ等の過去作品をよくリメイクしているけど、オリジナルスタッフが何度もかかわるケースは珍しくないだろうか?しか開発者松野氏はリメイク前にスクウェアを退社しているのだ。それでも声がかかるのだから、本人のカリスマ性がメチャクチャ高いのだろう。過去会社を辞めた人が2回も開発現場に呼ばれるって相当なことだと思うんよね。

2022-05-23

昔、昔、Visual Basicっていう誰でも簡単Windowsアプリが作れる言語がありましたとさ

2021-03-30

anond:20210330180900

ヴィジュアルって付くイメージはVisual C++とかじゃないのか?

あ、ちがうわVisual Basicだ、こっちだな

2020-06-14

VBAからプログラミングを始めた人は、一生VBAやっててくれ

VBAVisual BASIC for Applicationからプログラミングを始めて、「プログラミングとはこういうもの」という感覚を身につけてしまった人は、絶対に他のプログラミング言語の世界に入ってきてはならない。

一度VBAに慣れてしまうと、プログラマとしての正常なセンスを身につけることがほぼ不可能になるからだ。

これは、ヒトラーポルポト金日成などを良しとして政治に入門した人が、ふつう政治感覚を身に付けるよりも大変なことだ。

VBAプログラミングに入門した人は、これからVBAだけをやること。間違ってもプログラマになろうなどとは思わないこと。そして、プログラミングを知らない人にVBAを推薦したりしないこと。

以上。

2020-05-17

日本全国のユウダイを許さない会

エンジニア仲間どうしで年に何回か情報交換を兼ねて飲み会を開催していたのだが、今年はコロナウイルスのせいでZoom呑みに変更した。結果的に、これ以上この会意味あるんだろうかと思うようになってきたので吐き出しておく。

最初のうちは感染の拡大や緊急事態宣言による仕事への影響や、リモートワークの生産性の話をしたり、最近上中里にも店舗ができたらしいオメガラーメン食レポめいた話題が出たりした(参加者にはラーメン好きが多い)。

雲行きが怪しくなってきたのは、いちばん年上の方のムラタさんが会話を独占し始めてからだ。Visual Basic一筋でもう20年以上やっているフリーランスで、いろいろな知識シェアしてくれて悪い人ではないのだが、もともと朴訥というか突っかかるような話し方をする人で、酔っぱらうとそれに拍車がかかる。最近やっと住宅ローンを組んで町屋マンションを買ったのだが、コロナのせいで案件が細ってきて、返済がやばいという話をして場を暗くしていた。

そこまではまだいいとしよう。問題は、ユウダイ絶対に許すなとムラタさんが強硬に主張し出してからだった。

ムラタさんによれば、ユウダイという名前の響きがまずよくない。ユウダイキラキラネームに属するべきもので、一般に広く普及するべきではない。それなのに、平成の頃にユウダイと名付けられた男児が大きくなって社会メインストリームに大量に出てくるようになって、テレビなどでもごく普通にユウダイを見かけるようになった。これは非常によくない、ジェネリック名前なら太郎とか一郎にしておくべきであって、ユウダイは許されない、現状はコロナウイルスよりも危機的状況である。もとはといえば、ユウダイなどという響きの名前がかっこよいと思って名付ける、ゆるゆるの平成ママが悪いのだが(名付けるのは母親だけとは限らないと思うのだが、ムラタさんの頭の中ではユウダイ母親が名付けているらしい)、もはやどうしようもない。残された道は「日本全国のユウダイを許さない会」を結成し、ユウダイ社会侵食を防ぎ、いずれ根絶することである

画面の向こうではムラタさんの目が据わってきて、ボサボサの髪を振り乱し、他の参加者に向かって、お前らも「日本全国のユウダイを許さない会」に加入しろ、おのれっユウダイ、許さんと叫んでいた(リアルでおのれとかいう人をはじめて見た)。若干コミュ障気味のムラタさんは最近祐大か雄大という名前の人事担当者に干されたのかもしれないが、ユウダイに対する深い怨恨の原因は結局不明である。この状況がしだいにだるくなってきたので、iPadの充電が切れそうだから寝ると言ってWindowsシャットダウンしてから歯を磨いた。

2020-03-20

難しいプログラム言語って何

下記の言語仕事&趣味で触ったことがある。

cobol

python

c#

java

shell script

visual basic

vba

java script

sql

初めてのシステム開発java使用したときは難しいと思った。

でも1度感覚を掴んでしまえばどの言語Google検索すればやりたいことを知ることができるため、社会人5年目でやっとプログラムって簡単だなと思うようになった。

プログラムが好きだから色んな言語に挑戦してみたい。

経験のない言語で難しそうなc++を触ってみるべきなんだろうか。

あとよく分かんないけど組み込み系も難しいんだろうか。

2020-03-01

MtGプログラミング言語の色

このプログラミング言語MtGだと多分この色の組み合わせだろう。

みたいなのをまとめたら次のようになった(TIOBEのランキングトップ50)。

後半は知らない言語もあって怪しいが、おおよそこのようになると思われる。

※改めて見てみると何箇所か違和感があったので最初の版からちょっとだけ修正した。

順位プログラミング言語色の組み合わせ 内訳
1 Java アブザン 白黒緑
2 C ゴルガリ 黒緑
3 Pythonティムール緑青
4 C++ ジャンド 黒赤緑
5 C#バント 緑白青
6 Visual Basic .NETレズニア 緑白
7 JavaScript ボロス 赤白
8 PHPグルール 赤緑
9 SQL 無色
10Swift 4C(緑欠色) 白青黒赤
11Go ゴルガリ 黒緑
12Assembly language 黒単
13 R ゼット 青赤
14 D グリクシス 青黒赤
15 Ruby 赤単
16 MATLABゼット 青赤
17PL/SQL 無色
18 Delphi/Object Pascal アゾリウス 白青
19 Perlラクドス 黒赤
20Objective-C エスパー 白青黒
21 SAS アゾリウス 白青
22 Visual Basic 緑単
23Dart ジェスカイ 青赤白
24Scratch 白単
25 Scala 5C 白青黒赤緑
26 Groovy ナヤ 赤緑白
27 Transact-SQL 無色
28F# アゾリウス 白青
29 Rust マルドゥ 赤白黒
30 COBOL オルゾフ 白黒
31ABAP アゾリウス 白青
32 Lispシミック緑青
33Kotlin 4C(緑欠色) 白青黒赤
34 Logo 白単
35 RPG ディミーア 青黒
36 Lua 緑単
37 Fortran スゥルタイ緑青
38 PowerShell ジェスカイ 青赤白
39 Ada ディミーア 青黒
40 LabVIEW ディミーア 青黒
41 Erlang 緑単
42 Julia ゼット 青赤
43 ML 青単
44 Schemeシミック緑青
45 Haskellエスパー 白青黒
46 TypeScript ジェスカイ 青赤白
47 OpenEdge ABL アゾリウス 白青
48 LiveCode アゾリウス 白青
49 PostScript 無色
50 ActionScript ジェスカイ 青赤白

見返してみるとおおよそ次のルールに従って決めているような気がした。

緑の判定があやふやな気が若干しないでもない…

イメージ
レイヤ初心者向け
浮世離れベンダー
レイヤ、黒魔術
速い、先進
基盤、グル
無色 道具

2020-01-12

永遠に書きあがりそうもないやつ

何かの参考とかにしたらダメです。書き始めて半年つんだけどこっからどう直したらいいんだか(何をゴールにしたらいいのか)わからない。。

追記:合流性とか強正規化可能性とか停止性とか、全部チューリング不完全で、事前の静的解析で使うメモリの最大量が確定できる、とかそういう風に読み替えられる人を増やしたいのです、数式の添え字とΣと∫にびびらない人を増やしたいようなもの

理論理学の一分野である証明から成長した、数理論理学理論計算機科学境界領域研究領域である型理論(type theory)は、大規模なプログラムの内的な整合性のチェックを行うための方法論を必要とする情報処理技術の分野で関心を集めている。

 そもそも「型」(type)とは何か。プログラミング言語一般的にはレコード関数といったプログラム構成する「値」(value)の定義をする道具である(*1)。その言語コンパイラ作成者はこれらレコード関数などの値、もしくは第一級の対象(first-class object)の種類を区別する型システム(type system)を必要とする。抽象代数学観点からすると、「型」とはこれらの値もしくは第一級の対象が属する高階の対象(higher order object)としての空間(space)ないし代数系(algebraic system)で、型システムはそれら「型」とそれら相互関係(relation)つまり型のなす順序構造(order structure)ないし束構造(lattice structrure)であるといえる。

 プログラム構成する値すべてに型が付くためには、曖昧でない(*2)こと、自己矛盾していないこと、悪循環を含まないこと、それぞれの値の内容をチェックするために無限時間を要しない(*3)ことなどが必要で、これらを満たすなら、プログラムは有限時間で実行を終え、停止する。手続き型言語では無限ループ、型無しラムダ計算では無限再帰によって型付け不能プログラムを書くことができるが、型理論はこれらのチューリング完全な計算機意図しない停止しないプログラムから守る装甲でもあり、再帰メモリ確保で好き勝手をさせないための拘束具でもある。型が付くプログラムには単に停止するというだけでなく、可能な実行経路(訂正:経路→方法)のすべてで同じ結果を出すなど種々の良い性質がある。

1)この定義現実に使われているプログラミング言語の特徴を覆い切れていない、狭い不満足な定義だが本稿では都合上この定義立脚して限定的議論する。例えば変数(variable)というものを持つプログラミング言語もあり広く使われているが、これについてはレコード関数と同じように性質の良いものとして扱うことが難しい。難しさの原因は次の注の内容と関連する。近年は変数を扱うかわりに値の不変のコピー(immutable copy)やその参照に名前を付ける機能を持つプログラミング言語が増えている。

2) 現実情報システムでは、COBOL言語レコード定義C言語の共用体、一般的関数ポインタVisual Basic言語のvariant型変数のように、同一領域に異なる型の値が共存する共用型(union type)の値がしばしば必要となる。共用型の値はgoto文を排除した構造化/オブジェクト指向プログラミングにおいて条件キャストクラス分岐などによる実行経路の複雑さの主要な原因になるが、これは和型(sum type)すなわち相異なる型の非交和(disjoint sum)として定義することで曖昧さな定義できる。

3) ゲームプログラムネットワークサービスにおいてしばしばみられるように、入力として無限リスト任意に深い木のようなものを想定する場合には明らかに(条件を満たさない限り)停止しないことが正しい動作となり、この場合は最外周のループを(←どうする?)メモリリークを起こさないなど別の考慮必要となる。

2019-08-19

anond:20190819111351

わからんなら仕方が無い。

一般的に「マクロ」と呼ばれる仕事で使うツール

Visual Basic for Applications (VBA)で作成したマクロ

の事を指すときが多いので、それじゃないか?と思う。実行して、Office(ExcelとかAccessとかWordとか…)の結果になるヤツね。

もう暫くで直るらしいが、それまでは該当修正パッチ削除で乗り切れ。

2019-04-06

anond:20190405084225

Python拡張性がありすぎるからなあ。

外部ライブラリが果てしなくあり、


 ← それはPythonに限ったことじゃないでしょ。JavaでもRubyでもPerlでもCでも同様。主要言語はほぼそうでしょ。

似たような機能を実現する方法複数ある


 それはむしろ逆。Pythonスローガンは There's Only One Way To Do It で、これは Perlスローガン There's more than one way to do it. を意識したもの

https://wiki.python.org/moin/TOOWTDI



なお、個人的には C# は良さそうだなとは思うけど、Windows以外のプラットホームではどうなんでしょう。(よく知らない。) これは Visual Basic についても同様。

2019-04-05

anond:20190404130259

Python拡張性がありすぎるからなあ。

外部ライブラリが果てしなくあり、似たような機能を実現する方法複数あるので、本によって書いてあることが違ったりする。

逆説的ではあるが、初心者は、Visual BasicやC#あたりから入るのがいいような気がしてきた。

逆引きハンドブックのような本を片手に、チュートリアル本を手打ちコードを動かしながら読了すると、Visual BasicやC#の世界は一通り把握できる。わからないことは索引を見ればだいたい出ている。Visual BasicやC#があんまり尊敬されてなくて、限界や不満もあることもだんだん理解できる。

Visual BasicやC#でも相当なことができるし、そこからスマート言語に移行すれば、比較対象となるものがあるので、守備範囲自分のペースで広げていける。

2018-10-21

anond:20180624224045

その発言した増田ではないが、その発言は少し無責任な気がするので補足。

まずRはやめるべき。

R言語という統計などの計算に強いプログラミング言語がある。

逆に統計くらいでしか使わないので、貴方算術処理をバリバリやるのでなければ使用するべきではないだろう。

Python言語だが、Rに比べると汎用的であり、かつ機械学習(scikit-learn、NumPyやPandas等の統計ライブラリ主体だけど)などでも使われていてホット言語である

ホット言語だと、書籍ネット情報豊富にあるので、学ぶ分には困らないのでもしプログラミング言語をやりたいのであればPythonお勧めする。

そして、Excelマクロも一応Visual Basic for ApplicationというVBを下敷きにした言語なので、その言語を今から学ぶのであればPythonを学べばいいのではないかというのが先の発言趣旨ではないかと推察する。

しかしながら、言うまでもなく、Excelセルに書かれたデータをあれこれしたい(主に業務活用したい)という要件ならVBAが最適である

プログラム言語って得意/不得意があるから、やりたいことに合わせて使う言語を変えたほうが幸せになれます。(本格的なプロジェクトだと選択余地はなかったりするけど)

なお、おうちで触りたいというレベルなら私もPythonお勧めします。

MacでもWindowsでも同じ書き方で、Excelに囚われず色々な処理ができる。AIIoTなどで需要が高まっているので覚えておいて損はないし。

「これだけ凄いから導入許可をください」と情シスに掛け合えるレベルまで成長したら会社でも使えばいい。

ただ、対象者ちょっとしたプログラミング言語を覚えて、手間がかかることを自動処理とかしてみたいなぁと考えられる人。Excel効率よく使えれば十分って考えの人にまでお勧めするものではないので、その辺は誤解がないように。

2016-06-17

1.0から学ぶJava

タイトルを見て釣られクマーな皆さんこんにちは

ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。

今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。

「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。

タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー

面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。

Java 1.0 1996年1月23日

Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。

かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU が Pentium 133MHz メモリ16M とかそんな感じだったかなあ。今どきの携帯電話の例としてiPhone 6sを挙げるとCPUが1.85GHz メモリ 2G ってんだから凄いですね。OSは1995年11月23日リリースされたWindows95とかそんな時代背景です。インターネットがようやく一般に普及し始めたところでしょうか。

今から思うと相当弱いハードウェアですけども、そろそろVM方式を採用しても良さそうな、そんな時代でした。インタープリタだと流石に遅い、でもC言語のようなコンパイル言語だと"Write once, run anywhere"とはいかない、という判断もあったのだろうと思います。Javaが純粋なオブジェクト指向言語ではなくintなどのプリミティブ型を持つというのは、当時のマシンスペックを考えた場合、ある程度妥当な判断だったと言えるでしょう。これが後々苦しくなってくるわけなのですが。

Javaを作った会社はSun Microsystems(サン・マイクロシステムズ)というアメリカの会社で、2010年1月27日オラクルにより吸収合併され今はありません。SolarisというOSとSPARCプロセッサでUNIXサーバーの販売で90年代後半までは一人勝ちのような状況だったと聞きます。当時にすでに「ネットワークこそがコンピュータ」(The Network is the Computer)というモットーを掲げてたんだからおかしい。1996年リリースのJavaが標準でネットワーク機能を備えていたのもこのあたりの思想から来ているのかもしれませんね。

当時のプログラミング言語としてC++が挙げられますが、C++でのプログラマへの負担といいますか、ヒューマンエラーの起きやすさといいますか、その辺を改善する目的で開発されたのがJavaだったわけです。

1996年の時点にこんな言語が登場したのですから革新的でした。

いろんな企業がJavaに賛同します。その中にはMicrosoftもありました。この時期、Microsoftは次期のWindows開発用のプラットフォームにJavaを据えようと考えていました。その後、袂を分かつことになるのですが……。

プログラム言語として構文などを見ると、C++を強く意識した構文なのは間違いなく、しかしポインタ演算を廃してポインタを機能を限定した「参照」に置き換えるなど簡素化が多く見られます。C++からはいろんな機能が削られています。関数ポインタ、構造体、演算子オーバーロードテンプレート((テンプレートについては実装が間に合わなかったという話を聞きます))などなど。そのためC++の劣化であるように揶揄する人もいますが、こうしたものを捨てて言語仕様を比較的小さくシンプルに抑えた点は評価に値すると思います。しかし、今でもこうした削減された機能を愛する人からはJavaを腐す要素として挙げられてしまうのでした。

Java 1.1 1997年2月19日

Wikipediaからピックアップすると1.1での大きな機能追加は

といったところです。当初よりJavaの内部文字コードUnicodeで文字を表すchar型は16bitで設計されていました。Unicodeは当時それほど普及しておらず、Unicode対応のテキストエディタさえ少なかったと記憶しています。時代を先取りしていると言えますが、大きな誤算はUnicodeが当初16bitのコードポイントに世界のあらゆる文字を格納しようとしていたことで、漢字圏の我々からすると16bit=65,536程度の空間に文字が全部入るわけないだろ!というものだったが故に早々に破綻し、Unicodeは21bitのコードポイントに拡張されることになるのです。これはまた後の話。

なんにせよ、日本語が対応されたのは1.1からで、日本でのJavaの採用が始まったのはこの頃からと言えましょう。

当時のJavaのGUIはAWTというものでしたが、これを用いたGUIの開発は当時は結構行われていたイメージですね。Visual BASIC でGUIを作るプロダクトも結構あったと思います。GUIのためのオブジェクト指向言語としてJavaが使われていたイメージがありますね。JavaBeansもそのための仕様でした。件のsetter/getterの話題に繋がっていくのですが。

JDBCはJavaとデータベースをつなぐインターフェースです。RMIではあるJava VMから別のJava VMにオブジェクトを送って実行する、といったことができます。こうした機能が用意されたことで、ソフトウェアフロントとしてのGUI、裏方の実装のためのネットワーク機能、データベース機能、さらにはソフトウェアを配布するためのJava Appletという布陣でJavaでのソフトウェア開発が加速していた時代といえます。

Microsoft Visual J++ もこの時代ですよ。

Java 1.1以降のバージョンのものは互換性確認のためにOracle Java Archiveからダウンロードすることができ、今でも入手することができます。もちろん、Java7ですら2015年4月にEOL(End of Life,サポート終了)となっているので、通常利用するのはJava8としてください(本稿執筆時点)。

当時のドキュメントを見るのも一興です。現在と比べると標準APIがかなり小さい。なお、当時のjavadocは今とはデザインが大きく異なります。

  • java.applet
  • java.awt
  • java.awt.datatransfer
  • java.awt.event
  • java.awt.image
  • java.beans
  • java.io
  • java.lang
  • java.lang.reflect
  • java.math
  • java.net
  • java.rmi
  • java.rmi.dgc
  • java.rmi.registry
  • java.rmi.server
  • java.security
  • java.security.acl
  • java.security.interfaces
  • java.sql
  • java.text
  • java.util
  • java.util.zip

この時代であれば、全パッケージを舐めて標準APIを学ぶこともそう難しくはありませんでした。この時代から触っている人間は新バージョンが出るたびに増えるAPIを順に学んでいけたのです。しかし、現代にJavaを学ぶ場合、どのバージョンでは何があって……というのをいちいち学ぶ必要はほぼありません。Java5以前は一緒くたでいいと思いますし、一部のAPIで歴史的経緯があってねーというのを知っていればおそらく十分ではないでしょうか。

Java 1.2 1998年12月8日

strictfpキーワード浮動小数点演算をやる人は覚えておきましょう。JavaはパフォーマンスのためにCPUの浮動小数点演算を扱うことが許されており、そのため実行するCPUによって精度が異なることがあるんですね。まあ今時のCPUだと大丈夫だとは思うんですが。

リフレクション機能ではJavaのクラスを抽象的に扱うことができます。設定ファイルに書かれたクラス名のclassロードして実行する……みたいなことができるんですね。フレームワーク的なものを作る場合には多用することになります。

1.2からは新しいGUIのSwingが採用されました。AWTがOSごとのGUIパーツを用いていたためデザインに違いがあったのに対し、Swingでは統一的なルック・アンド・フィールが用いられるようになりました。まぁ今ならJavaFXを使うのが良いと思います。

初期のJavaはやはりVM方式の実行速度の遅さが指摘されていました。実行時の構文解析を伴わないだけインタープリタよりは早いものの、実行バイナリを作るC/C++よりは遅い、そうした評価です。ここではサン・マイクロシステムズのVMにJIT(ジャストインタイムコンパイラ)が乗ったことが挙げられていますが、JIT自体は別の会社が先駆けて開発していたことは記しておきたいと思います。

JITコンパイラは実行時にJavaのバイトコードを環境のネイティブコードコンパイルして動かす技術です。この後、JITコンパイラ、動的再コンパイル技術、世代別ガベージコレクションを備えたHotspotといった様にJavaVMは進化していきます。現代では実行時の最適化が進み、大きなスケールで見た場合、Javaの実行速度はC/C++での実装と比べてそれほど遅れるものではありません。遅くても倍の時間は掛からない程度といったところでしょうか。

あとは特記すべきはコレクションフレームワークです。皆が多用しているであろうjava.util.Listやjava.util.Mapといったライブラリが整備されたのがこの時なのです。それ以前はjava.util.Vectorやjava.util.Hachtableというクラスが可変長配列の機能を一手に担っていました。今ではVectorやHashtableは使うべきではありません。

Microsoft 離反

Java の開発はSun Microsystems が主導していたけども、すべてがSunのものだったというわけでもなく。Javaには多くの会社が出資していてその中のひとつMicrosoftだったわけですね。

Microsoft の Visual J++ では delegate とか独自機能拡張もありましたけど、裁判で問題になったのは J++ でコンパイルしたclassファイルMicrosoftのVMでしか動かないという部分ですね(他社製のVMで動くclassファイルを作ることもできる)。classファイルがどこのVMでも動くの大事だろ、"Write once, run anywhere"だろ、お前何してくれてんの!と喧嘩になったわけです。当時のMicrosoftブラウザまわりでも独自拡張がやりたい放題、標準規格?なにそれ美味しいの?みたいなスタンスをあちこちで見せていたものです。

結局、この事件でMicrosoftのJavaはバージョン1.1相当でストップ。好き勝手にやれないなら独自に言語作るわーとばかりに.NET フレームワークと C# といった方向に舵を取ります。

JavaがPC上でのUI開発の主力になろうとした勢いはここで潰えます。

Java EE

Java SE とは別にこの時代に Java EEリリースされていることは特記しておきたいですね。これ以後、それまでのCGIに取って代わって、JavaはWebサービスの開発のプラットフォームとして多用されるようになります。

2000年あたりからはJavaはGUI開発というよりは、Webサービスの開発が主流という流れになっていきます。インターネットサービスが非常に発達していった時代、背後ではとてつもない量のJavaのプログラムが支えていたわけです。ただまあ、こうした産業利用は一般的ユーザーの目にはあまり入らないわけです。一般人からすればJavaといえばJava Appletみたいなイメージはずっと残っていたでしょうが、実体としてはJavaといえばServletという時代になっていたわけです。

企業で用いられる社内システムにもServletは多く採用されました。

理由はいろいろ挙げれると思うのですが

というのが大きな理由だろうと思います。JSPというテンプレートエンジンを用いてHTMLを整形してWebページを作り出す、というアーキテクチャある意味では便利で簡単でした。

もっともHTMLの表現力に足を引きずられるため、GUIの機能性という点では後退したわけなのですが。それでもメリットが大きいと判断されたのでしょう。というか、まともにGUIを組めるプログラマがほとんどいないから、GUIのシステム開発がなかなか成功しないってのもあったんでしょうけどね。

iアプリ Javaアプリ EZアプリ

2000年あたりというと携帯電話の普及も取り上げなければなりません。現代のスマホガラケーに比べれば非常に機能は貧弱で、まさに携帯「電話」でした。要するに電話とメールぐらいしかできなかったんですね。

そこにdocomoiアプリJフォン(ボーダフォンを経て現ソフトバンク)のJavaアプリ、auのEZアプリという携帯電話上でちょっとしたアプリが動くよ!というのが乗るようになってきたんです。これがJavaを組込み用途にコンパクトにしたJava MEというものが土台となっていて(正確にはiアプリちょっと違う)Servletと並ぶJava言語の大きなもうひとつの領域となっていました。

iアプリは当初は容量が10k byteまでといった制約があり、容量制限が非常に厳しかったのですが、新機種が出るたびに容量は緩和されていきました。

docomoiアプリ含めiモードによって一世を風靡します。こうした土台を作ると、その上で商売をしたい人がたくさんやってきて、勝手にコンテンツを作ってくれる。docomoはそれらから手数料を取るので労せずして大金を稼げるというわけです。賭場の胴元というわけです。

この賭場が、将来にAppleiPhone, GoogleAndroidに荒らされることになります。docomoがなかなかiPhoneを出さなかったのもiモードという自前の賭場を失うことを良しとしなかったためです。金づるを失ったdocomoSamsungと組んで独自の携帯向けOSであるTizenの開発に乗り出します。そんなTizenですが鳴かず飛ばず。噂ではインドあたりではリリースされたとか、なんとか。

RIA時代

話を2001年に戻しましょう。

Microsoft離反でGUIのプラットフォームとしてのJavaというものは存在感を弱めていました。この分野の復権に寄与したのはJava 1.4 (2002年2月6日)で導入されたJava Web Startです。

Java Appletブラウザ埋め込みで動作したのに対し、Java Web Startではブラウザから起動しつつも独立したアプリとして起動するのです。

Webシステムが企業の社内システムに採用された話は先に述べたとおりですが、やはりWebシステムのGUIというのはHTMLに引きずられて貧弱だったんですね。

端的に言えば入力値が数字かどうか?みたいなチェックがなかなか難しい。HTML上でJavaScriptでやるわけなんですが、なかなか気持よく入力できるような感じにはならなかったんですね。

また、Ajaxによるブラウザのページ遷移を伴わない通信というのが出てきたのも2005年ぐらいなので、入力値に対してサーバ問い合わせするようなことはできなかった。当時だと一旦画面遷移させないとできなかったわけです。

こうした事情から、クライアントサイド、要するにPC側でもっとリッチなUIが使いたい!という要望があったわけです。Webシステム使いにくい!という不満の噴出と言ってもいい。そこで出てきたのがRIA (Rich Internet Applications)というわけです。

Javaは1.0時代のAppletからそうですが、ネットワークを介して別のPCにプログラムを送り込み、そこで動作させるという能力を持っていました。それこそまさにRIAに求められる機能性だったわけですね。

RIAの代表とされるのは

あたりです。三つ巴の戦い、どこに軍配が上がるのか!?と注目されましたが、勝利したのはHTML / JavaScriptでした。

Google MAP で注目を浴びたAjax技術、それまでブラウザでは不可能と思われていた高級なGUIをHTML / JavaScriptで実現させました。もうやめて欲しいですよね。せっかく脱ブラウザの流れが来たと思ったのにまたWebシステムに逆戻りですよ。

RIAが失速した理由として考慮して置かなければいけないのはスマートフォンの台頭です。RIAでは端末を選ばずどこでも同じアプリが動かせる点がポイントひとつでしたが、スマートフォンではそうは行かない。"Write once, run anywhere"を破壊したのはスマートフォンだったというわけです。

しかし、先日インストールなしでアプリを実行するAndroid Instant Appsが発表されたりしまして、結局RIAの思想といいますか、要求というのは今でも息づいているのだなと思った次第です。

Java 5 (2004年9月30日)

1.3 / 1.4 では機能追加はあっても言語構文が大きく変わることはありませんでした。大きく変わったのはJava 5です。この時からバージョニングが変わって1.5ではなく5と表記されるようになりました。

Java5の特徴はなんといってもジェネリクス。それまでjava.util.Listにデータを出し入れするのにはキャストが必須だったわけですが、ようやくキャストから開放され型の安全度がぐっと高まりました。その他に以下のような変更があります。

言語としては随分変わっったわけですが、もうかれこれ10年以上前のことですからこれらの機能が「Java5から導入された」という知識は今となってはあまり必要とされません。これらの機能が使えないJava 1.4で開発をする事案が殆ど無いからです。0ではないのが悲しいところではありますが。

その後

Java 6 (2006年12月11日)がリリースされた後、Java 7 (2011年7月28日) が出るまでJavaは停滞してしまいます。その間にSun Microsystemsという会社がなくなってしまったためです。

Sun Microsystems の経営状況が悪化しており、ついに身売りをすることになりました。身売り先はIBMともGoogleとも噂されましたが結局2010年1月27日オラクル吸収合併されました。

Javaの停滞中にはJava VM上で動く非Java言語も台頭してきました。Scalaなどですね。

やや戻って2007年Androidが発表されます。Androidの開発言語にはJavaが採用されていますが、実行環境はJava VMではなく、ライセンス的な事情でJava(TM)は名乗らない微妙な位置関係にあります。

Java 5 以降で大きく言語仕様に手が入るのは Java 8 (2014年3月18日)です。並列処理を行うためのStream APIと、そのために簡易に関数を定義するためのラムダ式が導入された点が大きいですね。日付APIも刷新されました。

このように、Javaは1.1の黄金時代から今に至るまで利用ジャンルを転戦しながら産業の土台となって支えてきた歴史があります。ジャンルの趨勢により浮き沈みもあります。今後についても決して楽観視はできないでしょう。Javaを学ぶことはプログラミングを学ぶステップとしては意義はあると思いますが、Javaを学べばゴールというわけではありません。プログラム言語次世代へと移りつつあります。業界動向には注視していきましょう。

2016-01-15

JAVA言語という表記違和感

好きに表記すればいいと思いつつも見ると内心もやもやしてしまう。

やっぱりJava表記してほしい。Java……かっこいいじゃん!

Javaだけだと馴染みのない人もいると思うので似たような例を挙げる。

× SKYPEアプリSkype

× PHOTOSHOPソフトPhotoshop

× YOUTUBEサービスYouTube

この「JAVA言語」という表記が抱えている問題は何か?

大まかには次の二点だと思っている。

大文字

COBOLLISP、ALGOL、FORTRANPL/IAPLBASIC……

大文字名前は古い言語代名詞だ。

今はFORTRANも新しいFORTRANFortranと名乗っているし、BASICBASIC派生Visual Basicなどと名乗っていたりする。

時代に逆行してJavaJAVA表記してしまうとJavaがあたかも古い言語であるかのような印象を与えることになる。

× JAVA1960年代言語ですか?
○ Java ← 今時の言語っぽい!

言語」という接尾辞

Javaはそれ単体でプログラミング言語Javaを指す。

言語」という接尾辞をつけてしまうと二重敬語のようなまわりくどい印象を与えることになる。

Cのようにググラビリティが低いため止むを得ずC言語表記するという場合もあるが、Javaならそういった問題は無い。

コンピュータ関係で他のJavaと衝突していないか?それは大丈夫だ。

https://ja.wikipedia.org/wiki/%e3%82%b8%e3%83%a3%e3%83%90

本題

今日金曜ロードショー天空の城ラピュタがあるらしい。

Scalaちゃんは今日も「余裕でした(´・_・`)ドヤッ」とツイートするんだろうか。

https://twitter.com/scalachan/status/363317870685462531

ログイン ユーザー登録
ようこそ ゲスト さん