
はてなキーワード:Herokuとは
若手社員の要望でクラウドストレージを導入。ノートPC持って社外で作業する人も多いから、便利になると思った。
40代以上からは「メールで十分」「ログインとかめんどくさい」と不評だったので、エクスプローラーから直接使えるように自作アプリまで作って、それぞれのPCでAWSにマウントできるようにした。
導入から1年。
仲のいいおじさん社員が、USBにデータを入れて、車で1時間かけて別部署へ持ってきた。僕の目の前で。にこにこで。
もちろん悪気はない。むしろ「えらいだろ?」くらいの顔だった。
はあ。転職しようかな。
機械・車両管理(どこに何があるかダッシュボード表示、移動したらLINEやSMSで通知)
使ってるのはC++とかRailsとかPythonとかMySQLとか。インフラはAWS中心で、herokuで実験。LINEAPIとかNTTのCPaaSも叩いてる。
一人で社内システムを頑張ってたつもりだったけど
USBで運ぶおじさんの前では全部無力だった。
すっかりどこまで書いたか忘れた。
2021年の終わりに↓これを読んだあたりまでだったな。
「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」
すげーいい本だったんだけども、実際に活用する場がないんで(なにせ頭を使わない仕事なんで)読みっぱなし。
今考えるとよくないね。
実は、この本に出てくるD最適計画、それからサポートベクター回帰っていうやつが1年後くらいにちょっと役立ったのだけど、それは後の話。
「ゼロつく」のときは理解できなかったクラスの概念も、このころにはすっかり便利さを実感することに。
ここで、もう一度「ゼロつく」に戻ればよかったんだけど、ここまでくると、自分の仕事周りのデータに対しては深層学習って不要だなって思って、戻ることはなかった。
前のエントリで書いた放送大学で「Rで学ぶ確率統計」の単位を無事に取れて調子に乗ってたので、せっかく入学したのだからといくつか授業取ってみた。
統計とかプログラミングの勉強については、「データの分析と知識発見」「コンピュータービジョン」「データベース」の三つかな。
それとは別に人文系の科目も調子に乗って履修してる。もともと数学とか嫌いで歴史とかのほうが好きだし。
「データの分析と知識発見」ってのは、Rを使うやつで、今考えれば多変量解析の入門って感じ。
「コンピュータービジョン」はクッソ難しかったな。
OpenCVってやつの使い方をサクっとパパっと知れるんかと思ったら、ガッツリとエピポーラ幾何とかいうやつから入って行列三昧だったし。
線形代数を知らないエセ理系舐めんなよ!わかるわけねーだろ(今までの本でも行列を触ってきてたけど、雰囲気でなんとかいける、あるいは読み飛ばしてもそういうもんと思って次に進めた。うまく言えないんだけど、100次元とかあるともう諦めてそういうもんだって割り切れるじゃん?3次元くらいだと、ちゃんと現実に戻ってこれないと困るから、ホントに理解できてないのが自覚させられる)
「データベース」もお気楽にSQLマスターできるもんかと思ったら、歴史から入ってガッツリと三層スキーマなにやら、SQL触るのなんてちょびっとだった。
で、このへんでいろんな方向に手を延ばすのもだけど、1つ資格でも取ってみようかなと思って、統計検定に手を出してみた。
大学がエセ理系のポンコツとはいえ、高校出てるんだし大村平の本を読みまくったんだし、受かるだろと思ったが、2級初受験は58点で不合格。
すっかり統計学に恐怖が出てしまったので、2級リベンジの前に「Python3エンジニア認定データ分析試験」とかいうやつに挑戦。
こっちは、ホントに易しくて、統計学がわかってなくてもライブラリの使い方がわかればまあなんとかなるもんだった。
ほぼ満点で弾みをつけて、2級リベンジ。
今度は過去問を買って真面目に机に向かう。
自分、机に向かうってことが嫌いで、ひたすら通読を繰り返すやりかたしか勉強法を知らなかったんだけど、この時ばかりは体に叩き込む作戦。
電卓で計算しては、分布表を読んで、判定して、みたいなルーチンを体で覚えて、見事リベンジ。
しかし、統計検定2級も受からないくせによく、背伸びしていろんな本読んでたもんだよ。
たぶん、わかったつもりになってなんもわかってなかったな。
統計検定2級を取った勢いで、準1級とやらもとっちまうかと手をだしたら、テキストが超難しいの。
4章くらい読んで、挫折して、数か月寝かせる、みたいな感じを何度か繰り返すことになった(結局、準1級に受かったのは2025年になってからだ)。
準1級は、統計学以前に、微分積分とか線形代数の知識がないとテキスト読めない仕様。
日本統計学会公式認定統計検定準1級対応統計学実践ワークブック
「式変形については行間を読んで解釈してくれページの都合で次行くからよろしく!」
っていう感じ。
見事に挫折。
統計も、微分積分も、線形代数も徐々にってことで、準1級はいったん休止。
それから、バイオインフォマティクス技術者認定試験とかいう試験をみつけて、興味が出たので公式テキストをとりよせて挑戦することに。
バイオインフォマティクス入門 第2版
元々、生物系だったので、なんとなくわかる単語も多かったし(理系のくせに微分積分も線形代数もヘナチョコって生物系だって丸わかりかもだが)。
これが、ほどよく多変量解析から機械学習からいろいろ網羅されていて、いい勉強に。
重いもの運ぶくらいしか取り柄がない腹が出て禿てきたオッサンが、若い院卒様に頼られるって自己肯定感高まる良い体験。
そこで使ったのが、D最適計画とサポートベクター回帰。
まだまだ鼻くそのようなもんなのに、意外と頼られるっていうことになったんだけど、まあ多いのはデータの可視化だったんで、データの可視化を学んでみることに。
本当は、ggplotとmatplotlibとかplotlyを100本ノックしようと思ったんだけど、やっぱり急がば回れ、有名な教科書の和訳らしいので↓をチョイス
「データビジュアライゼーション ―データ駆動型デザインガイド」
すげーお堅いw
やっぱ、こころのどっかで、「チャっとやったらパパっとできる!」みたいなのを求めてるんだよな。
そんで、二冊目はもうちょっと実務的に↓を選んだ。
『データ分析者のためのPythonデータビジュアライゼーション入門コードと連動してわかる可視化手法 』
この本はかなり実務的、というかどうすればお手軽に可視化できるかって話だけなんだけど、おかげさまでキレイに見せるテクニックだけは上がり、職場でも評価は上々。
「なんかよくわかんないけどアイツに持っていけば綺麗なFig作ってくれる。ポンコツだからいつも暇だし!」
という状態に。
放送大学で「データ構造とアルゴリズム」とかいう科目を取ったおかげで、意図せずC言語と関わる。
二度とC言語を使うことなんかないだろうけど、グラフ理論がコンピュータと相性がいいのが、データ構造の勉強をしてよくわかった。
そんで、やっとこさ挫折していた統計検定準1級の勉強を再開する。
で、また数章読んで飽きた。
だって、難しいんだもん。
っていうか、線形代数と微分積分の学力不足で投げたことをすっかり忘れて、もう一度開いて投げ出すんだから世話ないわなw
仕方ないから、微分積分は高校三年生の使う黄チャートを買って目を通した。
線形代数は
を一周。
部分積分と置換積分を手足のように使えるようになってやっとこさ、統計学実践ワークブックを読めるように。
読めるようになってから読むと、因数分解くらいの感じでマクローリン展開してきてることがわかって草。
統計の勉強のリハビリにと、放送大学でも「統計学」という授業をとってみたけれど、統計検定2級より易しかった感じ。
プログラミングの勉強はほとんどしなかったけど、Githubのアカウントつくって、renderとかherokuでウェブアプリを公開したりした。
Gitを覚えてみて初めて分かる、「名前を付けて保存」以外のファイル管理を知らなかった自分のヤバさ。
続く。
入社して最初の仕事は「AWS認定ソリューションアーキテクト」の資格を取ることだった。
会社の先輩はAWSアカウントの管理だけで頭を抱えていて、俺は「クラウドってすごいんだろうな」と思っていた。
甘かった。
大学時代はPythonでちょっとしたWebアプリを作るのが楽しかったのに、今はIAMポリシーとSecurityGroupの設定で一日が終わる。
コードを書いているはずが、実際はYAMLとJSONばかり書いている。
先輩(30代)は「昔はサーバーにSSHして直接デプロイしてたんだよ」と言うけど、正直それの何が悪いんだろう。
デプロイ自体は確かに自動化されるけど、その仕組みを作るのに疲れ果てる。
Kubernetes?EKS?ECS?Fargate?Lambda?Step Functions?どれを使えばいいのか分からない。
友人はGCPを使っているけど、別の呪われた世界があるだけだと言っている。
Azureの話は聞きたくもない。
懐かしい感覚だった。「gitpushherokumain」だけで済んだ。
こんなに簡単だったのか。
herokuの料金は高いってよく聞くけど、精神衛生上の価値はある。
最近のスタートアップでは「NoOps」とか「クラウドレス」みたいな言葉が流行っていると聞いた。
Vercel、Netlify、Railway、Fly.ioなどを使ってインフラをほぼ考えずにデプロイするらしい。
もしかして、クラウドの複雑さに耐えられなくなった開発者が増えているのかもしれない。
いや、きっと俺のスキルが足りないだけだ。「クラウドネイティブ」になるべきなのだろう。でも正直、モノリスに戻りたい気持ちもある。
きっと、単純なものが複雑になりすぎたんだ。
1年前:「かゆうま」みたいなノリで匿名日記を書くサイト作って2年が経った
去年の投稿で「来年の今頃はマスク着けないがスタンダードになっているかもしれない」と書いていたが、3月13日からマスク着用ルールが緩和され、街中ではノーマスクの人が増えてきた。
2022年10月には水際対策も緩和され、外国人旅行者もよく見かけるようになった。(なんなら月2,3回くらいは道を聞かれるようになった)
5月8日にはいよいよコロナの扱いがインフルエンザなどと同じ「5類」に移行するとのこと。
自分はこの時季はまだ花粉症があるのと、正直直近1ヶ月でまた感染者数が増えてきており、周囲でも4月に罹患した人がいたなどもあり、マスクを付けておいたほうがよさそうと思い付けているが、今後は付けない人が増えていくのだろう。
サイト的には、2022年8月末、サイトを乗せてるサーバーだったHerokuが11月末で無償プランが廃止することが発表され、サーバー引っ越しをした。
一瞬、これまで無償でお世話になってきたし、素直にHerokuの有償プランに切り替えることを考えていた。
しかし、9月入った頃に1ドル140円を突破して、「これ1ドル200円近くまでいくのでは!?」という勢いだったので、ドル払いのHerokuは厳しいなと思い引っ越しを決意。
さくらVPS、10年くらい前に使ったときは利用開始まで1,2週間待つ必要があったり、管理画面も使いづらかった記憶だった。
それがネットから申し込んだら即使えるし、管理画面からワンクリックで初期設定できたり管理画面からセキュリティ設定できたりと便利になってた。
というのも元々HerokuのURLをそのまま使っていたのだが、Herokuから引っ越しをするので独自ドメインを取得する必要が出てしまったのだ。
最初は covid19-kayuuma.com あたりにしようと思ったけど、なんかスッキリわかりやすい名前にするのも違う気がした。
いろいろ考えてた結果、enigmatic-brushlands-82725-herokuapp.com を取得した。
旧URLが enigmatic-brushlands-82725.herokuapp.com で、.herokuapp を-herokuapp に変えた。
怪しさ満点のいいドメインが取れた。
正直「URL変更で日誌を書き込む人・読む人も減ってしまうかな…」と懸念していたが、引越し後も変わらず書いてくれる人・読みにきてくれる人がいて本当に感謝です。
「仕事でもないのにサーバー引っ越しで頭悩ませたり、毎月サーバー代払うって、そのモチベーションはどこから来てるの?」
と聞かれた。
たぶん広告貼ったり、ほしいものリストを作って載せるとかが面倒というのが一番大きい。
「それでいい、楽しいから」――7万人の町「GREE」を一人で作ってる会社員:ITは、いま -ITmediaNEWS
https://www.itmedia.co.jp/news/spv/0407/30/news006.html
GREEがまだ会社になる前の、個人サイトだった頃の田中良和さんのインタビューだ。
など名言の宝庫だ。
「趣味でインターネットサービス作る人がいていいじゃない」
と言い続けられたらいいなという思いがモチベーションなんだろうなと思った。
記事最後の田中さんの笑顔が好きで、自分もこんな笑顔でサイトを続けていけたらと思う。
COVID-19流行下の日々を集団で記録する日誌https://enigmatic-brushlands-82725-herokuapp.com/
3年前:「かゆうま」みたいなノリで匿名日記を書くサイト作った
2年前:「かゆうま」みたいなノリで匿名日記を書くサイト作って1年が経った
salesforceが絡んだ開発というのがある。
昔からあったのかはよく知らないが、Herokuを買収(https://www.rbbtoday.com/article/2010/12/10/72742.html)してからこういった話は増えたのではないかと思っている
Herokuを買収することで何が起きたか。端的に私(一人のエンジニア)の意見を言わせてほしい。
salesforceは「HerokuConnect(https://devcenter.heroku.com/ja/articles/heroku-connect)」という武器を手に入れた。
これは、salesforceで管理しているデータをHeroku Postgresに連携(同期)させるというもので、つまりは、salesforceで管理しているデータを用いてHeroku環境を構築できるようになったのである。
Herokuでできたことは何でもできるから、WebサイトでもAPIでもなんでも作ることが可能だ。
SaaSとして完成された管理システムを提供しつつ、「カスタマイズでアプリケーションを作れますよ」と言えるようになった。
最高の売り文句を手に入れたと言っても過言ではないかもしれない。
問題は、(Herokuの)カスマイズ開発を一切salesforceがやらないことである。
技術的質問をしたいと言ったら、カスタマーサービスだかe-Learningだか紹介して終わり。
「Herokuを使う」という厄介な制約だけつけて、自分たちはドロンだ。
何の巡り合わせか開発することになった者たちはたまったもんじゃない。
カスタマイズできたとしても、自分たちは「カスタマイズできることも含めたSaaS」を売ることしかしないのである。
それだけでも苛立ちがあるのだが、さらに嫌になるのは「Herokuという技術の特殊さ」だ。
これをたまたま読んだ人は「HerokuConnect」なんて果たして聞いたことがあっただろうか。
dynoだとか、Herokuの料金体系だとか分かるだろうか。
それ相応の専門知識がなければ、開発も運用もままならないのである。
学べばいいだけというのは事実だろう。
けれど、学んで何になるのか?
2022年、「アプリケーション開発しよう」となったときに、SupabaseでもFirebaseでもAWSでもなくHerokuを選択する理由がどこまであるだろうか。
Herokuの無料プラン(https://blog.heroku.com/next-chapter)が無くなるという昨今は、尚のことだ。(Herokuを知らないエンジニアも今後増えるのだろう)
むしろ、saleseforceが絡まなければ選択する理由が思いつかないまである。
それでも、「学ぶことには意味がある」と言う人がいるかもしれない。
私もHerokuに個人のポートフォリオをデプロイしたことはあったし、Heroku自体が嫌いとまでは言わない。
けれど、Herokuを学ぶことでsalesforceの奴隷になるのであれば、私の答えは「No」だ。
Herokuに関わる求人を出している企業は、おおよそsalesforceから案件投げられている企業なんじゃなかろうか。(証拠があるわけではない)
エンジニアから言わせれば、大企業salesforceにいい顔するために利用されているようにしか思えない。
大して汎用性のある知識じゃないものを学んで、しかもsalesforceの顔を立てる気苦労をして、その上、実際の開発は放り投げら
こんなこと、やり続けたい人などいるんだろうか。
salesforceからしたらエンジニアなど末端の人間なのだろうが、末端の人間のモチベーションを軽んじる仕組みに気付くべきだと思う。
そのまま無視するなら、仕事を受ける企業は段々と先細りしていくとしか思えない。
丸投げで、salesforce自身もトラブルを被っていたっておかしくないはずなのだ。こんな座組みでトラブル0だったら逆にびっくりだと思う。
Heroku(HerokuConnect)の恩恵を一番受けているのはsalesforceなんだから、salesforceが開発部隊を持って、受託開発するのが一番ではないか。
理由付けなり何でもできるだろうし、自社独自の技術だと誇りにやったらいいじゃないか。
お金のほしい経営者は知らないが、エンジニアからしたらプラットフォームを押し付けられるのは迷惑である。
この記事を見てびっくりした。
https://laiso.hatenablog.com/entry/nope-sql
まずビックリしたのは「DBってそんなにお金かかる?」という点。
俺は1日100万PVほどのエロサイトを運営しているが、WEBサーバ1台、DBサーバ1台、画像サーバ2台で動いているぞ?
VPS4台で月額6000円くらい。
次にビックリしたのは、個人開発なのに難しそうなDBサーバを使っている事。
「Cloud Firestore」「Amazon DynamoDB」「MongoDBAtlas」
↑俺、全部知らない。。。
でもそれって、大規模サイト向けじゃない?
そりゃー、本業でこうしたDBを使っていて、それを個人でも~、ってのは分かる。
けど、こうしたDBは総じて高いよね?
>Render $7/month〜
>PlanetScale $29/mo〜
>Supabase $25/mo〜
うん高いね😂
VPSでよくない?
そもそもだけど、個人サイトの初期なんて、VPSですらオーバースペックじゃない?
まとめ
やたら難しそうなDBが増えたよね。
なんだかカッコいいし、業務で必要だし、トレンドなのはわかる。
けど、個人サイトにおいて「それが最適なの?」と言われると、95%くらいのサイトで「違うよね」となる。
個人サイトなら「さくらVPS」「conoha」「さくらレンタルサーバ」などで事足りる。
十分じゃね?
あと、「メンテナンス時間とコストのトレードオフも」って書かれてたけど。
バックアップとか?
それならcronで自動化しとけばよくね?
ほっといても勝手に動いてくれる。
Permalink |記事への反応(24) | 21:18
[前回](https://anond.hatelabo.jp/20211221045059)
全員が経営陣と友達ということもあって、大学の仲が良い研究室とかサークルみたいなノリ
会社のwebページにはベタだけど、肩を組んで笑っている写真が載っていた
資金調達も上手くいっているようで、当時としては結構良い額の給料を貰えた
CEOはプロダクトも無いのに講演会とか取材に応じていて、界隈では少しだけ話題になっていたような気がする
自分には凄いキラキラして見えて「この会社はきっと有名になる!」って何の根拠もなく思ってたw
資金調達は順調に行えたが、プロダクト開発は順調とは言えない状態だった
まず仕様が決まらない(そもそもコンセプトからして無いのだから当たり前だがw)
そのくせ、CTOはやたら可用性や表示速度を気にしているようだった
自分はRailsとPHPのスキルしかないため、herokuとか、EC2に立てて様子を見ようと提案したが、
議題は目標が無いまま細かいシステム構成だったりフレームワークの選定に終始した
続き
PythonのフレームワークであるFlaskのソースコードが讀む必要があつて、公式リポジトリを調べる爲に「FlaskGitHub」で検索したんですよ。
さうしたら、【Heroku】GitHubで作成したFlaskアプリをHerokuに連携させる - Qiitaと云ふ記事が目に留まつたんですね。
これはおかしい言葉遣ひだな、と思ひました。だつて、GitHubはソースコードのホスティングサーヴィスであって、「Flaskアプリ」を作る機能は持つてゐないのですから。だから、「GitHubで作成したFlaskアプリ」などと云ふものは存在しない。
ところが、ふと後から思ひ返して見ると、もしかしたら筆者の意圖は違ふんぢやないか、と思つたんですね。つまり、「GitHubで」は「作成した」にかかるんぢやなくて、
GitHubで(作成したFlaskアプリを)Herokuに連携させる
のやうに、「GitHubで」は「連携させる」を修飾するんぢやないか、と思つたんです。
この「作成した」は、何かのtoolを用ゐて作つたと言つてゐるのではなく、英語の「You」のやうに、不特定の人の動作を表してをり、そして、「GitHubで〜連携させる」は、「GitHubのDeploy機能を用ゐて連携させる」と云ふ意味だと考へれば、辻褄が合ひます。
より分かり易く書けば
https://anond.hatelabo.jp/20210617075257
上がってるような基本(元増田に上がってるやつの倍ぐらい)が全部立ち上げからできて
2〜3個プロジェクト経験したらテックリードの素養が既に身についてそう。
プロジェクト的にもどっちかが弱いと
Rails/DjangoにjQuery+Bootstrapみたいな構成や
Amplify/FirebaseにVue/Reactみたいな構成も全然あるので
面接はなんとか抜けてもらうとして、
チーム開発での最低限の目標としては、
成果物から、指導、学習コスト、レビューコスト、技術的負債、マネジメントコストを引いた分が正になっていれば
ひとまず「チームに居ていい人」と見なされそう。
チーム的に良くても、経営層にそれで許されるかはわからんのでその辺の立ち回りも上手いことやるとして、
一旦は、正の生産性を目指してほしい。
以後、ブコメで誰一人一ヶ月でできるって言ってなくて笑うので、
一ヶ月というのは無視して、三〜六ヶ月程度をイメージしつつ書いていく。
似たような言語なのでどっちからやってもいいし、両方同時にやってもいい。
どっちかしかやらないならJavascriptがおすすめ。後ででてくる、Flaskは適当にExpressとかに置き換える
現場だとほぼTypescriptなので、Javascriptはある程度慣れたらTypescriptに移行したほうがいい。
どちらも、Python2とES2015以前の記法というレガシーがネット上に転がってるので参考にしないように注意。
・一貫性があって
・正しい書き方がされた
お手本プロジェクトをなにか(githubや書籍など)で手に入れて読むべき。
おそらくフレームワークに乗っかっているので並行して進めることになる。
話の流れで先にこっち
現在のコーディングのグッドプラクティス、デザインパターンはフレームワークの形をしている。
なので、ReactとVueをその思想から理解しきれれば、プログラミング言語の潮流の最先端に追いつけるはずだ。
TypescriptもVue.jsも書き方をどこまで取り入れるかが使用者の裁量に任されてるし、
開発でVueとReactのどっちを使うかはチーム次第なので、
一旦React+Typescriptでガチガチに書かれたコードプロジェクトを拾ってきて、必死で解読するのがいいと思うなー。
2割ぐらいわかった気になればチーム入ってから(React,Vueどちらだったとしても)動けそう。
パッケージとかテスト、タスク&デプロイ辺りもこのタイミングで拾ってきたプロジェクトを使って学ぶ。
バージョン管理とコンテナの思想が優れているのは自明なので、これらはツールと見ていい。
そして、後からプロジェクトに入った人がプロジェクトの流儀に沿って使う分には難しいことはなさそう。
採用に来た人がgitとかわかってるとチーム開発経験者だなーって思うし、知らないと未経験者なんだなーって思うし、
そういう意味ではチーム開発の経験があるかどうかの試金石にはされてそう。
構築できる、ではなく、触れる程度で良さそう。
gitはプロジェクトの流儀によると書いたが、git-flowのイメージ図を理解して運用できるのがよい。
https://qiita.com/KosukeSone/items/514dd24828b485c69a05
こういうのができるんだなーって言うのを知っておいて、調べつつ書ければ十分。
あとはシェルスクリプトとかって思ったけど同様のことはPythonでもできそう。
地味にSSHでログインした先の環境だと、vimが主要なテキストエディタになるので
vimを最低限触ることだけ要りそう。もういらないかもって思ってたんだけどなー。
→ファイル開いて入力モードに切り替えて書き込んで保存して終了
細かく書いたが、LPIC-1の範囲がほどよくまとまっているのでそっちを参照するとよい。
これが意図なら
この辺の機能を持った小規模Webアプリを作ってHerokuでデプロイすれば一旦完成とみなしてよさそう。
コード書き写しただけにならないようには注意しつつだけど、長く見て5人日ぐらい?
慣れると1日あればいけると思う。
フレームワークもなんでもいい。
Djangoとかでも各コンポーネントがどんな働き方してるか程度はわかるだろうしそれで十分。
余力があれば複数個触ってみたり、人から勧められたらそっちでも。
最近はサーバーレス&NoSQLが流行ってるのでFirebaseとかもやればいいと思う。
に尽きる。
計算量を気にしなかったせいで線形検索メソッドとfor文を組み合わせて
それらに対して分散や非同期処理で解消しようとするとか、
ちょっとでもアルゴリズムを触った人ならアホらしいなって思うような行為を
計算量を意識するだけなら、AtCoderのABCのC〜D問題辺りが解ければ十分。
有名な脆弱性や攻撃手法は、ほとんどフレームワーク等で解決手段が用意されている
のでアドリブをせずに正しい書き方でやれば良い。
開発現場でもセキュリティリスクがある箇所を1から自前で実装することを経験が浅い者にはやらせないので、
ただただ、フレームワークが正しいとしているやり方をなぞるのが良い。
開発の勉強のやり方としては、
・正しいコード見本を手に入れること
この辺りの習慣があればやってけんのかな、
その他、チーム開発って面では
TeamGeek(人間性)とかインプットしておくと共通言語が増えて嬉しい。
この方向で進めてけば、その途中で正の生産性≒足引っ張らないぐらいになれるので、
そしたらやってけるんちゃうーって感じ。
取り上げた技術は、本格的な開発でも役に立つもので、最も学習コストが低いものを選んだ。
重要度が低いものは載せていない。たとえばHTMLとCSSなんてググりながら書けば全く問題ない。Bootstrapなどのフレームワークも全くやる必要はなく、仮に就職先で使っていたら覚えればいい。
逆に言えば以下に挙げる技術は、そもそも概念自体がプログラミングにとって普遍的なものであり、(基礎的な部分を)調べながら使うようではエンジニア失格ということ。
基本的に現在では、バックエンド・フロントエンド・運用保守全てができないエンジニアに価値は無い。
以下に挙げた技術(①⑤⑥は他の言語やフレームワークで代替可能)が身に付いていなければまともな企業に就職することは難しい(もちろん、下らない業務システムを下請けで作ってる底辺企業には入れるだろうが)。
経験者でも、これらができない/わからないのは、相当恥ずかしいことだと思った方がいい。
特定の言語やフレームワークの書き方を知っていること自体に意味は無い。
重要なのは、他の言語やフレームワークにも共通する基礎を理解すること・保守性やセキュリティなどの品質を高める使い方ができること。
この2つは習得が容易だし、今覚えておけば向こう10年腐ることはないだろう。
基本的な構文や、よく使う標準ライブラリは勿論、高階関数・クラス・非同期処理等の発展的な機能も知り尽くしていなければならない。
言語のみではなく、パッケージ管理、単体テスト、タスクランナー等の周辺ツールの使い方も熟知している必要がある。
また、「リーダブルコード」や「コードコンプリート」に書いてあるような良い作法も身に付ける必要がある。
Gitを使えないのはプログラマーとして論外。細かい機能は調べればよいが、
多くの場合、本番環境やテスト環境はLinuxサーバーであるから、以下のような基本的な概念と使い方を知っておく必要がある。
環境構築、CI、デプロイなどは、現在コンテナを使って行うことが当たり前になっている。
これも細かいことをすべて覚える必要はないが、Dockerfileの書き方や、docker-composeの使い方などは知っておかなければいけない。
Flaskは、数あるWebフレームワークの中で最も簡単。本当に呆れるほど簡単で、Pythonさえ書ければすぐにアプリを作れる。
フレームワークを覚えること自体が重要なのではなく、Web開発の基本を習得することが重要。HTTP、ルーティング、データベース、SQL、認証、セッション管理などは当然すべて覚える。
データベースは、就職したらMySQLやPostgreSQLなどを使うことが多いかも知れないが、今はPythonの標準ライブラリにあるSQLite3を使えば十分。
作ったアプリを公開したければ、「Heroku」などにデプロイするのが良いだろう。
ブコメで指摘をいただきました。HerokuではSQLite3は使用できないようです。公式のドキュメントに従ってPostgreSQLを使用して下さい。
SQLite3はファイルにデータを持てる簡易DBなんだけど、Herokuにデプロイしてもストレージ的な使い方はできないから、結局PostgreSQLを使う必要あるから注意してね。(DAOを丸ごと書き換える羽目になる)
参考:https://devcenter.heroku.com/ja/articles/sqlite3
今の時代、フロントエンドをフレームワークなしで作るのはただのバカ。
2021年現在、実用的なフロントエンドのフレームワークはReactとVueしかない。Vueの方が少し簡単なのでこちらを選んだが、JavaScriptをしっかり理解しているなら大差は無い。
フロントエンドには膨大なパッケージ群があって全部覚えるのは大変だが、とりあえずまずはVueを完璧に使えればいい。Webpackの設定などは既存のものを流用すればいい。
アルゴリズムは全てのコンピュータ技術の基礎であり、絶対に知っていなければならない。
高速フーリエ変換のような高度な数学は必要ないが、クイックソートや木構造のような基本的なアルゴリズムは当然、その性質を知っていなければならない。
それらは言語の組み込み関数や標準ライブラリでも使われており、理解していなければ、それらの機能を正しく使うことができない。
また、プログラムを読み書きする際には、そのコードの計算量を見積もれなければならない。
セキュリティは言うまでもなく学ばなければならない。
有名な脆弱性や攻撃手法(XSS・SQLインジェクション・CSRFなど)が何だか理解していて、その対策を実装できなければならない。
各種暗号化技術や署名などについても、実装の詳細は知らなくていいが、共通鍵暗号や公開鍵暗号などの特性は理解する必要がある。
認証やパスワード管理などを実装する際は、当然ベストプラクティスに従わなければならない。
Permalink |記事への反応(37) | 07:52
記入する項目の例
「やりたいこと、興味のある仕事・分野」記入例
開発環境について触れる
今まで小さなチームでインフラからフロントエンドまで全てを担当してきたが、次は少し大きなプロダクトでバックエンドのパフォーマンス改善に挑戦できるような環境で仕事がしたい。
------------------------------------------------------
興味のある分野・領域について触れる
Railsアプリケーション設計・開発から、Heroku,AWS,GCPなどのインフラ構築もできるような、Webアプリケーションエンジニアになりたいと思っています。興味のある分野は、医療・健康などです。現在転職活動中です。 ------------------------------------------------------
より具体的な記入例
例1
#目標 新しい技術に柔軟に対応できるようにしたい 自社開発のサービスに携わり、常に機能の改善・拡張を考えながら開発がしたい
# 興味のある仕事 自然言語処理や画像分析など、データを扱うアプリケーションの開発
#転職先に求めること 新しい技術に対して敏感に反応し、プロダクトにマッチする場合はどんどん導入してゆく風習があるような職場で働きたいです。
自分はプログラミングほぼ未経験(大学の学部時代にCのコードを写経して動かすと単位がもらえる謎の講義に出たことがあるぐらい)の状態から、社会人になってから独学でPHPを勉強していわゆるweb系のソフトウェアエンジニアに転職した。以後8年近くソフトウェアエンジニアとして働いている。
初心者向けのプログラミングスクールの話題が尽きないが、スクールに通わなくても独学でもなんとかなった自分みたいのもいるよ.という例を紹介してみたい。このエントリがプログラミングに興味がある人の役に立てば幸いである。昔の話なので出てくる話題が古いのはご勘弁いただきたい。
なお、web系のソフトウェアエンジニアになる前は、上流系SIerでExcelと顧客折衝をがんばるSEをしていた。基本情報ぐらいは持っていたがコードを書く業務は一切なかった。