Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「PostgreSQL」を含む日記RSS

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

次の25件>

2025-06-28

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1.手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2.テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3.宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1.フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1.トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2.エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「Permalink |記事への反応(0) | 17:09

このエントリーをはてなブックマークに追加ツイートシェア

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1.手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2.テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3.宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1.フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1.トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2.エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single PageApplication)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「Permalink |記事への反応(0) | 17:09

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-22

anond:20250622080143

言いすぎたが、MySQL人気が下がり、PostgreSQLが上がってるのは本当やで

ソース

https://db-engines.com/en/ranking_trend/system/MySQL;PostgreSQL

Permalink |記事への反応(0) | 08:06

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250622075256

まじかよ、MariaDBとかPostgreSQLに乗り換えた方が良いか

Permalink |記事への反応(1) | 08:01

このエントリーをはてなブックマークに追加ツイートシェア

2024-08-27

anond:20240827163420

逆に、Uberエンジニアに対して、PostgreSQL開発チームから名誉毀損で訴えられろと思わないのは何故?

Permalink |記事への反応(0) | 16:56

このエントリーをはてなブックマークに追加ツイートシェア

DBの選び方

つよつよITエンジニアSQLスキーマでどうにかするからなんでもいい→なんでも良い

そこそこITエンジニアSQL難しいかシステムでやってほしい→PostgreSQL

よわよわITエンジニアDBよくわからんからコピペする→MySQL

Permalink |記事への反応(1) | 12:11

このエントリーをはてなブックマークに追加ツイートシェア

2024-03-22

日本IT土人理由

 「基幹系システム場合、初期リリースが登場してから2~3年たったバージョンを使って稼働するシステムが多い」とNEC担当者は話す。機能追加などで保守の頻度が高い顧客向けのWebサービスなどと異なり、基幹系システムの構築には時間がかかる。また最新の技術よりも安定稼働を重視するケースが多い。

 その結果、基幹系システム採用するPostgreSQLバージョンは最新版よりも古くなり、「稼働後2年でデータベースバージョンアップする」といった事態に直面する。サポート期間が終了すれば脆弱性発見されてもパッチ提供はない。サポート期間が切れたソフトウエアを基幹系システムで利用するのはセキュリティーの観点から大きな問題となる。

 サポート期間は終了するが、有償サポートサービス契約してでもPostgreSQLバージョンアップは避けたい――。こう考えるユーザー企業に向けたサービスNECパッチサービスだ。

https://xtech.nikkei.com/atcl/nxt/column/18/00989/032000143/

わろた

こんな土人みたいな速度でやってたらマジでインドインドネシアや新興国に抜かれるぞ・・・

すでに韓国台湾には抜かれてるしな・・・

追記

なにが土人かというと、「特に何の理由もなく2年遅れて使っている」という脳死ビジネスなところかな

2年遅れれば安定するっていう理由もないんだけどね

そしてギャップを埋めるべく無意味パッチビジネス発明

上乗せ型で複雑性の注入

土人すぎる

追記2)

2年遅れのものを使ってたらどう違うん?

良い質問ですね。

基本的には、「疎通先システムや対向システムが古いバージョン対応しなくなっててんやわんや

「最新バージョンなら一瞬で終わることが手間が数倍増えててんやわんや

みたいな感じかな。

土人が騒いでるみたいな感じになるよ。

Permalink |記事への反応(3) | 22:37

このエントリーをはてなブックマークに追加ツイートシェア

2023-11-29

過去イチでヤバイPJを引き継いだ

弊社のビジネス創造部門的なところが作ったPJがあるんだが

どうもゴリゴリ炎上してるらしくて支援に入った

こういう仕事は割とあるんだがなかなかのヤバさだったので紹介したい

ちなみにサービスの内容は非常に良くてユーザーも万単位で付いているらしい

からこそ炎上している

バックエンド環境

バックエンドAWSEC2動作しているがログインアカウント共通化されていてパスワードを全員で共有している

ユーザーを追加しようとしたら「そのような勝手行為セキュリティ許可されていません」とのこと

本番環境とStagingはインスタンスが分かれているが運用は同じ方法

Staging上で5人ぐらいが作業しているが、ホームの下にそれぞれのユーザー自分名前ディレクトリを作って作業している

バックエンドシステム

バックエンド側のシステムは詳細は伏せるが、某システムで動いている

仮にNode.js系だとすると、package.jsonがあってnpmrun installでインストールするのだが、普通にインストールしようとするとエラーになる

内容は依存関係で失敗しているのだが、本番も同じソース動作している

動作させるにはnode_modulesをまるっとコピーして、とのこと

さっきの自分名前ディレクトリ配下コピーしてきて、適当ポート番号でサーバを立ち上げれば一応は動く

このため、新しいモジュールを入れようとすると依存関係で失敗するため、便利なモジュールがあってもインストールできないし

セキュリティアップデートも当てることはできない(現にバージョンがすごく古い)

バックエンドシステム内容

ソースコードGitHub管理されているがセーブポイント感覚でcommitされているのでコミットログを見ても何が起きているのかさっぱり分からない

おまけにPRも使わずmainマージしまくっていてわけがからない

加えてソースコードコメントアウトの嵐でどこに何が書いてあるのかさっぱりわからない

データベースPostgreSQLだが山ほどテーブルがあるのに外部キー依存は入っていないしVIEWも作られていない

まぁ、他にもテーブルを見ていくとアンチパターンオンパレードで、EAV、ジェイウォークあたりは確認できたしHTMLSQLが格納されているテーブルも見つけた

ソース上でクエリを作ってAPIを作っているが、ザッと見ただけでもインジェクションし放題の状態になっていた

フロントエンドシステム

フロントエンドも詳細は伏せるが、いわゆるReact的なものを利用している

こちらは npmrun installでインストールできるし npmrun devでちゃんと動く

ローカル動作するので非常に助かる

ただ前述の通りバックエンドローカルで構築できないのでEC2を利用するしかなく、CORS対応のためのプロキシを自前で用意する必要があった

フロントエンドソースコード

バックエンド同様にGitHub管理されているが、管理しているだけ

バックエンドは5人ぐらいが利用しているが、ソースコード編集するのは実質1人なのでコンフリクトほとんど起こさないらしいが

フロントエンドは5人ぐらいが編集するのでコンフリクトしまくっている

解消するときデグレすることが日常茶飯事でその都度Hotfixしている

コードコメントアウトだらけなのに加えて、不必要コードが大量にあるので可読性が著しく低い

(難しい処理を読み解いて追いかけていったら最終的に使われていない、などが大量にある)

2000行ぐらいあるコードとかChatGPTに突っ込んだら20行ぐらいになる予感がある

また、DBがご覧の状態なので取得されるデータ全然抽象化できておらず、コードが膨れ上がっている

例えばProductの一覧データサーバから取得して、ユーザークリックしたProductをCartに投入するのだが、投入する情報Productではなく、CartItemにする必要があるし

OrderするときはOrderItemにしてAPIを叩く必要がある

ほとんど同じ情報なのだ微妙に変わっていたりKey名が違っていたりするのでそれぞれ変換する

他にも数え上げればキリがないが、コピペして少しだけ改変している部分などが大量にあってバグがあるのかどうかすら判別できない

セキュリティ課題

DBHTMLSQLが入っていると言ったが、調べて見るとDBから取得したHTMLをそのまま埋め込んで表示していたりした

SQLについてはフロントエンド側でSQL生成しており、そのテキストAPIに送り込んでサーバ側で実行して貰った上で格納とかしていたので

「ここにDROPTABLEとか書けばTABLE消えるんですか?」

と聞くと

「そんなことする開発者はクビだなwww

とか言われたのでことの重大さを伝えたが、まだ対処できていないようだった

認証等はOAuth2を使っていたので大丈夫そうだったが、本当に大丈夫かどうかは自信がもてない

今後の期待

システム内容はゴミのような状態だがサービス的には良いので、幹部プロダクトオーナーからは追加要望が山盛り来ている

開発チームが「稼働が足りない」という理由で断ったので「じゃぁ支援して」ということで自分のところに来たのだが

申し訳ないが、そもそもそういうレベルに無いし、全て作り直しが必要

と伝えてもどうやら伝わっていない様子

ちなみに元々の開発チームは過去にもこんな感じでサービス作ってたらしいが売れないので問題になってなかった様子

ぱっと見は動いているように見えるのが厄介なところ

正直逃げたいところではある

Permalink |記事への反応(1) | 10:39

このエントリーをはてなブックマークに追加ツイートシェア

2023-09-27

anond:20230919141733

潰しがきくというならPHP一択だよ。

でもPHPが分かるだけじゃ仕事にはならないよ、SQL(少なくともMySQLPostgreSQLどっちか)も知らないといけないし、最低限のサーバーセットアップも出来ないといけないよ。

そのほかにミドルウェアとしてApache+mod_php ornginx+php-fpm知識必要だね。

他にもメールとかキャッシュ知識必要かな、LinuxOSCentOSUbuntuが多いよ)の使い方も知っているといいよ。

でもこれらが出来れば世界中蔓延してしまったPHPで構築されたシステムメンテナンスという仕事のお陰で食い扶持は困らないよ。

覚えることが沢山だね、でも覚えてしまえば商業的に成功してしまったPHPシステムが数多くあるおかげで仕事には困らないから頑張ってね。

Permalink |記事への反応(0) | 09:22

このエントリーをはてなブックマークに追加ツイートシェア

2023-08-08

ああああもう肝心な時にスマホバッテリー切れててイライライライライライライライライラ

8年使い続けたPHSだってバッテリー満タン状態から1か月は待ち受けできてたんだぞ!?!?!?

退化してんじゃねーよ!!!!!

スマホなんて、PCよりも制限だらけでコンピューターとしてはクソ不便なクセしてさ

PostgreSQLも入らない、VSCodeも入らない、dotnetも入らない、iPhoneに至ってはWebKitブラウザ以外認められない、

じゃあ何が出来るんですかね?

バッテリーくらい1か月持たせてみろよ

ってかなり前にも書いたけど

はーーーーーー

Permalink |記事への反応(0) | 21:09

このエントリーをはてなブックマークに追加ツイートシェア

2023-06-15

あーもー、まーたスマホ電池切らしてた

おそらく1週間くらいは切らしたままにしてたはず

日曜日には銀行営業さんから電話がかかってきてたらしい

どうせ「はよ何か投資に使えや」という電話だろうから無視していいわ

スマホPostgreSQLやSQLServerExpressやVSCodeが動く世界まだぁ?

使いもしないもの、こまめに充電なんかするわけないだろ・・・

UMPCの方が圧倒的に色々遊べるわ・・・

Permalink |記事への反応(1) | 15:54

このエントリーをはてなブックマークに追加ツイートシェア

2023-05-17

至高のアクセス vs 究極のSQL

ユーザン、言ったはずだ!大規模なデータベースを作るならSQL一択だとな」

「馬脚をあらわしおって!100万人がアクセスするかもと言いながら実際は10人もアクセスしとらんではないか!高いSE長期間割り当てた上に、毎月の鯖代も盛りまくりおって!」

「ぐっ!だからと言ってベンダーロックを受け入れる理由にはならない!互換性が高いDBMS製品を選ぶのは当然の流れだ。システム屋がOfficeシステムを作るとか言語道断だ!」

「ならばMySQLPostgreSQLで十分だったのではないか

「ぐぐっ!」

技術自慢、鯖自慢に走るのは良くないぞ」

「ぐぐぐっ!」

Permalink |記事への反応(1) | 16:19

このエントリーをはてなブックマークに追加ツイートシェア

2023-01-26

VPS自宅サーバーにインストールしたいSaaS代替Webアプリ38選

シェアウェア(という表現はおいておいてのやつ。https://anond.hatelabo.jp/20230124045812)の記事面白かったので、自分の得意分野の領域でいろいろ紹介します。

基本的に、SaaSサービスは便利だけど、あれもこれもと契約していったらサブスク破産するので、

ものによってはセルフホストした方がいいと思ってる派。

Dropbox/GoogleDrive/box代替

NextCloud

もともとownCloudっていうDropbox代替があったんだけど、そこから分派して今も機能開発が続いている。

興味深いのはLAMP構成なので、VPS自宅サーバーじゃなくても、レンサバで動くのがいいよね。

データ保存領域オブジェクトストレージ(S3互換)も利用できるので、例えばWasabiなんかと契約してお安く済ませてしまうのも全然アリかと。

Trello代替

Wekan

最近カンバンシステムって、単体で使うんじゃなくていろんなアプリの中で使われる印象なので、今更Trelloだけ使いたい、なんてニーズはないかもだけど、

そこまで複雑でなく小規模なプロジェクトとかだと、意外とTrelloだけでいいよね、みたいなこともあるかな

そういう時は、これを使うといいかも。

Slack代替

Mattermost

ちょっとUI雰囲気が違うだけで、まんまSlackです。絵文字の追加もできるし、APIもあるし。人によって好き嫌い分かれるスレッド機能も、まあ、あのスレッド機能のまま。

その他のSlack代替選択肢
  • Rocket.chat
  • Zulip

この2つは使ったことないので、名前だけ挙げておきます

Zapier/IFTTT/Make代替

n8n

n8nと書いてnodemationと読ませるらしい。初見殺しすぎんだろ。

Zapier使ったことある人はすぐわかると思います

ZapierやIFTTT無料枠あるけど、あれもこれもやり出すとすぐ無料枠埋まっちゃうので、これ結構いいと思うんだけどな。

その他のZapier/IFTTT/Make代替
  • Huggin
  • Windmill

kintone代替

Exment

kintone使ってる会社増えてると思うんだけど、まだまだ1ユーザー1500円ってのは高いので、零細企業は導入し辛いと思う。

で、それの代替になるのがExment。UIがkintoneとは少し違うので代替と言い切れないかもしれないが、

やれることはkintoneのソレと全く同じなので、用途代替はできる。

開発も日本企業なので、UI日本語化されている。LAMP構成なので、レンサバでも動くよ!

Airtable代替

NocoDB

そもそもAirtableって何やねんって人もいるかもしれないけど、kintoneとGoogleスプレッドシートをいいとこ取りして、Trelloとガントチャートを足した感じ。

これのOSS版です。結構再現度高いので良い感じ。

ZoomGoogleMeet・Microsoft Teams代替

Jitsi

これもまあまあいい感じでZoom再現してますZoomの方が新機能の追加早いけど、Jitsiも頑張って追いついている感じです。

ただ、やる内容が複数人でのリアルタイム動画配信なので、サーバースペック回線スペックはまあまあ必要なので要注意。

BigBlueButton

こちらは使ったことないんだけど、よりオンライン授業向けらしい。

Calendly代替

Cal.com

最近よく見かけるようになった、オンラインミーティングとかの予定をブッキングさせるSaaS

あれのはしりがCalendlyで、日本でもいくつかそれのSaaSができてますね。

あれらも無料枠だと1カレンダーだけしかできなかったりするんだけど、これなら好きなだけブッキングさせられます

Intercom、Zendesk代替

Chatwoot
Papercups

ECサイトとか、Webマーケティングを重視してるサイトによくある、画面右下に吹き出しアイコンがあって、チャットウインドウがぴょこっと出てくるやつ。

日本ではWeb接客とか言われてるけど、あれの代表的SaaSがIntercom。Zendeskは、どちらかというと内部ツール向きかな。

これのOSS版がChatwootとPapercups。自社サイトWeb接客入れたいけど、費用抑えたい、って時にどうぞ。

Backlog/Asana代替

OpenProject

この手のツールがないと仕事にならないという人も多いと思います

これまでだとRedmineがそれのOSS版的立ち位置でしたが、さすがにイマドキあのUIはないなぁ、と。

OpenProjectは、Microsoft Projectの代替イメージしてるみたいですが、

ガントチャートカンバンデフォルトで使えるので、BacklogやAsanaの代替にはちょうど良いでしょう。

ただ、そんな高度なことしてるわけではないのに、サーバー要求スペックちょっと高めなのでご注意を。

Google Analytics代替

Matomo

UA廃止GA離れが始まってるとも聞きますが、疎開先として有名。

PHPで動くので、PHPWordPressでできたサイトに一緒に入れちゃってもいいと思う。

HeadlessCMS関連

HeadlessCMSは、データ表示を持たず、フロントエンドAPIを通じてデータを渡すタイプCMSのこと。

このジャンルでは、SaaSだとContentfulが有名だけど、OSSでもいろいろある。

Strapi

Node.js製。歴史があるので、結構いろんなことができる。

WordPressのGutenbergエディターを取り込んだプラグインなんかもある。

User認証も持ってるので、CGM的なサイトを作ろうと思ったらできなくもない。

Directus

これもNode.js製。利用できるDBが幅広く、既存データベース活用できる。

なので、既にPostgresSQLとかでデータを持ってるんだけど、

非エンジニアにもデータを触らせるためのフロントエンドが欲しい、ってニーズに良いかも。

こちらもUser認証デフォルトで持ってる。

CockpitCMS

PHP製。SQLiteMongoDBで利用可能MySQL/PostgreSQL使えないのがちょっと残念。

Shopify代替

Medusa.js

近年、本腰入れて自社ECサイトをやろうと思うと必ず選択肢に上がるShopify。

インテグレートパートナー向けのエコシステムも充実してるので、取り組み始めるエンジニアシステム会社も多い。

ヘッドレスコマースや越境ECには向いているものの、これをセルフホストしたい、というニーズに応えたのがmedusa.js

ざっと見てみただけだけど、モダン構成で、今時のフロントバックエンドを分けた構成でやりたい、というのには向いている。

プラグインmedusa-marketplace.jsというのもあり、Amazon的なマーケットプレイスも実現可能

Figma代替

Penpot

昨年、Adobeに買収され、デザイナーたちを驚愕させたFigma

先日はAdobeXD終了のお知らせとなり、UIデザイナーたちの不安は募るばかり。

そんな提供企業に振り回されたくないなら、このPenpotでUIデザインしよう。

Figmaほど機能実装はされていないが、まあまあ一通りのことはできる。

Figma代が嵩むとお嘆きの制作会社なんかは、一考の余地あるんじゃなかろうか。

Google Form代替

Oh My Form

企業によっては、コンタクトフォームをたくさん作りたいという会社もある。

例えばセミナーを頻繁に開く企業だったりとか、

人材採用フォーム職種別に細かく分けたい(しかも頻繁に募集職種が変わるとか)

などの要望によって、GUIフォームを作りたい局面がある。

Google Formで大体解決しそうだけど、それをGoogleに頼りたくないならこちら。

まあまあ機能豊富なので、人によってはGoogleFormよりもこちらを好むかも。

Gmail代替

Mailu

DockerベースWebメールUI。送受信に必要ものを、丸っとDockerで用意してくれているので便利。

SalesForce/HubSpot代替

SuiteCRM
Mautic
Erxes

HubSpotは、いわゆるMarketingAutomationCRMを一体にしたツール無料枠もあるが、かなり限定されている。

上記でいうと、Erxesが単体で一番近い機能を持っている。

MauticはMarketingAutomationよりの機能が多く、ユーザーサイト上での回遊をビジュアル化してくれたりする。

SuiteCRMはザ・CRMという感じ。SalesForceデフォルトで使う感じに近い。

ツールが分かれてしまうのは辛いところだけど、それぞれにAPIがあるので、うまく繋げられると強力なツールになってくれるはず。

Sendgrid/Mailgun代替

Postal

Webサービス作ってると、メールの通知や一斉配信などがあると思う。

通常これらはSendGridや、AWSSESなどで処理すると思うが、これらにもOSS代替がある。

PostalDockerメール周りのもの全部用意してくれているので、かなり楽。

Jimdo/Wix代替

Microweber

WordPressモダンにしたような感じで、EC機能デフォルトでついてる。マルチサイトも標準。

Jimdo/Wix代替と書いたが、もちろん自分サイトをMicroweberで作ってもいいが、

自前ホスティングして、JimdoWixのようなサービスを始めることもできる。

テンプレートをいくつか作っておいて、Stripeを仕込んでおけば、今日からあなたJimdo/Wixのような事業を始められるわけだ。

STUDIO/Webflow代替

Webstudio

JImdo/WixSTUDIO/Webflowは一緒くたに語られがちだが、明確な違いがある。

前者はプリディファインドなブロックGUI構成するのに対し、後者DOM要素ベースで構築していく。

まりよりHTML/CSSによる細かなデザインコントロールがしやすく、Webデザイナーが親しみやすい。

それのOSS版がWebstudio。まだアルファ版だが、フロントエンドはそれなりによくできているので、

バックエンドを自前で用意してStripeを仕込んでおけば、今日からあなたも(以下略

Facebook代替

friendica

Facebookなんか使わねーよ、っていう人も多いかもしれないが、

特定コミュニティの中でコミュニケーション取るには、FacebookUI機能は優れていると思う。

なので、サークルとか同窓会、あと自治会とかPTAなんかにいいんじゃないだろうか。

LAMPなので、レンサバでもいけると思う。

Netflix代替

Jellyfin

Netflix代替って、Amazon Primeとかじゃねーの、と思われるのかもしれないが、そうではなくて、

あなたNetflixみたいな商売したいならこれを使うといいよ、というのがJellyfin。

いや、そんな商売しないよ、と思うかもしれないが、

使いようによっては、おじいちゃんおばあちゃん向けの子動画配信サービスとして構築するとか、

Stripeと連携して、劇団バンドオリジナル配信サイトを構築するなんかも面白いと思う。

YouTube/Vimeo代替

PeerTube

今更誰もYouTubeVimeoの後追いをしようとはしないでしょうが

複数ユーザーから動画のアップを受け付けて、それを閲覧したい用途もあると思う。

例えば、軽音部で複数バンド練習風景を録画したのを定期的にアップしたりとか。

学習塾で、授業の録画を授業ごとにアップしていったりとか。

YouTubeLive/FacebookLive/ニコ生/Twitch代替

Owncast

ZoomGoogle Meetのような双方向ではなく、一対多の一方通行配信

個人的には、企業のウェビナーツールとしての可能性を感じる。(Zoomのウェビナープランとか高いもん)

メールワイズ/Re:lation代替

FreeScout

つのメールドレス複数人運用したい時のツールメールワイズとRe:lationどちらも日本SaaS

FreeScoutはOSSだけど、海外製。一応日本語化もされてるっぽい。

ECサイト顧客問い合わせや、営業チームのプライマリ対応なんかに良いと思う。

Bubble代替

Budibase
AppSmith
ToolJet

Bubbleってなんぞ? という人のためにお伝えしておくと、ノーコードベースWebアプリ開発ツール

データエンティティ設計したら、自動的CRUDを作ってくれて、フォームを配置するというような感じ。

Bubbleはそれ系の老舗で、歴史が長い分ノウハウも溜まっており、連携できるサービスも多い。

ただ、ベンダーロックインされるし、季節的なキャンペーンとかでは、アプリ使用しない期間もサブスク費用がかかる。

Budibaseは、Bubbleの思想に一番近い感じ。凝ったUI必要なければ、ざっくりコレでなんでも作れちゃう

AppSmithも同じような感じだが、これはDBをあらかじめスキーマ定義しておかないといけないところが若干不便かな。

ToolJetはルーティングURL概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認ときたい。

他にもこの手のやつあったら、いろいろ教えて欲しい。単純に好きなので。

「こういう用途のやつ、ある?」みたいな質問も歓迎。

見つかったら追記します。

Permalink |記事への反応(5) | 10:44

このエントリーをはてなブックマークに追加ツイートシェア

2023-01-02

三流エンジニアがやりがちなミス

タイムゾーン考えずに時間を使う

暗黙的にJSTとして時間を使ったせいでUTCで作った場所で盛大にバグる

応急処置バグったところを+9とかやってしまうと、それ以降に逆に誰も気付かずに更に影響範囲が拡がったりする

海外展開しようとしたときバグに気付くがどうしようもなくなって途方にくれて海外だけは別アプリになったりする

UNIXTIMEを使えば楽なんだけれど、そうすると生データぱっと見で時間判別できないので困ることも多い

素直にUTCでISO8601が良い

文字コードUTF-8だと大丈夫だと思ってしま

とりあえずUTF-8にしとけば大丈夫、ってことで実装を進めた結果、Mac/Winでハマる

他にもBOMでハマったりして、むしろSJISの方が良かったんじゃ無いか、とか言い出す

DB統一的になっている場合はまだ後からどうにかできるが、変なところでキャッシュされてたりすると凄い困ることになる

MySQLなりPostgreSQLなりでUTF-8を正しく扱う方法はいろんな記事があるのでちゃんと読んでおけば問題無い

価格浮動小数にしてしま

「将来的にはグローバル展開が必要

とかよく分からないことを言い出して価格浮動小数にしてしま

かに米国なら$2.43みたいな感じで価格を使ったりするし、むしろ小数点以下が無い通貨の方が珍しいのだけれど

丸め誤差を考えないで作ってしまってバグが見つかりめちゃくちゃ揉める

応急処置として丸め機能とかが追加されて事なきを得るけれど

そもそも最小単位で扱って表示の時に小数化すれば良いだけ

他にある?

Permalink |記事への反応(0) | 00:06

このエントリーをはてなブックマークに追加ツイートシェア

2022-12-29

コマンドコピペしかできないサービス維持チーム

以前在籍していた会社企業向けパッケージソフトの開発をしていた。

多くの会社の基幹業務に関連するような分野のソフトだ。

お客様にそのソフトだけを売ることもあるが、サーバーへの導入など非IT企業には難しいので、維持管理も含めて契約していた。

私はアプリ側の担当者だった。パッケージソフト本体を作っていた。

導入、サービス管理お客様アプリが入っているサーバーLinux)の保全などは維持チームが担当している。

お客様要求に合わせたスペックにあわせた構成にするのも維持チームが担当するということになっている。

しかし、この維持チームはコマンドコピペしかできないわけだ。

なにか障害等が発生したときは当然アプリ側もバグ調査などでログ確認したりするが、サーバー側の不具合かどうかも我々が確認していた。

ミドルウェア脆弱性が発覚したときもその対応方法調査、手順の作成もした。

基本的に我々が渡した手順書をそのままのことしか行わない。

アプリ導入方法ミドルウェアの導入方法も我々がかいものだ。

具体例

そのアプリDBがもともと有償のあるDBしか対応していなかったんだが、PostgreSQLにも対応できるように機能改善した。

その時は差分バックアップ方法リストアのやり方、ディスク故障しても大丈夫アーカイブログの保存法などの説明して、バックアップ設計までした。

なにせ、リカバリをする場合リストアコマンド一つでできるもんではなく、ロールフォワードでどの時点まで戻すかという判断必要になってくる。

ある時点で重要データを消したというのであればその時点より前までに戻さなければならないので、リストアのやり方の選択肢も状況により変わる。

あとPostgresは他のDBに比べてファイルコピーしたりテキストを書いたりすることが多い。

手取り足取り教えて、リハーサル実施して教えた。

Linuxディストリが新しいバージョンが出たときアプリ動作検証も行ったあと、そのLinuxの導入手順書もつくったな

Apacheの導入手順も書いたな。

Apacheの最適なチューニングをする方法も書いたわ。

思ったこ

ミドルウェアLinuxの使い方教えるのアプリ実装担当範囲外じゃね?

でも維持チームにやれる人がいなかったのよ。

維持チームはつまり手順書というコマンドで動くシェルのようなもんだ。

Linuxの上にBashというシェルがあるが、その上に維持チームというシェルがあって、我々プログラマがその維持チームにコマンドを送っていた。

維持チームシェルの良いところはお客様の窓口になってくれたのでメール電話はやってくれた。

おかげかなんかわからんが、今の仕事でもフルスタックで働いている。

Permalink |記事への反応(0) | 14:05

このエントリーをはてなブックマークに追加ツイートシェア

2022-10-13

anond:20221013145402

ほいノ

学歴

中学ん時の偏差値は60くらい。

高専行こうと思えば行けたんだけど、実家離れるの怖くて偏差値45の工業高校へ。

もう全然馴染めなくてさっさと中退

17歳までニート

18歳までフリーター

18歳〜21歳まで定時制に通った。

英語個人的にそこそこ勉強したけど、数学なんかはⅠの後のAが半分も終わらなかったレベルバカ校。

大検で足りない単位取って3年で卒業した。

職歴

21歳〜24歳まで契約社員

この時期は暇で、なぜかやる気に満ち溢れてたから、TOEIC700近くとか日商簿記2級とか色々資格を取った。

24歳でうつになって、30歳くらいまで日雇い派遣無職を半々くらいでリピートしてた。

30歳で製造業正社員になった。

これが人生初めての正社員だった。

やってる仕事は大したことなかったけど、幸い仕事中にPCをめちゃくちゃ使うのでやりたい放題だった。

この時にプログラミングを始めた。

33歳で正社員社内SE転職

年収めっちゃ下がった。

34歳でWebスタートアップ転職

ここで年収どんどん上がった。

36歳でうつが再発して辞めて今に至る。

プログラミング遍歴

略歴・技術スタック

基本は、仕事で使えそうなもの必要ものをその都度吸収していった感じ。

Webが中心ではあるけど、組み込みとかのハードが絡む分野以外は結果的に広く浅く手を出してる、つもり。

言語的なやーつ
ExcelVBA 1年
VB.NET半年
JavaScriptNode.js 4年
HTML 1年
SQL 4年
GAS 3年
C# 1年半
TypeScript 2年
Java半年
C++半年
ラダーFB三菱シーメンス 1年

実務経験があるって胸張って言えるのはこれくらい。

大体習得順。

他には、Python、Julia、R、Fortran、Rust、GoDart、Shell、Deno、CSSなんかは少しずつかじってる。

最近Webに関してはほとんどJSTS)で済む感じになったので楽。

なんでPLC最後やねんってツッコミは置いといて、Web系寄りでラダーも触ってるって人は観測範囲ではあんまりいないので、それが俺の数少ない強み。

それ以外のなんかなやーつ

RDBPostgreSQLSQL Server、MySQLSQLiteの順で実務経験あり。

NoSQLはFirestoreが実務経験あり、実務なしだとNeo4jとか。

PaaSGCP(Firebase)、AWSの順で実務経験あり。AzureADVM周りをちょっと触った程度。

Dockerはよく使うけどKubernetesとかまでは行ってない。

後は産業用の通信プロトコル的なやつを無駄に色々触ってる。ModbusTCPとかORiNとかCC-Linkとか。PLCもそうだけど、あの辺は日本ドイツアメリカが未だに既得権益で幅利かせててまじで闇深い。その代わりそれをブレイクスルーできればめっちゃ稼げる分野だと思う。

閑話休題

俺のキャリア形成方法と、簡単アドバイス

まずはカイゼンをしよう

フリーターでどんな仕事してるか知らないけど、仕事で一日の半分が無くなっちゃうじゃん?

から、その時間をまず有効に使う。

以下、俺の場合ね。

次長クラスの人が「この製造番号でクレームがあったんだけど、作業当時どんなことあったか覚えてない?」みたいなことをわざわざ現場まで何度も聞きに来るんだよ。

作業したのなんて半年前だったりするから一々覚えてないっすよ、って言ってるのに何度も聞きに来るからイラッとして仕事用のPC勝手Excel業務日報を付けるようにして、イントラファイルサーバーに置いて「そういう時はこれ見て下さい。次長の貴重な時間が勿体ないです」って言ったのよ。

それだけでめちゃくちゃ喜ばれる。

で、今度はその次長が「この製造番号どれくらいの時間作業終わった?」みたいなことを現場までわざわざ何度も聞きに来るから、俺はその時またイラッとして、Excelストップウォッチもどき作って製造番号とか工程ごとに時間計測して記録して、やっぱりファイルサーバーに置いて「これ見て下さい」って言ったのよ。

それでまた、めちゃくちゃ喜ばれる。

俺のプログラミングの始まりは、ひたすらそれの繰り返し。

最初プライベート時間結構使ってやってたんだけど、そういう周りに喜ばれる効率化を繰り返してると、少しずつ業務時間内で自分スキルアップに直結する時間を作れるようになる。

自分でこれ面倒くせーな、効率よくできねえかなって思ったら、じゃあどうやって?てのを考える。

これがカイゼン英語Kaizenって言っても通じる。

ちなみにPCがなくても、たとえばメールアドレスさえあれば今の時代カイゼンはできる。

大きな会社に勤めてるとかだと使うのが難しいんだけど、IFTTTとかが良い例かな。

https://ifttt.com

これはiPaaSっていうサービス一種で、まあ言葉意味は覚えなくて良いんだけど、要は「イベントAが発生したら別のイベントBを起こせ」っていうのを登録して、自動化できるWebサービス

例えば、あなた日雇い会社にいて、毎日違う現場に働きに行くとする。

で、出勤前、現場到着時、勤務終了の時にLINE毎日報告しなきゃいけないとする。

で、その報告を受けた事務方は、Googleスプレッドシートにその都度入力する。つまり、それだけの為の事務員が一人いる。

面倒くさいし、お金がかかる。

そこで、「特定グループLINEを受信したら(イベントA)、特定Googleスプレッドシート情報を記録せよ(イベントB)」っていうのをIFTTT登録すると、少なくとも事務員入力の手間は省けるってえ寸法だ。

IFTTTはたくさんイベントを処理させたい場合は有料になっちゃうけど、個人で試すぶんにはクレカ登録しなきゃいいだけだから試してみるといいよ。

プログラミングを学ぶならN予備校

月1000円で学べる。コスパは圧倒的。

テキストベースだけど、Web講義とかチャット質問できる。

入門コース学習に180時間と公称してる)がしっかり理解できていれば、Webで大抵のものは作れる。

ただし、大筋は問題ないんだけど、細かい部分で最新技術キャッチアップできてない可能性があるので、そこは注意した方が良いかも。

https://www.nnn.ed.nico/pages/programming/

安定志向なら中小企業社内SE転職する

N予備校の入門コース終わらせたら、基本情報技術者応用情報技術者を取る。

そしたら、職歴書の作り方次第で中小企業社内SEにはまず転職できる。

中小企業社内SEは、ITリテラシーの低い社員が多い中で「Excelセルの色が変わらなくなっちゃったんだけど!」とか「複合機が紙詰まりって言ってるけどその紙が見つからない!」とかクソイージークエストをこなすだけでおちんぎんが貰える、人によっては天国、人によっては地獄のような職業だ。

ごめん、流石に言い過ぎた。実情は色々と面倒くさい。DXとかバズワードを聞きかじったクソ重役から突然言い渡される重めのミッションとか。

けど安定なのは間違いない。

上昇志向なら中小製造業生産技術転職する

N予備校の入門コース終わらせたら、基本情報技術者応用情報技術者を取る。ここは社内SEと同じ。

生産技術ってのは、誤解を恐れずにすげえ簡単に言えば、カイゼンばっかりやってる人たちのことだ。

あんまり詳しくは言えないんだけど、俺が最後にやっていた仕事は言わば生産技術だった。

で、中小企業生産技術は、Webに強い人材をかなり欲しがっている。有り体に言うとIoTとかね。

IoT最近セキュリティの強化がかなりクローズアップされていて、そのせいで二の足を踏んでる企業が多い。

そこに滑り込むのはアリだと思う。

まとめ

よく「T型人材」って言われ方をするけど、どっちのスペシャリストの言うこともある程度分かる「橋渡し」的な人材になると途端に貴重になって需要が増すので、上昇志向があるなら「Web+何か」の組み合わせでお金稼ぐのが良いんじゃないかな。

ま、橋渡しって自然プロマネとか任されがちで、裁量大きくて大変なんだけどね。

質問あればどうぞ。頑張って。

Permalink |記事への反応(4) | 18:52

このエントリーをはてなブックマークに追加ツイートシェア

2022-08-27

センスの無い未経験年収300万強のプログラマとして就職して必要だったこ

学歴がよくなくて、就職が困難だったので中小SIer で働いていた。 (プライム案件を取ってこれる分マシらしい)

レキサルティレクサプロデパスのお世話になって続けてたけど、結局は薬でどうにかできず、辞めてしまった。

参考程度だけど、未経験の人が 300万 をもらうために、どのようなスキル必要かを、まとめておく。

ちなみにどれくらいプログラムが書けなかったかというと、競技プログラミング努力してもAtCoder黄色になれず青色のままってくらい。

AtCoder でいう、初心者から抜け出せないという、要するにセンスがないということなのだけど、そういう人も居そうなので、参考までに。

要するに

経験プログラマに対して、これだけ要求されるのだから、未経験の人は覚悟するようにという指針を提供したいので書いた。

入社時に覚悟しておかなければならない事

誓約書

基本的に、損害を与えた場合には、それを作業者補填するという誓約書を結ぶ。

要するに、捨て駒として扱って、失敗したら賠償しろ、という事になる。

このことを認識して、失敗しないように振舞ないと、連帯保証人含めて迷惑をかける事になる。

要するに、低賃金で未経験プログラマ案件にノーリスクで送りこんで、稼ぐための手段です。

必要だったスキル

ディレクション

基本的に PL (夢想家) →PM (御用聞き) →プログラマ という環境なので、プログラマ自分ディレクションして意思決定する必要がある。

例えば、下請け場合は、PM の御用聞きの結果のWBS に合わせないと、顧客からDM瑕疵担保責任がどうとか言われる。

社内開発の場合は、PL の方から直接、長時間の叱責を受けなくてはならない。

そういう不幸を防ぐためにも自分ディレクションして、PM の決めた実態を反映していないWBS に合わせて作業するスキル要求される。

基本的に手戻りは個人の過失になってしまうため、手戻りしないように考え抜いて意思決定をする、というのが重要になる。

これこそ、ガクチカと呼ばれる、頑張れますというスキルなので、学生時代に頑張っておけばよかったなぁ。

デザイン

こう見せたい、こう表現したい、という事を伝えるには、必然的デザイン知識必要になる。

創造思考デザインは切っても切り離せない概念で、デザインとは創造なのだから、当たり前である

ソフトウェアアーキテクチャも、ソフトウェア設計も、コーディングデザインと言えるかもしれない。

言語技術 (言語能力)

顧客と 1:1 で話す事がDM でもボイチャでも突発的に発生するので、いつ、いかなる時でも論理武装していなければならない。

まぁ、顧客であったり PL であったりはキレるのが仕事なので、それに対して理路整然と説明する必要がある。

なんとなく、では納得しないし、すぐ損害賠償請求とかそういう話にいくので、答えられないと持ち帰りますお茶を濁して、エマージェンシーになる。

後述する設計能力においても、課題を把握するための言語技術(言語能力)は重要ファクターだと思う。

ソフトウェア設計

C/C++システムプログラムフレームワーク基本的に無いので、自分概念を整理して、どのような変更、拡張があるかを考えて設計する必要がある。

この能力が弱いと、手戻りが発生しやすくなり、瑕疵担保責任を問われることになる。

読んだ本の中だと、ボブおじさんの本が、やっぱりしっくりくるなという個人的な感想がある。

ネットワークプログラム (C)

UDP で送ってくるデータを受けて24/365 で停止しないWebAPI への繋ぎ込みという簡単作業があって、振られた。

リークしてはいけないという事でmalloc禁止で、グローバル変数を利用するという変なルールがあった。

Rust で書けばいいんじゃないかなと思ったけど、Rust 書くのもシンドイし、C/C++ で、しんどくて読みづらいコードを書いた。

あとで保守する人が大変そうだけど、そういうルールを決めたのは PL だしね。

システムプログラム (C++)

なんか、特殊PCI Expressカードからベンダーが用意しているSDKデータ引っこ抜いてWebAPI へつなぎ込む部分をやった。

データの中の特殊信号を取りたかったらしい。

一応、SDK の使い方をパラ見して 1 日で作ったので、別に負担じゃなかったけど、素人やらせるんなとは思った。

Webバックエンド (Express/Fastify +PostgreSQL)

当たり前だが、DB 作って RestAPI を生やすのは現代プログラマにとって自然にできなければならない。

なので、新規開発のサブモジュールバックエンドを任せられた。

だが、ORM の癖を把握したり、発行されるクエリ確認したりするのは、疲れる。SQL を直書きするのはシンドイ。

結局SQL を直書きすることにしたけど、あまりいい決断ではなかったと思っている。

それ以外はフレームワーク に乗ってしまっていいので、書き捨てる分には楽だった。

最近だと、TypeScriptPrisma 使うのが、型安全でよさそうだなと思っている。

Nest.js個人的には好み。

Linux操作 (EC2 とか)

デプロイEC2 直でやったりECS にしたりとしていたので、ベアメタル知識必要になった。

要するに systemd のいじり方とか、死活監視の仕方とか。

個人的には、クラウド嫌いなので、ベアメタルの方が安心できる。

Bind権威DNS管理して、postfix絶対止めてはいけないメールサーバ管理するとかもあったけど、出来て当然ではある事だし。

Webフロントエンド (React/Vue)

会社Webアプリ案件を取ってきたので突っ込まれた。

経験プログラマでも、月単価100 万以上で顧客請求してるんだから会社はそりゃ儲けるだろうと思った。

会社が一人前の経験N年のプログラマといったら、その通りに振舞う必要がある。顧客責任はないのだから

当たり前だが、WebディレクションWebデザインWebプログラミング,Webマークアップ は、全て作業者であるプログラマ仕事になる。

個人的には、これが分かれている理由が良く分からないけど、分けたい人がいるんだろう。

デザインで、CSSフレームワークを使うと、その色が出るという事で、全部CSS手書きしていた。

tailwind が出た現在では使っていればよかったなと思う。

結局、全く分からない中、手探りでデザインし、コードを書いて、顧客に 1 日 5 ~10リリースするという行為をした。

顧客大手企業だったので、自社のエンジニアならもっと出来る、と叱責されまくったけど、だったら自社でやればいいじゃんと思った。

一応、今でもサービスは生きていて、ユニークユーザ数は上がっているらしい。

そして、焼き付け刃だったので、 WAI-ARIA を知らず、アクセシビリティへの配慮が足りない事が問題になってしまった。

これはなんとか保守対応ねじ込めたのでトラブルにならなかったけど、瑕疵担保責任と綱渡りだなと思った。

CI/CD 構築 (Azure Pipelines)

当たり前だが、リリースサイクルを短くしないと顧客はキレてしまうので、CI/CD を整えないといけない。

今はGithub Actions とかあるけど、昔は無くて Bitrise が高いからみたいな理由Azure Pipelines でCI/CDフローを構築した。

もう Multi Stage Pipeline になってるだろうけど、Release Pipeline がGUIからしか設定できないのが辛みだった。

IaC (Terraform)

当然だが、デプロイするためにはIaC を整える必要がある。

これを知らずに、コンソールポチポチしていたので、IaC 出来てない事がバレた時に色々怒られてしまった。

今はCDK とか便利なものが出来てるんだなぁ。

自動テスト

本来テスト自動テストを整えて、質保証をしてバグを減らさなければならない。

だが、テストを書くという手間を払えなかったので、人力テストしかできなかった。

一応、リグレッションテストを人力でやりまくったので、バグ発見曲線が結合テストでの IF 不一致しかない、という結果にはなったけど

自動化できれば費用必要じゃなかったから、怠慢だと、責められてしまった。

同じような未経験の人へ

経験でも誓約書を盾に、振られた事全部を出来なくてはならない慣習があるので、プログラマはそんなに良い職業じゃないよ。

甘い考えで、プログラマになろうと思っているのなら、考え直した方がいいです。

Permalink |記事への反応(3) | 00:18

このエントリーをはてなブックマークに追加ツイートシェア

2022-06-09

anond:20220609153652

xrea無料プランpostgresqlphp使えると思う

Permalink |記事への反応(0) | 15:53

このエントリーをはてなブックマークに追加ツイートシェア

2021-11-30

anond:20211130194541

Linux使ってない会社とかあんの?

MySQLPostgreSQLMongoDB普通に使われてるが?

Permalink |記事への反応(0) | 19:51

このエントリーをはてなブックマークに追加ツイートシェア

2021-08-01

anond:20210801133659

それは、作品シューカツのポートフォリオに使えんのか?自分はこれだけの絵や文章を書いた、っていうのはできないの?自分大学中退エンジニアだけど、いちおう「Ruby on RailsPostgreSQLDB に使ったiPhone/Androidゲーム」を持っていったら採用されたよ。

Permalink |記事への反応(2) | 13:45

このエントリーをはてなブックマークに追加ツイートシェア

anond:20210801013057

そういうプロジェクト成功する「何か」なんて存在しないの。色々PMI なり、PMBOK なり、努力はされたけど、歴史的に「こうしたらうまく行った」という決定打は見つかってなくて、ただ「動くコード」だけが計算機が受け入れてくれたのでが世の中にあふれている。設計とかも「確固たる開発したいもの」ができないのだったら、KPI だけは決めて、PostgreSQLAWSRailsNext みたいなアーキテクチャKPI相談しつつチョイスして、まずは堅いエリアを構築していくという、XPスクラムの方が速くて良いと思うよ。

Permalink |記事への反応(0) | 01:57

このエントリーをはてなブックマークに追加ツイートシェア

2021-07-31

anond:20210709225338

元増田なんやが、PostgreSQL発音しなくても問題ないんよ。なんというか「不安かられる」のよ、「ポストグレス」とちゃん発音できないと、こいつは「本当に数ヶ月単位で触ってきてるのか?」って感じで怖いんよ。下手に「update に where なしでSQLを発行されたら」困るだろ?

Permalink |記事への反応(0) | 20:51

このエントリーをはてなブックマークに追加ツイートシェア

2021-07-27

anond:20210727170141

データベース配列を保存って意味からなかったが

PostgreSQL配列型のことだったのか…

https://www.postgresql.jp/document/9.4/html/arrays.html

Permalink |記事への反応(0) | 17:07

このエントリーをはてなブックマークに追加ツイートシェア

2021-07-17

anond:20210708205945

最近テック系の生態系を知らずに、ほとばしる若さ嫉妬して学生をぶちのめし申し訳なかったと思うようにはヒートダウンしてきた「年収270万円だった医大生」です。こんばんは!

激おこしたのは、申し訳ない。

すごく反省している。ただ、優雅自分学生時代に学んだ知識をもって、社会人にその勢いを保持したままで定年まで行ける可能性は高くないと私は思うのだ。おそらくは名門大で、勢いのある会社なら引く手あまたそうな貴方自分にとっては眩しかったのだ。

フロントエンド給料が安いという思い込みをしてました。

本当に認識不足だった。もともとAndroid/iPhonejQueryJSON操作をしていて、PHP/Rails/Springバックエンド界隈からMySQL/PostgreSQLを触り、人員不足AWS をも触って QA および SRE をしていたエンジニアだったのだけど、ブロントエンドがDB に遠いという理由で簿給だと思っていたのは、各派遣会社給料をみる分だと間違いだと理解した。知識アップデートされてないのはオレ自身だったようだ。申し訳ない。

Firebase や mBaaS は不味くない?

根拠は、NoSQLスキーマしなのは途中までは良いけど、後で負債になる感じがするので。あと、Firebase はGoogle が中途でやめるとなったときが怖いぞ。JS ならexpress というフレームワークあるし、Kotlinサーバーがあるから古典的サーバークライエントモデルで良いのじゃないかな?Next ならSSR あるし。

サイバーエージェントにくくった理由

自分のような新卒採用を逃した身分では、サイバーエージェントのようなB to C領域トップティアにある会社に紹介してもらえるというのは「蜘蛛の糸」のような貴重なチャンスに思えたのだよ。そりゃ、ある程度は経験積めばスカウトが来るかもしれないけどさ、自分は年食っていたから「サイバーエージェントで働けるという可能性」に全力をかけたよ。その結果が、場末の未認可SES って、しか反社だったなんて、すごくショックだったよ。クソな「自称数学者人工知能論を聞いて土日が終わり、平日はブラック客先常駐」な日々はうんざりだ。

Permalink |記事への反応(0) | 00:33

このエントリーをはてなブックマークに追加ツイートシェア

2021-07-10

[増田統計]2021年7月9日金曜日増田

時間記事文字数文字数平均文字数中央値
007110683150.554
01386409168.741
0222216098.255.5
0336330991.967
04172436143.335
05152188145.945
06373846103.970
0765369856.934
08113988187.447
091641538093.843.5
102111685479.937
112231790080.339
122061488772.335.5
131521124974.030
141901594583.934
151991423571.535
161431403698.236
1714119208136.244
181981561778.937
191751702297.333
2017818629104.742
2112112653104.646
221851782696.439
2312417665142.542.5
1日302428371693.838

本日の急増単語 ()内の数字単語が含まれ記事

Redis(4),UPS(4), Elasticsearch(3), 270万(8), WAF(3),爆竹(6),内村(8),コピペプログラマ(4),筆おろし(7),PostgreSQL(4), トラッカー(3),ハンバーグ(20), 女体(14),大坂なおみ(11),唐揚げ(13), 舌(18),不自由(16),飲酒(9), 観客(13), 車内(7),共産(7),五輪(38),ポルノ(12), 届け(9), 開催(37), 立憲(8), ω(9),選手(28), 接種(25),飲食店(20),オリンピック(49),自民(19),カレー(17),エンジニア(26),緊急事態宣言(23)

頻出トラックバック先 ()内の数字は被トラックバック件数

子供舌扱いされない食べ物ってなんだよ /20210709142640(42), ■エンジニア適正が無い奴の生きる道ってなんですか? /20210706022633(39), ■anond20210706022633 /20210708205945(23), ■ワクチンを打ったのでLANケーブル肛門差してみたんだがネットにつながらない /20210709131627(20), ■有権者が「失望」してるのはSNS政治を熱く語るキモい中高年 /20210708173956(17), ■結局みんな女体が好きで女は嫌い /20210709125134(16), ■夕張市を立て直す方法 /20210709162841(16), ■「大盛り無料」や「麺の固さ選べます」が嫌いすぎて吐きそう /20210708225704(15), ■女が憎すぎてエロゲやるのも辛くなった来た /20210708212403(14), ■西村の首 /20210709154205(13), ■スター連打って何がだめなの? /20210708175648(11), ■電話から人殺したかもしれない話 /20210707211559(10), ■犯罪予告通報チキンレース /20210709121946(10), ■三年目のデミオ /20210708202016(8), ■ /20210709224650(8), ■ /20210709222217(8), ■ /20210709182031(7), ■ /20210709191924(7), ■インセルアニメオタク理想郷エスティワニの悲惨な現状 /20210709205255(7), ■3Pおばさんが死んだ /20210708230828(6), ■「東京感染者数を5週間ぶん予測した」に勝負を挑んだ:3日目 /20210708171234(6), ■それでも自民党を支持するのはなぜ? /20210709223358(6), ■他人が可愛がってる畜生を殺しても「器物損壊罪」程度 /20210709111617(6), ■ブクマカ勘違いして叩いてる。反省しろ! /20210709165110(6), ■昔話の桃太郎の教訓ってなんなの? /20210709180804(6)

Permalink |記事への反応(0) | 00:05

このエントリーをはてなブックマークに追加ツイートシェア

次の25件>
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp