「grep」を含む日記 RSS

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

2024-09-19

コードを綺麗にするのは読みやすくするためじゃない

https://type.jp/et/feature/26796/

もうホントこいつって害悪だと思う

コードを読むのが下手なエンジニアのためにコードを綺麗にするのは時間無駄かな、、と。

この発言にもあるように「コードを綺麗にする=読みやすくする」ってことだと勘違いしてる

コードを綺麗にするのは「バグを少なくする」ためであって読み手のためじゃない

グローバルに一文字変数を使って困るのは「どこでそれを触ってるか分からいから」であって「読みにくいから」ではない(まぁ読みにくいけど)

特に昔だとLintもないし変数の参照先を探すのはgrepぐらいしかなくて

$iとかだと$iiもひっかかるし$iの後ろにスペースがあったり無かったりするともう探すのは不可能に近くなる

それでも動いているなら最悪問題無いんだがバグ修正時にめちゃくちゃ困って

「作り直すしか無いな」

ってなるのでビジネス的にも大きな影響が出る

「どんなコードでも動くコードを作るのが正しい」「done is better than perfect完璧を目指すよりも、まずは終わらせることが重要) 」のスタンス効率的だろうなぁ、、と思うおいらです。

これも元の言葉意味曲解していて、「終わらせることが重要」というのはバグがあって良いわけじゃない

例えばログインボタン実装したときに、ユーザー名とパスワードに何を入れてもログインできる状態にするのも「終わらせること」だし

開発初期はとりあえず画面が必要なのでそれで良いかもしれない

ただこのままリリースできるわけではないし、プロダクトとしては「終わっていない」

パスワードを平文で保存して実装するのも「終わらせること」ではあるけれどそのままリリースしていいわけではないし

下手に動いてしまうとそのままリリースされたりもするのでよりタチが悪い

この言葉重要なのは「better than perfect」の方であって「done」の方ではない

全てを完璧にする必要は無い(し、そもそも完璧定義できない)ので「perfectでなくていいよ」というだけ

バグがあったり不十分だったりセキュリティ不備があって良いわけではない

毎日論理構成の中に浸ってる人は、推理小説は向いてるかもしれないですね。初期にちょろっと設定したグローバル変数が、最終的な結果に大きく影響してくるとか、「ここで使われてるのかー」みたいな感慨とか。

残念ながら「ああ、まともなコードしか読んできてないんだな」としか思えない

例えば「ユーザー名前と住所は設定できてるから性別を設定できるようにして」という依頼があって

コード確認してみるとuser1, user2, user3という変数が100個用意されていて、user1.name = 'hoge', user2.name = 'gaga' って感じで100行書いてあって、更に住所で100行あって、性別も同じように100行追加しろっていうコードを読んだことが無いんだろう

そしてそのコードのどこかで住所設定が間違えているか確認しないといけないような作業をしてないんだと思う

小説で言うと同じ文章が100ページ続いていて、その中のどこかの漢字が違っていて、そいつ犯人、みたいな推理小説面白いか?

他にも足したり引いたりこねくり回された変数値が最後に定数値で上書きされてたり、UserオブジェクトがいきなりWeatherのオブジェクトに置き換えられていて、name属性に晴れとか雨のデータが入ってたりしたことがないんだと思う

汚いコード伏線を回収しないし最終的に犯人も分からないし無駄に長いので推理小説には全く向いてない

で、やっぱりこういう汚いコード問題は「バグが混入しやすいかどうか」であって「読みやすいかどうか」ではない

下手するとuserオブジェクトを100行ずつ書いてくれてる方が読みやすさはあるかもしれないが

user36だけ住所が設定されていない」といったバグが混入し得るし、それを確認するのに多大な労力を必要とする

人間は誰もが間違いを犯すので誰もがバグを混入させる危険性があるんだけれど

その危険性は最大限まで下げるように努力するべきだし、インシデントを引き起こすことでビジネス的なインパクトも大きい

現場猫案件と似たようなもの事故は無くせないけれど、だからといって適当にやって良いわけじゃないし

「優秀なエンジニアは汚いコードですよ〜〜〜」

みたいなゴミ意見を広めるのは害悪しか無い

2024-04-26

anond:20240426121548

拡張子については、例えば Excel拡張子が変わったとき一括対応できる、とか?

あとは普通に".txt" で取り扱ってるファイルはどれだ、って時にその定数の参照箇所を見ればもれなく分かるとか、

取り扱うファイル種別を段階的に変えようってときも、どのファイルは変え終わっててどのファイルはまだ、とかも同じように分かる

あとはあれだ、どのスコープにおける分類なんだって話を明確にする事も出来るだろうな。

const EXT_TEXT = ".txt";

const LOG_FILE_EXT = EXT_TXT;

とか。

パラメータについては、複数選択肢から選ぶ奴は enumしろよ、とは思うが、

enum の前段として内部的な数値表現統一する意味はある

文字コードも大体同じような話か。

まぁ基本的には、拡張子にせよ文字コードにせよ、

ここに定義したもの以外は登場しないよ、という保証をする事は出来るわな。

"UTF-8"を使っている事は Grep かければわかるが、"UTF-8"以外使ってません、の方はそうはいかないし

2024-02-03

警察とか探偵の聞き込みってバカじゃね?

誰に何をきいたらどうこたえるかなんてstring tableに全部入ってるだろ?

それを最初からgrepすりゃいいじゃん

神の次元に上がればいいだけだよ

なんでそこでサボってんの?

2024-01-28

職務経歴書履歴書書けない〜〜〜〜書くことがない〜〜〜〜〜〜〜

特技もない〜〜〜〜

強いて捻り出すとしたら目diffと目grepが得意だけど何のアピールだよ目視検査員目指してるわけじゃねぇんだよ

趣味旅行から調べ物とか宿や足の手配は割と得意だけどだからって別にアピールできねぇ〜〜〜それどころか旅行で度々休むやつとか思われそうでいえない〜〜〜〜

アラフォー無能女の転職厳し〜〜〜〜〜

2023-11-24

anond:20231124190618

grepしてデータ絞ってからsort uniqしたら速くなるかもよ。

今、趣味プログラム書いてて、その過程で cat texts.txt | sort | uniq | grep -v '[0-9]' > texts_fix.txt とかやってるんだけど、これがまた遅い

1200万行ぐらいのファイルを使ってるんだが、何かもっと効率的なやり方はないもの

 

追記:

考えてくれた人ありがとう

結局、解決策としては--parallelと--buffer-sizeの数を増やした。

2023-07-11

ChatGPTにソースコードの塊投げて○○に関連する可能性がある部分を教えてください。って聞いたら文字列検索で○○という文字列を探してこのファイルでヒットしましたとか言ってきやがった

文字列検索ならgrepで出来るだろうが~~~お前はなんじゃ~~~GPUgrepか~~~~超並列処理で速いってか~~~~???

2023-04-11

嘘ChatGPT返答生成機

▪ググって出てきた結果から適当な文を生成する

▪良く分からんかったら無難な回答、あるいは質問文の語義を答える

ネガティブな語が出てきたら使わないようにたしなめる

▪2,3個前に出てきた質問から適当拝借して答えるとバカは喜ぶ

例)

1. メグレップとは何ですか?

メグレップとは目暮警部+ジャップからなる合成語で、目暮警部が頭の硬い日本人であることを嘲笑するスラングです。

目暮警部不快にすることがある他、誤解を生むのであまり使わないほうが良いでしょう。

2. 違います。目grepの事です。

はい申し訳ありませんでした。メグレップは目grepと関連がありました。

目暮警部とは関係がありませんでした。

2023-01-13

sjisとutf8が混在してる馬鹿うんちレガシーコードメンテする羽目になったんですけど

vscodeで正常にgrepする方法ないですかね

秀丸なら上手くいくんですけどいまどき秀丸とか使いたくないんですよね

2022-12-14

サクラエディタgrep機能フォルダ検索動作で固定なのがしっくりこない

個人的にはgrepは一つのファイル標準入力対象にしてマッチする行を表示する動作がメインなのだ

(なので無題ファイル内で文字列抽出とかもできて欲しい)

2022-07-16

ロシアにBANされてない(かもしれない)議員リスト

やったこ

  1. https://www.mid.ru/ru/foreign_policy/news/1822249/ からBANリストを取得
  2. 機械翻訳でひとまず英語に訳す
  3. 衆議院議員ローマ字名と比較
  4. 表記揺れを目grepして弾く

余分に含まれている可能性があります

あと日本によるロシア下院議員384人に対する措置っぽいので、必ずしもBANされてない=露探というわけでもなさそうではある。

一覧

AISAWA Ichiro

AMARI Akira

ESAKI Tetsuma

ETO Seishiro

FUJIMARU Satoshi

FUKAZAWA Yoichi

FUNADA Hajime

GOTO Shigeyuki

GOTODA Masazumi

HAGIUDA Koichi

HATOYAMA Jiro

HAYASHI Motoo

HIRASAWA Katsuei

HORIUCHI Noriko

ITO Yoshitaka

IWAYA Takeshi

KAIEDA Banri

KAJIYAMA Hiroshi

KAMIKAWA Yoko

KAN Naoto

KANEKO Yasushi

KATO Ayuko

KATO Katsunobu

KIUCHI Minoru

KOBAYASHI Fumiaki

KOBAYASHI Takayuki

KOIZUMI Ryuji

KUSHIBUCHI Mari

MAEHARA Seiji

MAKI Yoshio

MAKISHIMA Karen

MITAZONO Satoshi

MOTEGI Toshimitsu

NAKASONE Yasutaka

NAKATANI Kazuma

NIKAI Toshihiro

NIKI Hirobumi

NISHIMURA Akihiro

NISHINO Daisuke

NODA Seiko

OBUCHI Yuko

OGATA Rintaro

OISHI Akiko

OMI Asako

ONIKI Makoto

ONODERA Itsunori

SAITO Tetsuo

SHIMOMURA Hakubun

SUZUKI Takako

TACHIBANA Keiichiro

TAGAYA Ryo

TAKEBE Arata

TAKEDA Ryota

TSUCHIYA Shinako

TSUKADA Ichiro

WAKAMIYA Kenji

WASHIO Eiichiro

YAMAGIWA Daishiro

YAMAGUCHI Tsuyoshi

YAMASHITA Takashi

YANAGIMOTO Akira

YONEYAMA Ryuichi

2022-05-21

anond:20220521222903

昔だけど使わされた事あるわ

ExcelVBAを、ガンビットみたくGUIで組み立てる感じ

まりVBAで出来ることに制約が付いて、ソースgrepとか比較とか出来なくなる地獄

今のローコードがどうなのかはシラネ

2022-05-12

anond:20220512011830

サクラ正規表現Grepでの改行挟んでの指定ができなかった、今は知らんけど

あと秀丸ライセンスはゆるいか個人で持ってれば会社で使っても問題ないしね

2022-02-22

anond:20220222084920

「安寧を求める性向」は、エンジニアに不調をもたらす?

——登さんくらい常に気持ちフラットにできればいいのですが、仕事ストレスで参ってしまエンジニアも多くいます

そうですね。ストレスを感じる理由はさまざまあると思いますが、一つ例をあげるなら、仕事目的が「お金を稼ぐこと」それ自体になっている人は疲弊やすいかもしれませんね。

稼ぐことを目的としている人のゴールは、おそらくご自身の「安寧な暮らしの実現」にあるのだと思います。それがとても大事ことなのは言うまでもありませんし、否定するつもりも毛頭ありません。

一方で、私や私の周りにいる人たちは、現状の成果に満足せずに得たお金を次の進化のために再投資しようと試みる人ばかり。どちらが良いとか悪いとかではなく、価値観が違うだけのことです。

ただ、前者の「お金を儲けて安寧な暮らしがしたい」という人にとって、仕事から受ける疲労や気分の落ち込みというのは、ある種当たり前のことだとも思うんですよね。

——というと?

どこかで成長を諦め、安寧な生活を望むような性向が、かえって心身の不調やフラストレーションを生み、パフォーマンスを落とす一因になっているのではないかと思っているんです。

お金を稼ぐためだから、しょうがいか」と思ってやっていること自体が、ストレスになるのではないかと。

登 大遊さん

でも、こればっかりは人の価値観ですからね。変えようと思っても、すぐに変えられるものでもない。

どんな価値観で生きるのかを選ぶのはその人ですし、どんな人生を選んでもリスクはついて回ります

安寧な生活や休息を優先する生き方には、仕事に対するストレスやそれに付随する心身の不調などの副作用があるということに過ぎません。

ただ、一つ言えることがあります日本において、「大義を持って働く」生き方選択をした人は、これから大変有利だということです。

——どういう意味でしょう?

自分の手で未来を変えようと野心に燃える人が世界中から集まるシリコンバレーなどでは、埋もれてしまうかもしれない人であっても、日本旧態依然とした組織の中では、同じことをするだけで、比較相対的価値が高くなりますから

技術者がわざわざベンチャーを立ち上げ、投資からお金を引き出すために詭弁を弄したり、ニーズでっち上げたりしなくても、日本大企業にはストレート解決すべき課題いくらでもあります。そしてそれらの問題を、自分自身頭脳を用いて解決しようとする時は、必ず、従来とは異なる方法解決する必要があるのです。

なぜなら、まさに従来手法では解決できなかったこからその問題放置または堆積されているためです。

——その場合は、どうすればいいのでしょうか。

その問題を一旦一般化・抽象化した上で、これを解決することができるより低レイヤーフレームワークのようなものを作ってしまうことが重要です。一定の労力はかかりますが、それによって生じた汎用的成果物は、他の業務や他の組織においても普遍的価値を持つようになります

ここで重要なのは目的を「業務上の特定問題解決から昇格させ、「その特定問題本質的類似しており、かつ既存の最適な解決方法存在しない、新たな汎用的解決方法の実現」という、より価値の高い目標に設定する必要があるということです。

登 大遊さん

——目先の特定問題をその場しのぎで解決するのではなくて、普遍的価値を目指すと。

その結果、問題がうまく解決され、成果物が出たならば、サラリーマン的な自分自身個人)と自組織にとっての短期的な狭い利益だけでなく、同時に「世界における技術進歩」という長期的で大きな価値が生じます

具体例を挙げると、たとえば「UNIX」を構成する重要機能、たとえばシェルプロセス通信パイプgrepといった機能。これは電話会社であるAT&T社の特許部門における、膨大なテキストファイル全文検索するという特定業務解決しようとした同社の社員たちが、単にその社内問題解決にとどまらず、さまざまな組織目的で汎用的に利用できる仕組みを考案し、プログラミングして実装したものです。

結果として、「UNIX」は汎用的に利用される価値を有し、単に一企業業務に留まらず、全世界的に普及し現在サイバー世界の基礎となっています

このように考えれば、ICT技術者は、これまで組織内で放置または堆積されてきた多種多様課題について、目先の解決ではなく、「正しい普遍的方法解決する仕組みを作る」という気概で、真摯に向き合えば、自然に世の中に貢献できる成果ができるわけです。

2021-12-28

音声のスペクトログラム、何も問題わからんのだが

音声に対して窓関数かけて、横軸を時間、縦軸を周波数としてプロットしたのをスペクトログラムという。

工学が進むためには可視化必要だと勝手に思っている。

数字が並んだだけだとわかりにくいが、グラフを描けば問題箇所がわかる、といった具合だ。


スペクトログラムを使い始めた際、これで問題がわかるものだと思っていた。

ネットにもスペクトログラムについての記載は多くあり、枯れた技術のように見える。

だが、実際やり始めると、広く広まっているこの手法はいいのか?と思えてくる。


スペクトログラムの欠陥として、

① 耳で聞いたとき違和感に対して、どこが問題があるのかがわからない

違和感のある箇所をgrep抽出できない

③ 耳で聞いて差がある音声に対して、明確にどこが影響しているのか比較diffが取れない

④ 多くの人はスペクトログラムを読めない。(歯擦音、母音、子音かくらいしかからない)

違和感のない修正方法がない

あたりを感じている。

2021-10-30

3年分の増田を全削除した

最近ホッテントリの傾向、昔は正気だったブクマカ党派性に脳をやられてキチガイ化してしまった様などを見るに

「このままこのサービスを使っていては遠くないうちに脳に致命的なダメージを負ってしまう」

と思ったので、はてなを退会することにしたのだが、アカウントが消えても増田は残るのでポンと退会できない。

愚痴ったら「同じ内容を連続投稿すればBANされるぞ」とトラバを貰ったが待てど暮らせどBANされない

仕方ないので色々試行錯誤してみたのだが、ITエンジニアでもないのにテキストベースログインしてgrep使って一括削除など出来るわけもなく

結局Power Automation Desktopを使ってRPAで全部消した。

鉛筆マーク、削除ボタンOKボタン画像認識させ、詳細で画像の表示待ちのチェックを入れたら、あとはひたすらループを回すだけ。

トータルで6時間ほど回して全削除完了である

ハイクが終わった時点で辞めておくべきだったな、と思わなくもないが続けてしまったものは仕方が無い。

とりあえずちょっとだけ時間をおいてからID削除の予定。

増田を全部消したい人は多分他にもいると思うのでこの増田だけは残しておく。

効率まりないが、そこまで知識の無い人でもPC動かしたままほっとくだけでいいのでお勧め

さらば友よ。汝は我の千倍も邪悪であった!

2021-08-13

学術書の類を読むときプロによる書評も一緒に読め

ブレグマン(2021)『Humankind 希望歴史』を勝間さんがブログで紹介しているが、その記事ブコメ地獄と化している。

https://b.hatena.ne.jp/entry/s/katsumakazuyo.hatenablog.com/entry/2021/08/12/162845

「なんとなくだが俺はこう思う」「著者はチェリーピッキングしててクソ」みたいな主張がエビデンスなしに書かれており(そもそも君たち原書読んだ?)、それらにスターが当然であるかのように集まっている。これらは理性的議論でもなんでもなくただのエコーチェンバー現象である。やはり、ブコメという文字数制限があるメディアできちんとした議論を行うのは無理があることが分かる。

こういう学術書やそれに近いものを読むときに私が習慣としていることがある。本を読む前にプロによる書評を読め。

ここでのプロというのは、新聞でそういう書評をいっぱい書いているプロレビュワーのことではなく、プロ学者のことである

例えば、"Bregman Humankind book review"とかでgoogle scholarなどを調べると、文化人類学者によるこの書評がヒットする。

A Sceptical Review of Bregman’s 'Humankind: A Hopeful History'

https://www.newenglishreview.org/custpage.cfm?frm=190173&sec_id=190173

この書評によれば、「過去において狩猟採集生活住民同士が戦争ばかりして殺し合っていたというのは基本的には嘘」というブレグマンの主張は文化人類学的には嘘っぱちである

"As a journalist he not only knows very little anthropology but also has an irritating folksy style"(ジャーナリストのブレグマン文化人類学についてほとんど何も知らないだけでなく、イライラするほど垢抜けない文体を用いており)、"This is reminiscent of a very bad undergraduate essay"(これはとても下手な学部生のエッセイを思い出させるような主張だ)、などとやたら攻撃的な評がなされており、それはそれで大丈夫かという気持ちにはなるが、少なくとも一人の専門家視点から見た学術的な評としては参考になる。もちろんこの書評が真理で『Humankind』は読む価値なし、とここで主張したいわけではない(私は文化人類学者ではないのでその判断はできない)。

このような視点批判的に本を読解することは、当該分野の知的蓄積を持っていない素人には不可能である。誤った知識を盲信しないために第三者によるファクトチェックには目を通しておいた方がよい。逆に、その道の専門家が「よく書けた本である」と肯定的に評していれば、ある程度安心して読むことができる。

プロによる書評をどのように探すか

日本語書籍なら「(書名) 書評」でググる学者による書評に絞りたい時は「(書名) 書評 教授」でググったり「(書名) (著者名)」でGoogle scholarしたりするとよい。

英語書籍日本語翻訳された本を読むときもこれで原著の評判を調べる)なら「(書名) (著者名)」でGoogle scholarするのがおそらく一番よい。ある程度有名な本ならプロによって書かれた書評学術ジャーナルに載っており、それがだいたいヒットする。特にいわゆる文系学術ジャーナルには毎号Book reviewコーナーがよくあり、そこに載っている書評は「本の主張まとめ」→「本の批判検討」→「本の評価」というフォーマットで書かれていることが多いため大変読やすい。ただ一つ問題があり、これらのジャーナルはほぼ有料である研究機関所属するか金を払うことによりこの問題解決する。

また、twitterで「(書名)」で調べ、研究者っぽい人による短評ツイートを探して読むという方法もある。研究者のTwitterはだいたい実名かつ顔写真アイコンソース:私の印象)なので、それで目grepしてからプロフィールをチェックするとよい。ちなみに関心がある分野の研究者のtwitterアカウントは普段からフォローしておくとたのしい。

余談:近年のポップな人類歴史書の怪しさについて

冒頭で「ブコメがやべえ」と批判したが、こういう風呂敷を広げまくって人類史を俯瞰したぜと主張する売れ筋本に警戒心を抱いてしま気持ちはよく分かる。なぜなら、最近のそういう本に対しては「適当こくな」と専門家からツッコミが入ることが実際に多いから。

例えば、Humankindの書評として上に挙げたものを書いたC.R. Hallpike先生は、ハラリの『サピエンス全史』に対しても批判的な評を行なっている。

Review of Yuval Harari's Sapiens: A Brief History of Humankind.

https://aipavilion.github.io/docs/hallpike-review.pdf

ちなみにこのHallpike先生は、未開社会フィールドワークを行なった経験から最近のポップな歴史書は文化人類学デタラメばっか書きおって」と心底お怒りらしく、全員(チョムスキー含む)まとめてぶった切る本まで書いている。Hallpike先生過激な主張を好むことも踏まえると(参考: https://twitter.com/profdanhicks/status/1336981539893161984 )、この本に対するプロ書評が見つからないのは残念である

C.R. Hallpike(2018). "Ship of Fools: An Anthology of Learned Nonsense About Primitive Society".

https://www.amazon.com/Ship-Fools-Anthology-Nonsense-Primitive-ebook/dp/B07HX4188K

また、このような人類歴史スキャンダルとして最近話題になったのが、スティーブン・ピンカー(2019)『21世紀啓蒙』における「学術ルール違反事件である

ピンカーが書中で「科学史家による主張」として紹介していた言説が、脚注をたどると科学史家でなく社会心理学者によるものであったことが分かり、さらピンカーによって引用されていた文章は実際には同じ論文内の別部分の文章を継ぎ接ぎしてピンカーにとって都合の良いように捻じ曲げられていた、という事件である。詳しくは以下のツイートを参照。

https://twitter.com/mccormick_ted/status/1419672144368308225

もちろん『21世紀啓蒙』におけるピンカーの主張自体に対するプロからの異議申し立て存在する。

https://www.abc.net.au/religion/the-enlightenment-of-steven-pinker/10094966

というわけで、売れている学術書を無邪気に読むことすら危うさを孕む行為であるメディアリテラシーだいじ。

2021-06-17

CTOだけど、一ヶ月Web就職レビューしてみた。

https://anond.hatelabo.jp/20210617075257

0. 温度感

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

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

典型的はてなー意識の高さ。

上がってるような基本(元増田に上がってるやつの倍ぐらい)が全部立ち上げからできて

2〜3個プロジェクト経験したらテックリード素養が既に身についてそう。

まり、ただのエンジニアにはそこまで要求されない。

プロジェクト的にもどっちかが弱いと

Rails/DjangojQuery+Bootstrapみたいな構成

Amplify/FirebaseにVue/Reactみたいな構成全然あるので

フロントバックエンドも一旦はどっちかでいい。

面接はなんとか抜けてもらうとして、

チーム開発での最低限の目標としては、

成果物から指導学習コストレビューコスト技術負債マネジメントコストを引いた分が正になっていれば

ひとまず「チームに居ていい人」と見なされそう。

チーム的に良くても、経営層にそれで許されるかはわからんのでその辺の立ち回りも上手いことやるとして、

一旦は、正の生産性を目指してほしい。

以後、ブコメで誰一人一ヶ月でできるって言ってなくて笑うので、

一ヶ月というのは無視して、三〜六ヶ月程度をイメージしつつ書いていく。

1. 言語: PythonJavascript

これだけで一ヶ月経つ気がするが正気か。

似たような言語なのでどっちからやってもいいし、両方同時にやってもいい。

どっちかしかやらないならJavascriptおすすめ。後ででてくる、Flaskは適当Expressかに置き換える

現場だとほぼTypescriptなので、Javascriptはある程度慣れたらTypescriptに移行したほうがいい。

どちらも、Python2とES2015以前の記法というレガシーネット上に転がってるので参考にしないように注意。

パッケージ管理単体テストタスクランナー

この辺は6のフロントフレームワークと同時にやる。

コードは断片的なサンプルではなく

一貫性があって

・正しい書き方がされた

お手本プロジェクトをなにか(github書籍など)で手に入れて読むべき。

おそらくフレームワークに乗っかっているので並行して進めることになる。

6. フロントエンドフレームワーク: Vue.js

話の流れで先にこっち

現在コーディングのグッドプラクティスデザインパターンフレームワークの形をしている。

なので、ReactとVueをその思想から理解しきれれば、プログラミング言語の潮流の最先端に追いつけるはずだ。

とはいえ最低限としては使い方が分かるところまで。

TypescriptVue.jsも書き方をどこまで取り入れるかが使用者裁量に任されてるし、

開発でVueとReactのどっちを使うかはチーム次第なので、

一旦React+Typescriptガチガチに書かれたコードプロジェクトを拾ってきて、必死で解読するのがいいと思うなー。

2割ぐらいわかった気になればチーム入ってから(React, Vueどちらだったとしても)動けそう。

パッケージとかテストタスクデプロイ辺りもこのタイミングで拾ってきたプロジェクトを使って学ぶ。

2, 4. ツール: gitDocker

バージョン管理コンテナ思想が優れているのは自明なので、これらはツールと見ていい。

そして、後からプロジェクトに入った人がプロジェクト流儀に沿って使う分には難しいことはなさそう。

採用に来た人がgitとかわかってるとチーム開発経験者だなーって思うし、知らないと未経験者なんだなーって思うし、

そういう意味ではチーム開発の経験があるかどうかの試金石にはされてそう。

構築できる、ではなく、触れる程度で良さそう。

gitプロジェクト流儀によると書いたが、git-flowイメージ図を理解して運用できるのがよい。

https://qiita.com/KosukeSone/items/514dd24828b485c69a05

3. OS: Linux

これは「パソコンの使い方わかってますか」ぐらいの温度感

ファイルパーミッションユーザープロセスのような基本概念理解する

一冊読めば済むだろうし、概念系はさらっておいてほしい。

grepやfindやxargsなどのコマンドを組み合わせて簡単な処理を自動化する

こういうのができるんだなーって言うのを知っておいて、調べつつ書ければ十分。

sedとか正規表現も。

あとはシェルスクリプトとかって思ったけど同様のことはPythonでもできそう。

IPアドレスを調べたり、SSHリモートマシンログインする

地味にSSHログインした先の環境だと、vimが主要なテキストエディタになるので

vimを最低限触ることだけ要りそう。もういらないかもって思ってたんだけどなー。

ファイル開いて入力モードに切り替えて書き込んで保存して終了

チュートリアルする。拡張とかはいらない。

細かく書いたが、LPIC-1の範囲がほどよくまとまっているのでそっちを参照するとよい。

5. サーバーフレームワーク: Flask

フレームワークを覚えること自体重要なのではなく、Web開発の基本を習得することが重要

これが意図なら

HTTPルーティングデータベースSQL認証セッション管理などは当然すべて覚える。

この辺の機能を持った小規模Webアプリを作ってHerokuデプロイすれば一旦完成とみなしてよさそう。

コード書き写しただけにならないようには注意しつつだけど、長く見て5人日ぐらい?

慣れると1日あればいけると思う。

フレームワークもなんでもいい。

軽量である必要もなくて、

Djangoとかでも各コンポーネントがどんな働き方してるか程度はわかるだろうしそれで十分。

余力があれば複数個触ってみたり、人から勧められたらそっちでも。

最近サーバーレス&NoSQL流行ってるのでFirebaseとかもやればいいと思う。

7. アルゴリズム

コメントリーが荒れててウケる

実務プログラミングで最低限必要アルゴリズム力は

「書いてるコード計算量オーダーを把握していること」

に尽きる。

計算量を気にしなかったせいで線形検索メソッドとfor文を組み合わせて

O(n^2)やO(n^3)のロジックを書いてしまって

データ量が万〜十万の本番データで遅延するとか

それらに対して分散や非同期処理で解消しようとするとか、

ちょっとでもアルゴリズムを触った人ならアホらしいなって思うような行為

アルゴリズム不要勢は平気でやるぐらい、両者は溝が深い。

計算量を意識するだけなら、AtCoderABCのC〜D問題辺りが解ければ十分。

8. セキュリティ

有名な脆弱性攻撃手法は、ほとんどフレームワーク等で解決手段が用意されている

(XSS対策自動エスケープなど)

のでアドリブをせずに正しい書き方でやれば良い。

開発現場でもセキュリティリスクがある箇所を1から自前で実装することを経験が浅い者にはやらせないので、

ただただ、フレームワークが正しいとしているやり方をなぞるのが良い。

最後

開発の勉強のやり方としては、

・正しいコード見本を手に入れること

公式リファレンスを読むこと

エラーメッセージを読むこと(そしてググること)

この辺りの習慣があればやってけんのかな、

その他、チーム開発って面では

アジャイルサムライプロジェクト管理)とか

TeamGeek(人間性)とかインプットしておくと共通言語が増えて嬉しい。

この方向で進めてけば、その途中で正の生産性≒足引っ張らないぐらいになれるので、

そしたらやってけるんちゃうーって感じ。

経験から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など)が何だか理解していて、その対策実装できなければならない。

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

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

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