「PostgreSQL」を含む日記 RSS

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

2023-11-29

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

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

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

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

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

からこそ炎上している

バックエンド環境

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

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

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

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

バックエンドシステム

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

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

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

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

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

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

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

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

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

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

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

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

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

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

フロントエンドシステム

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

こちらは npm run installでインストールできるし npm run 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に送り込んでサーバ側で実行して貰った上で格納とかしていたので

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

と聞くと

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

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

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

今後の期待

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

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

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

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

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

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

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

2023-09-27

anond:20230919141733

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

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

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

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

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

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

2023-08-08

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

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

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

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

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

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

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

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

はーーーーーー

2023-06-15

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

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

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

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

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

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

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

2023-05-17

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

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

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

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

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

「ぐぐっ!」

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

「ぐぐぐっ!」

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認証デフォルトで持ってる。

Cockpit CMS

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

Shopify代替

Medusa.js

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

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

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

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

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

Figma代替

Penpot

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

先日はAdobe XD終了のお知らせとなり、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は、いわゆるMarketing AutomationCRMを一体にしたツール無料枠もあるが、かなり限定されている。

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

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

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

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

Sendgrid/Mailgun代替

Postal

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

通常これらはSendGridや、AWS SESなどで処理すると思うが、これらにも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の後追いをしようとはしないでしょうが

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

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

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

YouTube Live/Facebook Live/ニコ生/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概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認ときたい。

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

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

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

2023-01-02

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

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

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

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

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

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

素直にUTCでISO8601が良い

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

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

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

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

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

価格浮動小数にしてしま

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

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

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

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

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

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

他にある?

2022-12-29

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

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

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

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

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

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

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

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

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

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

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

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

具体例

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

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

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

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

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

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

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

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

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

思ったこ

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

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

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

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

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

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

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

言語的なやーつ
Excel VBA 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とかまでは行ってない。

後は産業用の通信プロトコル的なやつを無駄に色々触ってる。Modbus TCPとか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+何か」の組み合わせでお金稼ぐのが良いんじゃないかな。

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

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

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データ引っこ抜いて Web API へつなぎ込む部分をやった。

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

一応、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 不一致しかない、という結果にはなったけど

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

同じような未経験の人へ

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

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

2022-02-06

anond:20220206134732

DockerPostgreSQLとかMaria動かしてWebアプリ開発するとかとは違うんでしょ?

そういうのはできるけど…

2021-08-01

anond:20210801133659

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

anond:20210801013057

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

2021-07-31

anond:20210709225338

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

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 って、しか反社だったなんて、すごくショックだったよ。クソな「自称数学者人工知能論を聞いて土日が終わり、平日はブラック客先常駐」な日々はうんざりだ。

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)

2021-07-09

https://anond.hatelabo.jp/20210708205945

=====

東大卒ヨーロッパエンジニアやっている人から解説しよう。(ちなみに医学部防衛医大に補欠合格していた)

エンジニアになるより医者やっていたほうが(国内で頑張る分には)絶対いいと思う

ちなみに医学部にいった友人の何人がむしろテック系に流れてきているという事情がある。

厨ニが溢れているので、しっかり解説してあげます

おそらく、増田はたしかに昔からプログラミングをやっていたと思う。頭もいいんだろう。厨ニが溢れていて気持ちが悪い。

エンジニア厨ニ病マウント取っていいていい時代でもないです。明らかにマウント取りたくてウズウズしすぎて、大した知識がないのに、

表面的な知識を羅列しているところがあったので突っ込んでいく。

~~誰にやらせてもデータベースにクソなDCLを飛ばせないから。逆に、データベースを触れることができるプログラマーリスク責任が大きいから、給料が高いのだよ

ー>そんなことない。フロントも色々やらないといけないが、バックエンドに比べて経験年数がひくい人も流れ込んできているので、バックエンドの人に比べて

できる領域が狭いので給与が低い、またおそらくDCL、DMLDDLといった用語を知っていることをひけらかしたかったのかもしれないが、全くどうでもいいです。

~~君はソフトウェアエンジニアになりたいのだろ?世の中は分業で成り立っているのだから、全部やろうとするやつはアホだよ

=>全部できようとして、破綻しているのでブーメランですよ。あなたの想定している、こんなフルスタックは成り立たない。

現場に放り込まれても10年ぐらいかかる。というより、フロントからバックからレイヤからモバイルまでやることはもはや現実的ではない。

~~おそらく QUIC か MQTT あたりだろ?逆にいえば、それが実装できたら他社と差のつけられるプロダクトだったはずだ。つまり会社利益の源泉であった部分をみすみす実装できないようでは、そこらへんの専門卒以下だぞ。

=>QUICとかマイナープロトコルを話すよりはちょっと変化球のあるプロトコルでいけばWebsocketぐらに抑えておきましょう。低レイヤーの話はわたしもわかりませんが、C言語ができないのに「おそらく QUIC か MQTT 」とか分かってない英単語文字を羅列するのは厨ニ病すぎます

~~プログラマーに徹するつもりだろうが、ツヨツヨエンジニアデプロイした経験から逆算してコード設計・開発をやるのだぞ。そうなると、CDN, DNS, WAF, S3, ログの出し方、メトリックス、異常検知、アラートを把握する必要があるのだぞ。そういうのを知るためには、ポートフォリオAWS GCP Azure といったクラウド経験を書くべきだと思うのだが、なぜしない?

=>自分cloudfrontやWafを触ったことがありますが、かなりのインフラエンジニアにならないかぎり、ここ触りません。cdnは影響範囲が大きいし設定に時間が掛かったりします。片手間でできません。インフラエンジニアに触らせます。異常検知、アラートといったものは、実は結構時間がかかるので、強いかどうかではなく責務の分割からインフラに任せます。知らないことは知らないって書きましょう

本当に医学生ならここ数年の技術についてこの指摘ができる程詳しいわけないし少なくとも10年位は業界にいないとこういう感覚は身に付かない。 」

~~たしかおかしいよな。Kubernetes や Terraform を弄って、CIGitHub Actions、CD には AWS CodeDeploy を使って、ブログは Jekyll で静的サイトジェネレータを使いつつ、自前のサービスを立ち上げるために Rails, Next, React, PostgreSQL, Redis, Kafka, Elasticsearch, S3 の勉強をしつつ、スマホ環境のために KotlinSwift を触れているなんて変だよな。そういえば、Docker が来るまでは Vagrant環境をつくっていたのも忘れてたよ。あと Rust を今年に学ぶ言語にするなんて、受験生にあるまじき行為だよな。うん。

=>こんなにあれこれ、やっている時間はないでしょう。趣味サイト製作でやるにしても絶対できてない。kubernetesを使っただけで時間切れになる。Kafkaを触ったとかいているが、Kafkaはサーバで使ったのかな?どういう利用シーンかというと膨大なログ収集等で使うのだが(ただのNoSQLではない)、Zookkeeperで調停させて、topic数とか調整するんだけど、わかってます?ElasticSearchだけ書いてたらまぁあるかなと思うけど。Redisちゃんと使えてる?pub/subとか分かってないと思う(普通に理解する必要あんまない)

それでkotlinなんて触ってる時間なんて絶対にないし、Rustを更に付け焼き刃に付け焼き刃している時間なんてぜええええたいにない。やることが絞り込めてない。無意味マウント取りたいだけ。なんとなく書いているcode deployなんて、それだけで使いこなすのが大変なれべる。

ci/cdのうちciだけかたっているならわかるがcdとなるとかなり時間がかかる

~~ストレージエンジンが切り替わるときカオスな目にあったけどさ

=>MyISAMInnoDBに切り替えるなんてことしているところは無い。万にひとつあったとしても、大事で、それだけで数ヶ月のものなので、この付け焼き刃の知識の人が触る機会はない。

~~TypeScriptNext と React を書く。もちろん JavaScript は ES2020 あたりまでは説明可能

=>ES2015以降の差分は微々たるもので、どうでもいいです。ES2018ぐらいの現実的数字にしてたらばれなかったのにね。

NextSSRまで踏み込む結構フロントのことをキャッチアップするだけでかなり厳しいと思いますが、できているのかな?

=====

~~アメリカでも「テック系はハードから避ける」

ー>アメリカ事情は知らないはずなので知らないことは書かないようにしましょう。

ー>ヨーロッパでは白人様はHRとかマーケやってます移民にたよってますロシアウクライナインドパキスタンなど

  なぜ、ヨーロッパ人が避けるかといと「やる気がないから」です。以上

※ちなみに防衛医大の補欠合格東大に入る人なら大体受かると思う

2021-07-08

anond:20210706022633

年収270万で)プログラマー引退して、医学部にきた俺が真面目に考えてやろう。

言葉は正しく使おう

真面目に読んでいて、ちょっと気になる箇所がある。たとえば PostgreSQL を postgre とか書くヤツは現場では嫌われるぞ。少なくとも postgres と書いてくれ。お里が知れるぞ。

プライドが高い

消えていくエンジニアの特徴だけど、叱責されたり馬鹿にされるのが嫌で VCSコミットしないヤツ、または貪欲コードレビューをされるのが嫌がるやつは、成長しない。

エリート意識

この業界は数年前には『デジタル土方』と揶揄される業界でした。ちなみに、アメリカでも「テック系はハードから避ける」という雰囲気でした。つまり何をいいたいのかというと、ソフトウェア開発者っていうのは「泥臭い領域」なんだよ。エリートとは程遠い場所にあるというね。

④ 「某天市場の先輩には,ここ仕事量少ないしオススメだよって言われたのですが,」

いやぁ、是非とも楽天で働くべきだよ。どうせ野村総合研究所とか NTT DATA なんて無理だと思うから

⑤「バックエンドは大体firebaseかgcpに任せているので,インフラあたりひいてはネットワーク知識が薄いです.」

うん、ココはまずい。基本的フロントエンドなんて給料が安いのよ。だって、誰にやらせてもデータベースにクソなDCLを飛ばせないから。逆に、データベースを触れることができるプログラマーリスク責任が大きいから、給料が高いのだよ。B4 になってもそれが理解できていないようだと、この先くらいよ。

⑥「後fpgaも少し.ハードウェア開発は結構苦手で回路図とか上手く書けません.」

君はソフトウェアエンジニアになりたいのだろ?世の中は分業で成り立っているのだから、全部やろうとするやつはアホだよ。

⑦「B3の夏くらいのタイミング東証一部上場企業インターンに行きました.」

インターン生はお客さんなの。君のスキル通用したのはすごいと思うけど、同じ感覚仕事はできないから注意しときなよ。

⑧「CSではないので受動に学ぶ機会も特になかったです」

なに言ってるの?そんなことは言い訳にならんよ。プログラマーになりたいのだろ?勉強しろよ。

⑨「Twitterとかで(主につよつよエンジニア達によって)エンジニアのべき論が語られているが,(以下略

逆にいうと、あなたインターンとして週3で20万円貰えていたのは、参入障壁が少ないからでしょ?強強エンジニアが生き残っているのは、それだけすごいということだよ。

⑩「仕事となると自分が扱ってこなかった技術を使わないといけなくて,扱ってこなかったということはつまり難しいということで.」

いやぁ、違うと思うよ。その問題が「難しい」なら切り分けて、上に「ココが自分能力では解決できないです」と持っていくだけなんだからさ。CS じゃないのだったら、仕事をするまで「扱わないまま」なんだよ?しかも、土日に勉強する気もないとなったらいつするのさ?

⑪「僕のようなクズと言われても仕方のない人材はどうしたら上手く(ストレスレス高収入の意)生きていけるのでしょうか?」

諦めなよ。ソフトウェアというものが「変化できることに価値がある」ものから。変化する業界ストレスフルだけど、立身出世する可能性が高いでしょ?安寧なばしょではないの。

⑫「今22歳,B4だ.Mまでは行く.Dに迷ってる.研究楽しいからです」

いやー、CSでない博士課程に行って、雇ってくれる企業があるかね?無いと思うけどな。

⑬「ネット実装例なんてクソの欠片も載ってないし,プロトコル理解のために特許資料論文をくまなく読む羽目になったのは本当に辛かったです.」

この時点で、君はコピペしかやってきてないことが理解できる。おそらく QUIC か MQTT あたりだろ?逆にいえば、それが実装できたら他社と差のつけられるプロダクトだったはずだ。つまり会社利益の源泉であった部分をみすみす実装できないようでは、そこらへんの専門卒以下だぞ。

⑭「html, css, javascript(jquery, express, react(next), vue(nuxt)), python, php, sql(postgre, oracle), graphql, ruby, swift, solidity, unity, c, c++ 業務レベルじゃなくていいならgo, kotlin, java, scala, dart, julia,(以下略

ムカつくというか、虫酸が走る書き方だ。箇条書きにすると、

⑯「プログラミングは17歳くらいから始めました」

プログラミングに年齢はないから。自分は9歳ではじめたけどね。

⑰「僕のつよつよエンジニアイメージを共有すると」

あー、俺も天才高校ときにいて、マーチ情報工学と旧帝の院の学費会社持ちという驚異的なやつがいたよ。今もブログ見てると、AndroidiPhoneアプリを書いているみたいで、元気そう。

⑱「つまり難易度が急に跳ね上がった.これが辛かったです...言語C++Java.」

それを上手にコントロールできるプログラマは世界中にもほとんどいねぇ。むしろ、月20万でやるもんならギルドから苦情が来るぞ。オレもアビームの人に給料を答えたら、「こんなヤクザ会社はやめろ」と耳うちされたよ。

結語

人より良い経験をしたいという願望はあるのは素晴らしいと思うよ。しかしながら、君が到達したノウハウ他人にもできることだからね。ワン・オブ・ゼムになりたくないなら、努力し続けることだな。勉強をするのをやめたら、数年で中卒に負ける世界からな。覚悟しとけよ。

追記

P.S. 医学部に来たのは家庭の都合だよ。それに、自己顕示しないと「場末コーダー」で読んでもくれないだろ?年収については、自分も低いと思うよ。なぜ低かったかというと、都内私立大学多浪中退自分にはベンチャーの皮を被った助成金搾取がメインの反社会的勢力フロントベンチャー企業ぐらいしか相手にしてくれなかったからだよ。そこの会社外国帰りの MDMA をキメて、未成年の子女に手を出しては警察沙汰スレスレのことをしているキチガイ社長をやっていて、人工知能を作ろうと学生インターン酷使している会社だったのだけど、「サイバーエージェントに紹介する」という嘘にひっかかって、特定派遣事業免許がないのに客先常駐させられ、土曜は帰社日、日曜は社長Python勉強会に参加させられる、というブラック会社にいてピンはね率(60%)となると、まともに考えることもできず働くアリになってしまってたからだよ。

P.S.年収については、初日から派遣先会社に引き抜きのオファーをもらって、2ヶ月後に新しい会社に移動したけど、300万だったので CodeIQ というサイト転職をする準備をしていたよ。たしかDMM とかサイバーエージェント面接にいこうとしてたような記憶。その後で家庭の都合で、医学部に来たけど。

P.S.医学部医学科の6年生だよー。みんなが嫌いな私立医学部だけどね。ちなみに、俺もこの大学が嫌いだ。

P.S. ④「GraphQLをわざわざ書くのは理解できるけどな。」そうだとすると、RESTSOAP も書かないとまずくない?書くのだったら「RailsNextデータ受け渡しにGraphQLを使った経験が」という感じだと良いと思うけど。

P.S. ⑤「野村総研データを挙げるあたりSI寄りの仕事してたのかな。 」ちゃうねん。オレっちは多浪たからさ、そこのエントリーシートをかけなかったのよね。まぁまぁ大学が名門でさぁ、OB が誘ってくれるけど、年齢で弾かれて辛かったねん。

P.S. ⑥「ダウト学費をどうやって稼いだんや 」えぇ、親の金です。だから家庭の都合でと書いてるじゃろ。

P.S. ⑦「本当に医学生ならここ数年の技術についてこの指摘ができる程詳しいわけないし少なくとも10年位は業界にいないとこういう感覚は身に付かない。 」たしかおかしいよな。Kubernetes や Terraform を弄って、CIGitHub Actions、CD には AWS CodeDeploy を使って、ブログは Jekyll で静的サイトジェネレータを使いつつ、自前のサービスを立ち上げるために Rails, Next, React, PostgreSQL, Redis, Kafka, Elasticsearch, S3 の勉強をしつつ、スマホ環境のために KotlinSwift を触れているなんて変だよな。そういえば、Docker が来るまでは Vagrant環境をつくっていたのも忘れてたよ。あと Rust を今年に学ぶ言語にするなんて、受験生にあるまじき行為だよな。うん。

P.S.年収については、基本給が 22万で、残業200時間超えたらプラスだった気がする。あと、反社ベンチャーは「ポートフォリオ作成にまる一ヶ月間で拘束された、しかも無給で」という時点でヤバいのだけど、その会社コミットしたのは「サイバーエージェントに紹介する」ということだけであって、同時期に DMM面接に行けそうだったのよね。馬鹿なことをした。

P.S. ⑨「特にフロントエンドを見下す感じとか」オレ自身フロントエンド出なんだよ。何を隠そう、Adobe Flashゲームをつくっていたから。それでもって言うよ、バックエンドが一番大切だと。

P.S. ⑩ 「相続税対策お疲れさんだな。」あたり。

P.S. ⑪「5~10年前に人売りに捕まった話とするなら、年収270万も現実味を帯びる。」特定派遣は消えてくれてよかったよ。俺のところは特定派遣すら未登録だったけど。

P.S. ⑫「いい医者になるのだよ 」うん、頑張る。「オッサン」「社会不適合者」「あるき方がキモい」「プログラミングwww」「同じ班になりたくない」「親も頭が悪い」「生きてて恥ずかしくないの?」とか言われてるけど、頑張る!

P.S. ⑬ 「フロントエンド別に給与低くないよ。」えっ、そうなの?WebDesigning を読む限りだと、400万もいかないイメージだけど。

P.S「医学部6年でまだプログラムに興味あるの不思議。」好きなんだよ、言わせるな///

P.S. GitHub なんやね。気をつけるよ。

P.S.フルタイムじゃないのでしょ?」いいえ、東京都内フルタイム(ひどいときで、朝7から24)でしたよ。入った会社が「法律よりも、派遣先評価」という会社だったからね。

P.S. サイバーエージェントさん、ときどき御社の社名を使って「弊社に恩を売ると、サイバーエージェントに紹介する」というベンチャー跋扈しているので、どうにかしてください。わたくし、1ヶ月間もその嘘で jQueryDjango を回収させられた挙げ句、月給 2000円だったのですけど。本当に千円札2枚だったのですけど。ついでに、AndroidJava) と iPhoneObjective-C)と jQuery を使ったフロントエンドシステムに、バックエンドRails + Postgresqlシステムで、AWS を介したサービスを作らされたのも「サイバーエージェントに紹介する」と言われたからなんですけど。いったい、何なんですか?お前ん所は、コンプライアンスどうなってんじゃ。

P.S. 「好きそうだし医学部卒業してシレッとgoogle行ったれ 」無理っすよ。オレのスキルじゃ。

P.S.病院は」親がクリニックを持っていたけど、潰したよ。クリニックは人に患者がついていて、アルバイトを充てがっても患者さんが不幸になっていくのをみちゃったからね。自分責任を持って患者さんを見たいから、バイトなんて使わないよ。

P.S. 自分コードを書きたいタイプだったから、SIer みたいな UML とか書いて下請けコードさせるみたいなのは絶対に嫌だったのよね。だから SIer にはならなかったよ。やっぱり、現実にある計算機解決できる問題を、より直接的に触れて解決したいと思っているから。仕事ハードでも全く問題なし。

P.S. FPGA すごいよね。ザイリンクスアルテラIntelAMD に買収されて、すごいと思ったよ。2010年頃だっけ?、CPU限界FPGA突破しようという話があったけど。手を出そうと思ったけど、高性能なチップ100万ぐらいして挫折した記憶があるよ。

P.S.東海大医学部学士」は自分大学卒業してないから無理でした。あと、それ以上の詮索はやめてくれ...

P.S.MySQLそんなに嫌いなのか。」そんなこと書いたつもりはないが、あれ?確かに MySQLPostgreSQL より嫌いたけど、それは Oracle が親元だったり、Unicode の扱いがファッキンだったり、ストレージエンジンが切り替わるときカオスな目にあったけどさ、MySQL は好きだよ。お世話になったし。

P.S. 給料については契約後に言われたのよ。というか、もともとは「サイバーエージェントに紹介」するという理由で、ポートフォリオ作成Django の改修を手伝ったつもりで、入社とかする気は全く無かったのよ。それが、いきなり他所会社面接を受けさせられて「君は明日からXXで働くから履歴書を書いてね」と言われて、抗議したら「俺に恥ずかしい思いをさせるのか!業界に入れなくするぞ!」と大声でシャウトされて、気がついたらあっちが用意した履歴書拇印してしまったのよね。有料職業紹介と派遣登録をしてない会社だったから、そんなかとはできないはずなんだけどね。ホームページには「年収550万」と書いてあったけど、実際はまったく違ったのだけどね。

P.S.「うーん、いらないかな。IT土方としての仕事しかないと思う。」だよな。おとなしく医者になるよ。ありがとう

P.S. Elasticsearch は全文検索機能がほしいからやってるよ。Redisインメモリセッションストアとして使いたいのよ。Kafka はさ、twitter のファボをじっそうしたいけど、RDB書き込み速度が上がらないから利用したいの。TensorFlow は全く理解できてないよ。それは、指摘されたとおり。

追記追記

逆に聞くけど、以下の知識があったらどれぐらいもらえるわけ?東京23区で。

2021-06-17

経験から1ヶ月でWeb企業就職する勉強法

取り上げた技術は、本格的な開発でも役に立つもので、最も学習コストが低いものを選んだ。

重要度が低いものは載せていない。たとえばHTMLCSSなんてググりながら書けば全く問題ない。Bootstrapなどのフレームワークも全くやる必要はなく、仮に就職先で使っていたら覚えればいい。

逆に言えば以下に挙げる技術は、そもそも概念自体プログラミングにとって普遍的ものであり、(基礎的な部分を)調べながら使うようではエンジニア失格ということ。

基本的現在では、バックエンドフロントエンド運用保守全てができないエンジニア価値は無い。

以下に挙げた技術(①⑤⑥は他の言語フレームワーク代替可能)が身に付いていなければまともな企業就職することは難しい(もちろん、下らない業務システム下請けで作ってる底辺企業には入れるだろうが)。

経験者でも、これらができない/わからないのは、相当恥ずかしいことだと思った方がいい。

特定言語フレームワークの書き方を知っていること自体意味は無い。

重要なのは、他の言語フレームワークにも共通する基礎を理解すること・保守性やセキュリティなどの品質を高める使い方ができること。

PythonJavaScriptマスターする

この2つは習得が容易だし、今覚えておけば向こう10年腐ることはないだろう。

プログラミング言語完璧理解する必要がある。

基本的な構文や、よく使う標準ライブラリは勿論、高階関数クラス・非同期処理等の発展的な機能も知り尽くしていなければならない。

言語のみではなく、パッケージ管理単体テストタスクランナー等の周辺ツールの使い方も熟知している必要がある。

また、「リーダブルコード」や「コードコンプリート」に書いてあるような良い作法も身に付ける必要がある。


Gitの基本操作を覚える

Gitを使えないのはプログラマーとして論外。細かい機能は調べればよいが、

等の基本的フローは必ずできなければならない。


Linuxの基本操作を覚える

多くの場合、本番環境テスト環境Linuxサーバーであるから、以下のような基本的概念と使い方を知っておく必要がある。


Dockerの基本操作を覚える

環境構築、CIデプロイなどは、現在コンテナを使って行うことが当たり前になっている。

これも細かいことをすべて覚える必要はないが、Dockerfileの書き方や、docker-composeの使い方などは知っておかなければいけない。


⑤ Flaskを覚える

Flaskは、数あるWebフレームワークの中で最も簡単。本当に呆れるほど簡単で、Pythonさえ書ければすぐにアプリを作れる。

フレームワークを覚えること自体重要なのではなく、Web開発の基本を習得することが重要HTTPルーティングデータベースSQL認証セッション管理などは当然すべて覚える。

データベースは、就職したらMySQLPostgreSQLなどを使うことが多いかも知れないが、今はPythonの標準ライブラリにあるSQLite3を使えば十分。

作ったアプリを公開したければ、「Heroku」などにデプロイするのが良いだろう。

追記 2021/06/17 14:07

ブコメで指摘をいただきました。HerokuではSQLite3は使用できないようです。公式ドキュメントに従ってPostgreSQL使用して下さい。

SQLite3はファイルデータを持てる簡易DBなんだけど、Herokuデプロイしてもストレージ的な使い方はできないから、結局PostgreSQLを使う必要あるから注意してね。(DAOを丸ごと書き換える羽目になる)

参考: https://devcenter.heroku.com/ja/articles/sqlite3

ありがとうございます

Vue.jsを覚える

今の時代フロントエンドフレームワークなしで作るのはただのバカ

2021年現在実用的なフロントエンドフレームワークはReactとVueしかない。Vueの方が少し簡単なのでこちらを選んだが、JavaScriptをしっかり理解しているなら大差は無い。

フロントエンドには膨大なパッケージ群があって全部覚えるのは大変だが、とりあえずまずはVue完璧に使えればいい。Webpackの設定などは既存のものを流用すればいい。



基本的アルゴリズムを学ぶ

アルゴリズムは全てのコンピュータ技術の基礎であり、絶対に知っていなければならない。

高速フーリエ変換のような高度な数学必要ないが、クイックソート木構造のような基本的アルゴリズムは当然、その性質を知っていなければならない。

それらは言語組み込み関数や標準ライブラリでも使われており、理解していなければ、それらの機能を正しく使うことができない。

また、プログラムを読み書きする際には、そのコード計算量を見積もれなければならない。

セキュリティを学ぶ

セキュリティは言うまでもなく学ばなければならない。

有名な脆弱性攻撃手法XSSSQLインジェクション・CSRFなど)が何だか理解していて、その対策実装できなければならない。

各種暗号化技術署名などについても、実装の詳細は知らなくていいが、共通鍵暗号や公開鍵暗号などの特性理解する必要がある。

認証パスワード管理などを実装する際は、当然ベストプラクティスに従わなければならない。

2021-01-01

メーカーSIer勤務の年収600万のプログラマー技術スタック

先に言っておくがたいした技術習得していない。

この程度でも600万は稼げるという夢を持つか、こんなのでもちょっと何かが違うだけで600万稼げるか否かが分かれてしま業界に闇を感じるか、600万程度で何ドヤってるの?と思うかはご自由にどうぞ(外資系ってもっと稼げるの?)。

歳は30台前半。学部卒。BtoB向けのパッケージ製品の開発プロジェクトで、設計コーディングテストあたりを担当している。仕様について発注元との折衝もやっている。

業務で使う技術のうち、自分自身がそれなりに習得しているものだけを書く。プライベートしか習得使用していない技術は別。


以上。

PythongitDockerkubernetesもAnsibleもCIツールAWSGCPRuby on Railsも知らなくてもなんとかなってしまっている。業務でこれらのスキル要求されることは(今のところは)ないから。

楽でいいと思う一方、このままだと将来ヤバいとも思っている。いざ転職となったときに詰みそう。

でもいざとなったらググっていくらでも独学できるだろうとたかをくくっているので焦ってはいない。

というか「その他」のところに書いた能力が高ければ世の中大体はなんとかなるんじゃないの。知らんけど。

ちなみに自分は構築できないというだけで、プロジェクトではJenkinsとかgradleとかbabelだかwebpackだかでビルド環境は整えられている。

あとプライベートで、単純な仕様独自言語コンパイラフロントエンドC++LLVMで作っている(これで金が稼げるとは微塵も思っておらず、完全にただの趣味)。

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