「浮動小数点数」を含む日記 RSS

はてなキーワード: 浮動小数点数とは

2024-05-24

選挙方式を変えた時の変化が分からない

大学の授業で選挙投票のやり方について解説されてたけど

その時に投票する人が10票を自分の好みで分けて複数もしくは一人に投票するみたいなやり方と

1票のみを誰かに投票するやり方があった時に

候補者の1位が誰になるかは、どっちのやり方でも大抵は変わらないって解説された記憶がある

それが今でも納得いってない

でもプログラムとかで浮動小数点数演算整数演算に変えて高速化する事とかあるけど

そっちはプログラムの速度は変わっても結果はあんまり変わらない事は納得してしま

上の選挙の例だって数学的なモデルとして考えたらプログラムの例と大して変わりない筈…なんだよな…

2023-08-01

プログラマー言葉化学的に言い換えるなら

データ構造

結晶構造みたいなものリスト構造とか種類があるが、元素のように新規人類新規発見するのは困難になりつつある。

アルゴリズム

たとえば黒鉛炭素同位体であるダイヤモンドに変換できる可能性があるが、その変更プロセス多種多様であるコストエネルギー効率のためにベスト方法をチョイスされるように、計算量という律速段階のようなもの比較される。

ビットバイト

1mol が 6.0e23 個の原子と同じように、1バイトは8ビットであるバイトにするメリットは、英語圏だと 1バイトも有れば日常で使う文字コンプリートできるのだ。

理想気体実在気体】

計算機で使われる浮動小数点数は実は実数ではない。たとえば、0.4f - 0.3f は 0.1f でない。ただし、0.5f - 0.25f は 0.25f である

オブジェクト指向

アボガドロ分子論みたいなもの最初キモがられた。

ファンクショナルプログラミング

フッ素分子F2)を作ろうとした努力プログラミングでもやろうとしたもの

アスペクト指向

ポインターインターセプトするための道具。電気泳動するためのツール

オライリー

出版社シュプリンガーみたいな?

インフルエンサー

錬金術師(対価はカモの財布)

JAVA

ティーでなく、コーヒー

Ruby

Al2O3。

Perl

Pearl でない。

2023-04-19

anond:20230419185703

ある浮動小数点数が偶然一致した時や、間違えて参照してるアドレス特定の値が入った時に発動するタイプのやつは、なかなか再現しなくてキツい。あとランダム性を持って生成するデータが何かおかしい気がする、みたいなパターン

2021-07-18

anond:20210718182500

浮動小数点数定義IEEE 754 といった定義はあるよ。ただ、Wikipedia にもあるとおり、

その他の関数では、四則演算と同様の正確さを実現することは難しい場合がある。

とあって、現実世界乖離が生じる可能性は定義にもあるよ。

https://ja.wikipedia.org/wiki/IEEE_754

2021-04-02

anond:20210402000114

Excel浮動小数点数なので25桁の足し算には正しい答えが出せないぞ

2020-08-20

anond:20200820102355

金額計算浮動小数点数でやって、誤差を出して「あーこれはコンピュータバグで仕方ないんすよねー」が許されるSEに優しい世界が来てるんだったらいいな

2020-07-19

現行のゲーム機は何ビットなの?

……あたりまではわかるんだけど、DCPS2のあたりから性能のスゴさを表すのが

ポリゴン数、浮動小数点数メモリ容量とかになってきて、

かつての主役だった「このハードは○ビットからスゴイ」みたいなのは全然見なくなった

なんで?

2020-07-02

プログラミングスクールなんかに通わない方がいい理由

教材のレベルが低い

ほとんどのプログラミングスクールの何万円もする教材よりも、市販の数千円の参考書や、公式チュートリアル無料)の方がはるかに質が高いです。既にプログラミングができる人の参考書としてだけではなく、初学者入門書としても、後者の方が適切です。

率直に言って、これだけ良質な情報がどこにいても手に入る時代に、独学でプログラミング習得できない人は、もう諦めた方がいいと思いますプログラミングなんて別に生きる上で必要スキルじゃないのですから包丁持ったことすらない人が、何十万も払って料理習いたいと思うのかって話です。

講師レベルが低い

これが最大の理由です。

まず現実的に、ちゃんプログラミングができる人は、プログラミングスクール講師になんかなりません。少なくともこの日記を書いている時点では。

レベルが低いというのは、実務上の話をしているのではなく、本当に素人に毛が生えた程度ということです。彼らのほとんどには、コンピュータサイエンスに関する体系的な知識がありませんし、そもそも基礎的な言語仕様すら把握していません。

これは「文字列整数に変換する関数名前がToInt()だったかParseInt()だったか覚えていない」などということではありません。そんなものは調べればいいわけです。彼らはもっと基礎的なこと、たとえば「浮動小数点数には誤差がある」とか、そういうレベルのことを理解していないのです。

から彼らの「講義」は、間違いだらけであるか、言ってること自体は正しくても著しくピントがずれたものばかりです。昨日今日プログラミングを覚えたばかりの人と大して変わらない知識で、動くコード自己流に解釈しているだけなのですから、当然そうなります。喩えるなら、中学英語教師中学英語知識しかないようなものです。彼らはその範囲で「プログラミングを覚えるコツ」を編み出しています

2020-05-20

anond:20200520175957

浮動小数点数というのは富豪テスタロッサマンティッサで構成された数なので、何bitかはお前がどう回路を組んだかによる

2020-03-03

どんな名タイトル正規化浮動小数点数記述すると台無しになる

君の瞳は0.1*10^5ボルト

0.1986*10^4年のマリリン

0.7*10^1人の侍

2018-09-13

anond:20180913131526

小数点警察です。浮動するのは数ではなく点なので「浮動小数点数」が正しいです。

anond:20180913132734

倍精度実数かと思ったら、倍精度浮動小数点数正式みたいだった。

Double precision floating point number

なつかしーな。

anond:20180913132734

内部的には浮動小数点数なんだ、誤差があるんだ、って意識してないとバグになるとしたら、floatとかdoubleって型名のほうがいいと思わない?

anond:20180913131526

浮動小数点数特性(誤差とか)をプログラマ意識する必要があるので、プログラミング言語は型名としてfloatとつけていて、プログラマもそう呼ぶ

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を学べばゴールというわけではありません。プログラム言語次世代へと移りつつあります。業界動向には注視していきましょう。

2009-12-07

THE SIer

俺の住む世界はアイティーとやらに支えられているらしい。

アイティーに関われば、俺の住む世界をさらに素敵なものにしていけるに違いない。していきたい。

そう願って、何も知らなかった文系新卒の俺が金融系のシステム会社に入って、もう一年以上が経つのだ。

昔、お遊びでゲームを作ったことはあった。RPGツクールなんかが好きだった。

だから自分システム会社に向いていると思った。

実際、資格取得を勧められて始めた勉強は楽しかった。

浮動小数点数オートマトンSQLスタック、木、論理式。

パズルみたいで楽しかった。コンピュータの中身が理解できて、わくわくした。

楽々と基本情報技術者資格を手にし、半年後にはほとんど勉強もせずにソフ開も取得した。

研修課題では同期の誰よりも速く、短く効率のいいソースを仕上げた。

現場に出て、本番機に触った。

30年間親会社を支え続ける偉大なシステムの中身を、わくわくしながら覗いた。

そこには、俺の求めていた世界とはまったく違うものが広がっていた。

俺が産まれる前から、入れ替わり立ち替わり何人もの手によって継ぎ足されたロジック

何千行にもわたって、似たような処理が何回もひたすら繰り返される似たようなモジュール何十本。

1993年に行う臨時処理のロジックが、今もコメントもなしに埋め込まれている。

仕様がわからなくなれば、キャビネへと走って、黄ばんだ方眼紙鉛筆で書かれた仕様書を探し、

そして修正履歴のみが書かれているのを確認して肩を落とす。

上司は俺に仕事をくれた。

半年後に臨時で行われる業務に対応するため、いくつかのモジュールについて、処理可能なユーザーコードひとつ、条件に加える。

与えられた期間は2週間だった。ずいぶん長いなと思った。

何枚もの設計書を書いた。つまり、方眼紙状のExcelテンプレートに同じ文章をコピペした。

追っていったモジュールはどれも、ヒープもソートメモリ管理論理演算も出番がなかった。

あるのはただ、IF文とMOVE文とばかりだった。ソースの難易度は使われている命令の数とは関係ないことを学んだ。

テストデータを作るため、階層DBを何回も辿ってデータアウトプットさせるモジュールを書いた。資格試験で学んだSQLは、無用の知識だった。

協力会社への仕事割り振りやユーザー対応に毎日忙しそうだった上司が、夜遅くまでの残業続きでくまのできた目を皿のようにして設計書をレビューした。

2日後、承認が出た。フェーズ設計から開発に移った。

ロジックを丸々コピペしてソースを修正し、コンパイルし、実行した。

コンパイルエラーが出た。

2週間はあっという間だった。

俺のせいで、半年後以降は使われないロジックソースにまたひとつ増えた。

今回の対応については、Excel方眼紙レポートをまとめて共有ドライブに入れておいた。

だが共有ドライブ検索には時間がかかるし、Excelシートの中身となれば検索から漏れることも多い。

きっと誰にも読まれないだろう。

バイト文字が使えない関係上、原則、ソースにはコメントはあまり入れられない。

数年後の新人はきっと、俺の書いたモジュールを見て「このロジックは何だ」と首を捻るんだろう。

数年後の俺はきっと、今回のレポートを共有ドライブから探し回って新人パスを教えてから、

協力会社管理に追われる作業に戻って目の下にくまを作るのだろう。

俺がやりたかったシステム開発って、こんなものだったのか。

俺は部署の中で、俺の望む仕事を探し続けた。

先輩たちは忙しくて誰も興味を持ってないけど、自動化できる作業はいくらでもある。

よく使われるExcelシートを改造し、定例作業をクリックだけでできるようにした。

ExcelVBAとはいえ、書いていて心地よかった。引数が明確な関数変数スコープと全角文字があったからだ。

COBOLで打つプログラムより、控えめに見て100倍くらいの生産性を発揮できていたと思う。

先輩たちは喜んでくれたが、ただし俺の仕事を、あまり仕事とは見なさなかった。

それでもよかった。業務時間外は俺は相変わらずスクリプトを書いていた。とても楽しかった。

VBAから入って、WSHなんてものを知り、やがてJavaScriptを学び、ネットで資料を探し、はてなを知り、はてブWeb技術についての記事を読みふけった。

知れば知るほどに、どんどんCOBOLが、メインフレームが嫌いになっていく。

先輩は誇らしげに言う。システムはたいしたことをやっていない。業務知識こそが大事なのだ。

ユーザーより詳しく業務を理解し、適切に提案し、設計する能力

協力会社を率いて、わかりやすい文書で指示を行い、スケジュールを調整する能力

人を動かすぶん、責任も大きくやりがいもある。優秀な人材こそが我が社の強みだ。

そんな人材が育つよう、我が社は安定して働ける環境福利厚生を整えている。

ああ、そうだよ。先輩、あなたは正しい。

俺だってメインフレームの信頼性のすごさはわかってる。

密なユーザーとの関係から生まれるシステム子会社としての強みも認識してる。

それだけじゃない。社内環境も悪くない。給料もいいし休みも取れるし先輩は優しい。

ここは、いい会社だ。

けど駄目なんだ。

30年前のシステムを枯れた言語でツギハギする仕事じゃ、俺の心はやっぱり満たされない。

ユーザーの業務知識ばかり身につけたって、俺自身の人生には、いいことなんてない。

俺が求めていたのは、この仕事じゃないんだ。

社内の誰も、TumblrTwitterもやっていない。ライフハックなんて聞いたこともない。

Joostモバゲー2ちゃんねる社会に与える影響について誰も語れない。

休日ゴルフや酒に興じている。自宅にPCを持ってない人までいる。

おかしいことじゃない。普通の人たちだ。

それどころか彼らは、仕事プライベートを切り分けている、立派な人たちだ。

でも、やっぱり俺の生きていきたい世界は、ここじゃないんだ。

たぶん俺がいるのは極北なんだろう。

ここが、人月計算Excelスーツ世界というやつなんだろう。

俺は80文字×32行の緑文字を見つめながら、遠い夢を見続ける。

今はただ、ネット越しに見つめるRDBAPIxp正規表現アジャイルRailswikiがまぶしい。

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