「java」を含む日記 RSS

はてなキーワード: javaとは

2020-12-30

anond:20201230033810

優秀そうな人だったかサルベージしたで

■30半ばで年収900万円達成したんだけど、向上心が失われて行って辛い

当方都内在住30代半ばのITエンジニア

新卒時は大手SIer(プライムコントラクター)に就職、30手前でユーザ企業転職して今は上流・下流工程を知ってるITシステム発注者側の立場にいる。

新卒IT企業就職した時はまだ自分がこれからどうなっていくのか明解キャリアパスは描けていなかったが、

30歳に近づくにつれ、ユーザ側(発注側)に転職してITエンジニアを指揮する立場にならなきゃダメだと思い転職活動を頑張り、結果望み通りユーザ側の企業転職して現在に至る。

20代の時に考えていたこ

新卒当初はSIerの中でチームメンバー(システム設計実装テストをする人) → チームリーダー → PM → 統括PMのようなキャリアパスを描くのが王道だと思っていた。

だが、元請けとは言えどんなに非合理なシステムでも客に言われた通りに作らなきゃいけない下請け企業PMになったところで大して意味がないことに気づく。

自分裁量などほとんどなく、理不尽な客に怒られたりバカにされたりする頻度が増えるのに比べて給料は大して上がらない。

担当していたプロジェクトは超大企業サービス開発。なのだが、ユーザ側の担当者のレベルがびっくりするほど低い。発注担当者は中学生の作文みたいなクソRFP書いてよこしてくる。納期費用工数もめちゃくちゃ。しかもやりたいことが全く分からない。多分発注担当の上の奴がテキトーに言ったことをそのまんま真に受けて左から右に流してるだけなんだろうが、有名な大企業にもこんなおバカ社員が堂々と給料もらって平気で定年まで安泰なんだなと思ったら複雑な気持ちになっていた。

だけど、幸か不幸か、そのダメ担当のおかげで20代のうちにユーザ側へ転職しないと仕事レベルも上がらないしスキルも上がらないことに気づけた。30半ばになって思い返すと、本当に感謝しかない。

30でユーザ企業転職成功

まだ30半ばで成功とか失敗とか書くのは時期尚早だとは思うが、給料も大幅に増えてフルリモート・フルフレックス・コアタイム無しの環境を手にしている現状は控えめにいっても成功だと思わざるをえない。

年収も30半ばにして900万円を超えた。

今年は出勤日が年間で多分20日に満たないレベルだと思う。

ユーザ企業転職して思うのだが、ユーザ企業ではITスペシャリストというのは新卒ではほとんどいない。ゼロとは言わないがSIerレベルから見ても平均から下のレベルしかない。

なので業務改善する社内システムの開発や、売り上げに直結するWebサービスバックエンドフロントエンドの開発プロジェクト検討され始めると必ず声がかかり、システムアーキテクチャを選定する段階から意思決定で主導権を握れる。

こちらとしてもそういう役割を期待されて中途採用されたというのもあるし、何よりこういう会社新卒採用時にITスペシャリスト採用することもないので、社内の新卒の誰かと争って主導権をようやく握る、などのようなこともなく、自然企画設計実装運用まで全て意思決定に関われる。

まさかSIerから転職した身で、自分Typescript, React, Firebase, Java, C#, C++, SQL, Python, TensorFlowを駆使してゴリゴリ開発して企画を実現し、それがプレスリリースされて正式会社サービスとして世に出るようなことになるとは20代の頃は想像していなかった。

ここまでは20代の頃に目指していた理想の30代のキャリアパスのものだと自負していて大変満足している。

だが、30半ばにして20代の頃ギラギラとした向上心が次第に失われつつあるのを日々実感している。

30前半までは自分目標設定してそれを達成するのが楽しかったが、30半ば以降は金と評価が欲しくなってくる

30代前半までは日々成長し、技術選択肢勉強する度に着実に増え、サービス企画が持ち込まれるとそれを実現するためには~すればいい、などとパッと浮かんで日夜シミュレーションしてPoCして…というサイクルが楽しくしょうがなかった。

今でも楽しくはあるのだが、これまでとは違って「ただ楽しい」だけでは到底満足できなくなっている自分最近気づいた。

それは金(=評価である

これまでは金になろうがなるまいが、依頼された仕事自然と全力で取り組むことができた。報酬やりがい、のようなところは正直あった。

だが、30半ばを超えてくると物の価値だんだんとわかってくる。

仕事が忙しくなった時に皆さんはタスク順位付けをするだろう。

これまではその優先度は難易度で昇順ソートかけて上から順に消化していく方式をとっていた。

すぐできるものから片づけることで、仕事の見かけのスループットが上がる。客観的には仕事が早く進んでいるように見える。

だが、今では、そのタスクプロジェクトが将来金になるかならないかタスク優先順位検討するようになりつつある。

結果が魅力的でなければそもそも仕事のやる気すら湧き上がってこない。

年収900万円

これは30代半ば、理想キャリアを追い求めて突っ走ってきた人間向上心が奪われてしまうような大きな金額なんだろうか。

このへんで満足してあと20数年まったり定年まで過ごすべきなんだろうか。

20代の頃あれだけ将来のキャリアについて真面目に考えていたのに、30代になって40代理想キャリアパスが描けない。

うちの会社年功序列なので、年収40代になれば自動で1000万円を超える。

このへんで走るのをやめてジョギングに切り替えても、多分未来はそう暗くない。

なのに、アクセルが減速しかかっている自分を冷静に見つめると、何か、本当はもっとできるのに手を抜いている、みたいな罪悪感が湧き上がって止まらない。

はてなを読んでいると、自分と同じ30半ばくらいの年代の人が多くいるように感じる。

30半ばでようやく安定を手にしつつある自分と似たような境遇の人がいれば、

40代に向かってどのような準備をしているのか、さらに上を目指しているのかそれとも今のポジションでの安定を取るのか、それとも会社を辞めて起業を考えているか、など、

恐縮ではあるが共有してほしい。

30半ばでクズになりかかっている自分に、勝手ながら発破と刺激を与えてやってほしい。

よろしくお願いしたい。

2020-12-26

未だにバインパラメータ使ってないやついるんだね

Javaコードらしいけど

死んでしまレベル

Sql.append("SELECT id ");

Sql.append("FROM table ");

Sql.append("WHERE status = "+ p_sts );

2020-12-22

最初プログラミング言語は何がいいか

最初プログラミング言語として最もおすすめなのは、Bourne (Again) Shell。通称sh(bash)です。shUNIX標準的シェルであり、bashはその拡張です。現在、多くのLinuxディストリビューションでは、bashが標準のシェルです。以下、これらのシェルの上で動作するコマンド言語およびそれによって作られたプログラムを指して「シェルスクリプト」と呼ぶことにします。

シェルスクリプトを最初プログラミング言語おすすめする理由は、主にその実用性にありますほとんどのプログラミング学習者にとって、プログラミングで実現したいことは、「10000以下の素数を求める」などの教科書課題のようなものではなく、大量のファイルから情報検索するとか、インターネットから定期的にコンテンツを取得する、などの具体的なタスクのはずです。シェルスクリプトを使えば、後者のような実用的なプログラムを手軽に作成できます。一方、多くのプログラミング入門書には、制御構文などの細かい説明はあっても、後者のようなトピックはあまり載っていません。というのも、そのような機能は汎用的なプログラミング言語(C、JavaPythonRubyなど)のコアの機能ではないからです。それらの機能は通常、ライブラリによって提供されます。したがって、汎用的なプログラミング言語実用的なことをしようと思えば、外部モジュールの読み込みや、場合によってはパッケージ管理ツールを使ったライブラリインストール方法などを学ばなければいけません。これらは、初学者はいささかハードルが高いです(たとえば、Webフロントエンドツール群を初学者が独学でインストールするなどは、ほぼ不可能でしょう)。一方、シェルスクリプトでは、grepsedawkのようなシェル上のユーティリティは全て、他の言語における組み込み関数と同様です。つまりモジュールインポート初期化処理などを行わず使用することができます

また、シェルスクリプトは、より本格的な言語フレームワークステップアップする過程としても非常に適していますプログラミング入門書ではほとんど語られないことですが、プログラミングにおいては「プログラミング言語以外の技術」がプログラミング言語自体と同様に重要です。たとえば、ファイルディレクトリ操作するには、OSファイルシステムにアクセスしなければいけませんし、インターネットからコンテンツを取得するには、HTTPというネットワークプロトコルを知らなければいけません。シェルスクリプトを使う場合、それら「プログラミング言語以外の技術」を自然に利用します。それらは、プロエンジニアを目指す上でも欠かせない知識です。また、多くのプログラミング言語では、制御構文を用いて変数の値を更新していくプログラミングスタイルが取られます。一方、シェルスクリプトでは、コマンドの出力を他のコマンド入力に渡してデータを変換するプログラミングスタイルが取られます後者スタイルは、現代ソフトウェア開発では多くの場合、良いスタイルだと認識されていますシェルスクリプトを最初に学ぶことで、そのような良いプログラミングスタイルが身につきます

シェルスクリプトを体系的に学ぶならば、次の文献が信頼できます

また、多くのコマンドは「man コマンド名」で使用法を調べることができます

COBOLのいいところ

とにかく機能が少ない。

機能が少ないので、だれが書いても、フラグGOTOだらけにしなければ、大体同じようなコードになる。

俺はCOBOLの他、javaPHPVBをかじったけど、他人の書いたPHPなんて一切見たくない。

大規模システムを何十年も維持するには、大人数で保守する必要があって、プログラマー技量に左右されないCOBOLが最適だと思う。

2020-12-21

COBOLプログラマーが足りない」みたいな話をちょくちょく見るけど

https://yamdas.hatenablog.com/entry/20201221/cobol-controls-your-money

難しいのは、業務知識とか、実行環境、開発環境等の知識で、COBOLのものは、そこらのJavaプログラマーにでも入門書を渡しておけば3日後には普通にコードを書けるようになると思う。

2020-12-17

なんか以前からずっと思ってたんだがRailsというかRuby界隈は宗教というか自己啓発ビジネス臭さえするのがイヤだ

金持ち父さん…とか7つの習慣とか、そういう詐欺のカモっぽい人も多いイメージがある

Rubyという言語自体に悪意はない

しかし、Ruby登場当初からやたらとエレガントに書ける、スッと書ける(この「スッ」という表現詐欺で多い表現なので嫌い)とか、

そんなことは個人的にはどうでも良くて、ソフトウェアを使うユーザー機能が便利かとかそういう視点しか見ない、悲しいけど

保守観点からも美しいソースコードを書こうという意気込みは間違っていない、というか正しいと思う

しかし、プログラマーが美しいコードが書けたと悦に浸る、自己満足におちいっているだけのようにも見えるのが納得いかない、不愉快にさえ思える

C++Javaのような型のあった時代から、型なんてダセーよな、プレステの方が全然おもしれーよな、を経て、また型に戻ってきてる

型推論云々にかまけてパフォーマンスよりも綺麗なコード富豪プログラミングからまた元に戻ってきてる

学習コストが高いものほど評価されるような傾向も個人的には感心しない

どうせ同じゴールなのに、そこに辿り着く方法が険しいほど評価されるなんて、プログラマー美徳怠惰だのから逆行している

実によろしくない

そういう点ではRustよりもGoC#の方が評価できる気がする

もちろんRustの守備位置はそこではない気もするので単純比較おかしいのだけど、ゴールが同じなら自分C#Javaで書いて終わらせるのにと思うことがある

別にWebだけでなくコマンドラインでの捨てコードPHPJavaScriptも適している

そういう意味ではPythonはやはり強い、Glueだからだろう

正直PHPなんかよりPythonの方が言語としてはおかしい気もするのだけど、正しいとかエレガントが生き残る条件ではないのである

しかし、学習コストとしては低いシェルスクリプトは便利ではあるが流石に古いというか罠が多い気がする

PowerShellの方が使える気がする、少なくともWindowsでは優先的な選択肢になった

そう、つまりこの文章最初に戻ることができたのである

生き残るというのはそういうことではないのではないか

2020-12-10

プログラミングが好きで、高校の頃にアルバイトしてパソコン買いました。

MZ−2000。高校生にはとってはめっちゃ高かったです。

それからもう40年近くプログラミングしてきました。

当然のように、職業プログラマを選びました。

アセンブラから始まって、比較的多く書いたのはCとJava

KotlinAndroidアプリ書いたり、最近では10年ぶりにSpringFrameworkのコードを書きました。

展示会の説明員やったり、セミ講師であちこち出張したりなど、思いも寄らない仕事いただきました。

楽しい思い出も、つらいこともいっぱい有りました。

でも、もういい。もう疲れた

この業界から足を洗おうと思います

1日2時間残業とか、片道1時間通勤ですら耐えられなくなりました。

直近の案件は、契約延長のお話を頂いていたんだけど、9月に体調を崩し、体重が9キロも減ってしまってとても続けられないので、打ち切ってもらいました。

残業ありません。通勤しなくてもリモートワークで良いですよって仕事があれば良かったのですが、そんな都合の良い案件はなく、今後の展望も見込めないので、辞めようと決めました。

なにより、辞めると決めたら、とても気分がスッキリしたんですね。

から、もうこの業界に未練はないです。

プログラミングは好きなので、これからアマチュアプログラマとしてプログラミングは続けたいです。

あとはプログラミング始めたい方のための入門サイトみたいなの作ろうと思ってます

新人教育とかOJTなどの評判は良いので、果たして私が説明上手なのか、ちょっと試してみたいのです。

KotlinとかRustとかの新しめの言語の入門サイトは案外ないので、狙い目かなって思ってます

まず次の仕事を探してからですが。

2020-12-09

Apple M1が高性能な本当の理由解説する

Apple M1の高性能の理由について、ネットはクソみたいな解説記事に溢れている。

技術に明るいはずのはてなーですら某AVライターの間違いだらけの記事に釣られて、300ブクマ超が集まっていて嘆かわしい。

それもこれも後藤センセーがいつまでたっても解説記事を書いてくれないせいではあるが、公開情報が少なすぎるせいでまともなライターほど記事を書けないのも理解できる。

なので素人の俺が解説する。

M1メモリまでSoC化/ワンチップ化したから速い

違います

そもそもM1DRAMSoC化/ワンチップ化していません。M1がやっているのはSiP(System in Package複数チップをワンパッケージに組み込む)であって、eDRAMによるSoCとは全く異なるものです。

SiPSoCJavaJavascriptくらいには違います

SiPだとしてもメモリが近くなるから速い

違います

HBM系のメモリ採用していたらメモリ帯域は大幅に向上しますが、M1は標準DDRメモリをワンパッケージ化しているだけなので、帯域もレイテンシも変わりません。

帯域はM1 MBPとIntel MBP(Ice Lake)でチャネル数同じ、前者はLPDDR4X-4266、後者はLPDDR4X-3733なのでメモリ帯域は14%しか向上していません。また、x86x64新世代のTiger Lake/ReniorはLPDDR4X-4266に対応していますレイテンシM1が96.8ns、Tiger Lakeが98.4nsでほぼ同等です。

Apple M1の実力を最新世代のIntel/AMD CPUと比較。M1が両者を大きく上回る結果ににあるように、SiP化によって消費電力の削減は期待できます

DRAMとの物理距離が縮まって、レイテンシが短くなって速い

違います

SoC-DRAM間がマザーボード上で30cmあったとしても、電気信号の伝送にかかる時間は片道1nsです。仮にSiP化で物理距離が1/100になったとしてもレイテンシ100usが98.02usになるだけで、CPUにとってDRAM絶望的に遠いことに変わりありません。

M1UMA(Unified Memory Architecture)でCPUGPUその他でメモリを共有しているから速い

違います

まず、同一チップ上のCPUGPUが同一のメモリコントローラDRAMを共有するという意味では、Intel2011年Sandy BridgeAMD2011年のLlanoからUMAです。一歩進んだメモリ空間の共有、コヒーレンシの確保という意味でも、AMD2014年Kaveriから対応していて、この点においてM1革新性はありません。

M1CPUGPUメモリコントローラI/Oがワンチップになっているから速い

違います

上記Sandy Bridge、Llanoの世代からかつてのノースブリッジCPUに取り込まれたため、2011年以降のモバイルPC向け”CPU”のほぼ全てにはGPUメモリコントローラが含まれています

かつてのサウスブリッジIntelは今でもワンチップ化こそしていませんが、2013年HaswellからMCMでワンパッケージ内には収められていますAMD2014年のCarrizoからサウスブリッジ機能CPUに取り込まれています

この意味で、x86x64モバイルPC向け”CPU”は、かなり以前からSoCです。

M1はNPUがあるから速い

違います

NPUを活かせるアプリケーション2020年現在では未だ限定的です。もしNPUの有無によってUXが決定的に改善されるなら、NPUありのSnapdargon 8cxを積むSurface Pro Xは同世代Surface Pro 7よりずっと快適でなければなりませんが、そのような事実はありません。

M1が速いのは単にM1CPUGPUが速いからです。

M1CPUコアが採用するArm ISARISCから速い

違います

CISCRISCの論争は20年以上前に終わった話です。その後CISCRISCの美点、RISCCISCの美点を取り入れたので、現代CPUISAがCISCか/RISCかだけで性能が決定されることはありません

歴史的経緯からx86x64デコーダが複雑になりがちなのは事実ですが、5W以下のローパワープロセッサの開発へ向かうIntelにあるように、ISAの差による消費電力増は1020%のレンジで、さらに性能増によって相殺される分、電力効率の差としてはわずかです。

じゃあ結局、なんでM1は速いの?

頑張って最適化してIPC上げたのと、スマホ由来の積極的なDVFS・クロックゲーティング・パワーゲーティングで浮いた消費電力を回しているからです。

気が向いたら書きます

2020-12-04

ソフトウェア昔話を教えて下さい

2016年頃にソフトウェアに触れ始めて、

多分ソフトウェア世界が分かり始めたのが2018年あたり。

そこから2年経って、この2年間でTypescriptだったり, M1だったりとソフトウェア開発者の中では大きなトレンドなりニュースに触れられた。

今となっては、始めて聞いた&触った時には???だったトレンドも随分消化できるようになってきた。

そこで、太古、昔、ちょっと前、の大きなソフトウェア業界の変化やニュース体験した先駆者がその時にどう感じたのかを知りたくなったので教えて下さい。

大昔ならCの登場とか?

だって昔はアセンブラで書いていた訳ですし。

昔ならJavaとかでしょうか?あるいはWindows95?

ちょっと前ならIphoneAjaxとか?

かなり最近だとディープラーニングあたりですかね?

テーマ言語ハードフレームワーク、なんでも良いです。

ソフトウェアないしIT業界で実際に手を動かしている1個人としての大きな変化やニュースに接した際の感想を教えてほしいです。

どの会社が~とかはあんまり興味ないです。開発者個人経験がいいです。

宜しくお願いします。

anond:20201204012300

クラスに関しては自分が老人だから異論はあるけど、

とりあえず動くソースコードでそれなりの規模のが欲しければGitHubからcloneしてくればいいんだよなあ。

と言っても、元増田が「gitって何?」のレベルだとそこで話が折れてしまい、

gitとは?バージョン管理とは?ハッシュ値とは?みたいになってしまうので説明する側も辛い。

自分説明される側でも説明する側でも辛いのは、それだけ専門性が高い分野ではあるのだろうけど。

自分だって自分の専門外のことをそれ専門の人にまくし立てられて説明されるの辛いw

ソフトウェア命名規則天邪鬼でなければ、スタート地点はmain.cppみたいに類推もできるはず。

その後はデバッグ情報付きでビルドして、

デバッガでメインルーチンからブレークポイント打つなりしてポチポチ動作させたり変数の中身の変化を確認していく。

あと、ソースコードコメントも参考になる。

色々なクラスとかソースコードを眺めて全体像を把握し、そこからコアとなる機能自分が知りたい箇所を目指す。

ソースコードがある、デバッグ情報があるなら、当たり前だが変数名や関数名があるので類推やすい。

Javaとかで難読化してると、逆コンパイルできても変数名や関数名は分からなくされていて読み辛かったりする。

いや、だから難読化なんだけどwでも、.classファイルしかなくてもそれで中の肝心のアルゴリズムは読めてしまったりする)

自分には大した技術はないと自分でも思ってるけど、普段やってることをまったく知らない人に説明するのは難しいだろうね。

というか、できる人やプロだって新しいビルド方法なんて分からない。

C++ならcmakeやpremakeは分かるけど、ninjaってなんじゃ?みたいなw

そこで新しい道具に手を出して躓くことも多々あるし、

他人他人自分の知らない道具、好きでない道具を使ってたりもするわけで、ビルドするために嫌々最低限即席で学んだりする。

そういう点でフロントエンドとかJavaScript界隈に流石についていけない、歳だなあと思ったり。

2020-11-26

anond:20201126192709

あくま自分感想だけど、

Javaはそんな間違ってないんでないの?

プログラマー思想とか宗教問題になりそうだけど

Goエラーは返り値でちゃんと処理してね、

というのを初めて知ったときちょっとショックだったんだけど理由はなんでなんだろう

なんか文法的ミニマム言語作りたいんだなあ、という意思は伝わってくるんだよなあ

goroutineは凄いんだけど、なんか削りすぎてない?という気がした

Rustと違ってGoは一通り勉強したけど結局使ってないという

まあ例外あっても、それこそ全体をtry-catchで囲んで握りつぶすことは大抵どんな言語でもできそうだよなあ

node.jsとか敢えてそう書いてたときもあったし

もちろん、とりあえず動作が狂っても例外で落ちないようにしたいときだけだけどね

go言語アプローチだとerror関数戻り値なので、戻り値を受け取らない関数呼び出しという

一見何の問題もなさそうに見えるコードが、error握りつぶすというよくない挙動を引き起こす。

 

throw-catchアプローチならばerror握りつぶすには意図的にそれを行うためのコードを書かないといけない。

かといってerror戻り値を必ず受け取らねばならないよう言語仕様制限を入れると、

かつてJavaが犯してしまったように例外処理がめんどくさすぎることになる。

 

もしgo++言語を作るとしたら、これはどのようにするのが正解なんだろうか。

なぜコンピュータゲームにワクワクできなくなったんだろう?

大手で開発ちょっとだけやってただけだけど自分が思うに、

まず、コンピュータゲームほとんど巷に存在しない時代Pongが登場すれば、そりゃみんなゲームにワクワクしたはず

みんながワクワクできた時代だったと思うんだよ

完全に自分が生まれる前だけど、それは簡単に予想できる

アメリカアーケードゲーム筐体だってのものがない時代なんだから

からスティーブ・ウォズニアックだってApple IだのIIだのでPong実装はやっていたはず

それもスティーブ・ジョブズは売りにしてたはずだ

Pong動作すると、次はブロック崩しBreakout)が作れる

プログラミングのコツの一つは他人プログラムを改変することだ

Pongが動くなら、そこからドットドットの塊をVRAMに描画することは可能だと気付くだろう

でも、単なる壁打ちや対戦ゲームだったPongゲーム性を大きく変えることになる

ここがイノベーションというか発明だったんだろう

日本ゲーム企業タイトーは、このブロック崩しインベーダーゲームに「再々」発明した

これも実現可能であることは誰でも分かるが、ゲーム性を大きく変えることはある種の発明だと思う

ブロック崩しインベーダーゲームはまったくゲーム性が異なる

ちなみに、孫正義タイムマシン商法が得意で、このインベーダーゲームアメリカに輸出し大儲けした

相変わらず、左から右、右から左他人のものを移動して儲けるのが上手い(いや、本心から褒めてるんですよ

インベーダーゲームでは、ブロックは上から段々と降りてくることになる

また、ブロックが左右に動く、UFOは高速に動く、手前のバリケードがありドット単位破壊される

プログラミングのコツの一つである他人コードを改造する、は本当に素晴らしい再発明を起こしてくれる

この再発明連鎖が、

Pongブロック崩しインベーダーゲームギャラクシアンゼビウスグラディウス斑鳩だの東方だの弾幕避けだの何だの

に繋がっていくわけだが、

この矢印での「パラダイムシフト」の段差が高いほど、ゲームに対するワクワク感が増すと自分は考える

まりギャラクシアンのようなグラフィックからゼビウスが登場したときは、

安っぽい言葉形容するなら一大センセーションというかエポックメイキングという感じだったわけだ

しかし、今の時代2Dシューターにそんなにワクワクはあるだろうか?

自分2Dシューターに詳しくないが、

というか、マニアでない奴が口を挟むな、と言うぐらいタコツボ化しているように思うのだが、

ほとんど基本的な型は同じであり、

寧ろ、様式美とかお約束が守られてることがプレイヤーの安堵感につながる

2Dシューターができれば3Dシューターが作れるのも自明である

ただ、マシングラフィクス能力が低かった時代にはリアルタイムでの3次元CGの実現が難しく、

アメリカではベクタースキャン、つまりオシロスコープブラウン管テレビの走査線方式が主流だった時期もあったが、

日本ゲーム市場ではまったく見向きもされなかった

アメリカではワイヤーフレーム3Dゲームが実現していた時代日本ファミコンに向かっていた

要はハードウェアによる2Dスプライト時代である

そこから日本パソコンゲーム市場は、結果論ではあるが、

自分にはハードウェアによるスプライト固執し、束縛され過ぎているかのように今からすると思える

MSXスプライトは数が少なすぎた

一方、ファミコンスプライトの数はMSXと比べると段違いであったが、

ファミコン2Dスプライトベースゲームだけを前提としていた

まりファミコンブレゼハムアルゴリズムによる直線を引くとか困難だったのではないだろうか

自分ファミコンの開発はよく知らないのだが、ファミコン版のテグザーは酷すぎると思った

MSXの方がファミコンよりもトータルのグラフィック性能が劣るにも関わらず、

テグザービームちゃん再現されているのである

こうやってだらだら書き連ねてみると、

つくづくワクワクするのは何だってアーリーアダプターの段階であって、

そのあと結婚だってだって倦怠期?ワクワクが減少する時期がやってくるのである

何もない状況にパラダイムシフトを起こす何かがやってくるとワクワクするのであるならば、

乳児はこの世界の何もかもにものすごくワクワクしていると思われる

乳児でなくなると、この世界の変化しないもの常識として脳に定着して、つまらないものにさえなる

でも、若ければまだまだ体験していないことはあるわけだ

まり、それはゲームに関しても同じであって、

若ければギャラクシアンゼビウスがどれだけスゴかったかなんて知らんし、俺も知らんw

だって子供の頃だから

でも、ギャラクシアンより先にゼビウス見た世代だけど、凄いなあとは思ったんだよな

だって自分場合ギャラクシアンを飛び越えてゼビウスだったんだから

逆にギャラクシアンの方を後から知って、古臭いゲームだなー、レトロだなーと思ったんだから

(ただ、ギャラクシアンの曲線的な軌道ゼビウスなんかより凄い発明に思うんだが。整数演算なんだよね?

ただ、レトロレトロバカにする人はプログラマーでないとかなんだろうけど、

ゼロからコード書くって、何もないところから作ることを考えさせられるわけで、

それはゲームプログラムを書くならば、ゲームの基本のPongから考えさせられることになる

例えば、ゲームプログラムを書くときSDLとかSFMLみたいなライブラリは使うかもしれないけど、

SFMLのサンプルにはPongが入っていたはず

自分も何か新しいゲーム開発のライブラリとかフレームワークとか検証するときは、

豆腐2D3Dの白い四角、日本ではこう呼ぶ)を表示する、

から始めて、次に倉庫番簡単ブロック崩しテトリス実装するとかやることにしている

そこで開発の大まかな進行とかフレームレートとか、色々分かってくるわけだ

ジョン・カーマックがどこで語ってたのか忘れたけど、最近FPSは完全にMOD開発になっていて、

そのMOD開発の費用はどんどん膨らんでいっていると言ってた気がする

まりレベルエディットとかキャラクターアイテムだとか、そういうコンテンツの緻密な開発だけが進んでいる気がする

GTAみたいなゲームFPSとかで培った技術集大成にすぎない

可視領域をどう区切るか?遠くの建物にLODを使うか?インポスターを使うか?とかそういったゲームエンジンの話は、

マシンパワーの向上やUnityなどのゲームエンジンの登場であまり議論する意味がなくなってきている感がある

もっとも、Unityなり導入すれば簡単に作れるという話ではないと思う

思うが、もうゼロからチマチマCのベクトル計算コードを書く時代ではなくなっているのは確かだろう

カーマックはその高騰するMOD開発をマインクラフト意図的安価にしたと言ってた気がする

まりマインクラフトであれば子供でもゲームを改造する体験ができるようになる

それはマインクラフト開発者であるnotchがそういうゲーム開発に対する思想を持っていたからだ

私はnotchはシンプルものを積み上げるのが好きなように思っている

彼のJavaコードはそんなに難しくはない

寧ろ素直に書けていて誰もが勉強になるコードだったように思う

ただ、jsdo.itかに投稿していたソフトウェアレンダリングコード北欧メガデモっぽさがあって、

読もう読もうと思って未だに読んでいないことを今思い出した

文章書き直す気がないまま、だらだら書いてみたが、読み返して自己分析するに、

まず、ゲーム開発でなくてもそうだが、

まず何かがあって、それをコピー改造した何かが生まれる、この連続物事進化していく

手塚治虫があって、それを高橋留美子コピー改造して新しい漫画が生まれ

次に若い漫画高橋留美子漫画コピー改造して、また新しいものが生まれていく

開発する側も消費者もワクワクするのは、この改造して新しい何かが生まれる、守破離の離のインパクトであろう

黎明期はその離のインパクトが大きいが、どんどんそのインパクトは小さくなっていく

そして、ありふれたものが溢れるようになっていく

これが成熟期と言える

しかし、その成熟期に溢れるもの様式美であり、お約束であり、マンネリズムである

自分は初代プレステ時代もワクワクしたのを覚えている

あの時代3DOが先行したがコケたり、ドリキャスも登場してコケたり、面白い時代だったのである

ただ、今の時代にああい群雄割拠というか、戦国時代というか、そういう活気がゲーム業界にあるようには思えない

これから変わるならVRだろうか

VR元年って毎年言ってない?というツッコミ分からんでもないが、まだまだVRは伸びると思う

臭いまでやる必要性自分はあまり感じないが、

物体を触った感触とか、

物体を触れないなんてのはまだまだVR市場が伸びる余地があるということだと思っている

あと、FPSみたいに走るゲームだと自分も走るのか?ということになるけど、うーん、ルームランナー方式はなあ…

あと、これも自分は専門でも何でもないので、

というか、この文章自体ダニング=クルーガーなのは認めざるを得ないわけだけど、

敵というかNPCというか、今の時代だったら高度な汎用性のある人工知能ゲームでも実現するべきだと思うわけで、

そうすれば当然、同じセリフを延々と喋るドラクエの村人みたいなのは笑い話にしかならなくなる

ゲーム内に高度な人工知能が実現すれば、それらと会話したり、それらとマルチプレイと同様の感覚連携プレイ可能になる

個人的にはそういう未来にワクワクを感じる

今までと同じことを繰り返しててもワクワクしないし、

その理由もこの文章でも何度も書いたし、

自分がワクワクしないことは他人もワクワクしないかもしれないし、

クワクすることの方がお金にもなりそうだし

anond:20201126102012

2020-11-25

anond:20201125225751

pythonExcel自動化みたいな書籍記事があるけど、俺もVBC#のほうがいいと思うわ。

スクリプト系の動的型の言語が楽に感じるのって、数行程度のコードで、数十行数百行程度の規模でも静的型の言語のほうが楽になるな。

以前は、相当スキルの高い人でも「Rubyコードを書くのが楽しいww。Java? 程度の低いPGを大量投入するようなプロジェクトはいいかもね」みたいなことを言ってたけど、頭良すぎて脳のリソースコードチェックに使わないと持て余しちゃうんだろうな。

2020-11-21

ソースコード品質を保つために真に効果的な手段は3つしか無い

  1. バージョン管理システムを使う
  2. 静的型付け言語およびlintを使う
  3. テスト駆動開発をする

どんなに優れたツール設計思想などがあっても、使う奴がダメだと全く無意味。弊社もWebアプリを作ってて、RESTだのFluxアーキテクチャだのいろいろ導入を試みたが、ほとんど無駄に終わった。

どんなクソ組織でも効果があると確信持って言えるのは上の3つだけ。1つ目は初歩的すぎると思われるかも知れないが、筆者の想定するダメ組織ダメプログラマというのは、このレベルの連中を含む。

とにかく最低限の品質保証強制する仕組み以外は無意味

静的型付け言語サーバーサイドならJavaC#フロントエンドならTypeScript)を使わせれば、少なくともコンパイル時に分かるエラー修正させられる。

というか、ダメプログラマに動的型付けの言語は触らせてはいけない。必ずそのプロジェクト半年後には保守できなくなる。

テスト強制的に書かせるし、テストのないクラスや、通らないテストあったらコミットできないようにする(それは容易にできる)。

番外編: ものすごくマイナー言語を使う

もう一つの方法は、そもそも優秀なエンジニアしか参加できないようにすること。たとえば、ScalaHaskellErlangCommon Lispなどで書かれていれば必然的にそれが分かるエンジニアしか開発できないし、こういう言語自主的学習しているエンジニアは優秀である可能性が高い。

2020-11-20

フロントエンド技術の移り変わりが激しいというよりJavaが優秀すぎる

フロントエンド技術の移り変わりが激しいのは単純にJavaScriptが、というかWebの規格が古すぎるからなんだよな。バックエンドJavaが優秀すぎるから変化が遅く見える。

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