はてなキーワード: C#とは
ほいノ
高専行こうと思えば行けたんだけど、実家離れるの怖くて偏差値45の工業高校へ。
18歳までフリーター。
18歳〜21歳まで定時制に通った。
英語は個人的にそこそこ勉強したけど、数学なんかはⅠの後のAが半分も終わらなかったレベルのバカ校。
この時期は暇で、なぜかやる気に満ち溢れてたから、TOEIC700近くとか日商簿記2級とか色々資格を取った。
24歳でうつになって、30歳くらいまで日雇い・派遣↔無職を半々くらいでリピートしてた。
やってる仕事は大したことなかったけど、幸い仕事中にPCをめちゃくちゃ使うのでやりたい放題だった。
この時にプログラミングを始めた。
ここで年収どんどん上がった。
36歳でうつが再発して辞めて今に至る。
基本は、仕事で使えそうなもの・必要なものをその都度吸収していった感じ。
Webが中心ではあるけど、組み込みとかのハードが絡む分野以外は結果的に広く浅く手を出してる、つもり。
Excel VBA | 1年 |
VB.NET | 半年 |
JavaScript(Node.js) | 4年 |
HTML | 1年 |
SQL | 4年 |
GAS | 3年 |
C# | 1年半 |
TypeScript | 2年 |
Java | 半年 |
C++ | 半年 |
ラダー、FB(三菱、シーメンス) | 1年 |
実務経験があるって胸張って言えるのはこれくらい。
大体習得順。
他には、Python、Julia、R、Fortran、Rust、Go、Dart、Shell、Deno、CSSなんかは少しずつかじってる。
最近はWebに関してはほとんどJS(TS)で済む感じになったので楽。
なんでPLCが最後やねんってツッコミは置いといて、Web系寄りでラダーも触ってるって人は観測範囲ではあんまりいないので、それが俺の数少ない強み。
RDBはPostgreSQL、SQL Server、MySQL、SQLiteの順で実務経験あり。
NoSQLはFirestoreが実務経験あり、実務なしだとNeo4jとか。
PaaSはGCP(Firebase)、AWSの順で実務経験あり。AzureはADとVM周りをちょっと触った程度。
Dockerはよく使うけどKubernetesとかまでは行ってない。
後は産業用の通信プロトコル的なやつを無駄に色々触ってる。Modbus TCPとかORiNとかCC-Linkとか。PLCもそうだけど、あの辺は日本とドイツとアメリカが未だに既得権益で幅利かせててまじで闇深い。その代わりそれをブレイクスルーできればめっちゃ稼げる分野だと思う。
閑話休題。
フリーターでどんな仕事してるか知らないけど、仕事で一日の半分が無くなっちゃうじゃん?
以下、俺の場合ね。
次長クラスの人が「この製造番号でクレームがあったんだけど、作業当時どんなことあったか覚えてない?」みたいなことをわざわざ現場まで何度も聞きに来るんだよ。
作業したのなんて半年前だったりするから一々覚えてないっすよ、って言ってるのに何度も聞きに来るから、イラッとして仕事用のPCで勝手にExcelで業務日報を付けるようにして、イントラのファイルサーバーに置いて「そういう時はこれ見て下さい。次長の貴重な時間が勿体ないです」って言ったのよ。
それだけでめちゃくちゃ喜ばれる。
で、今度はその次長が「この製造番号どれくらいの時間で作業終わった?」みたいなことを現場までわざわざ何度も聞きに来るから、俺はその時またイラッとして、Excelでストップウォッチもどき作って製造番号とか工程ごとに時間計測して記録して、やっぱりファイルサーバーに置いて「これ見て下さい」って言ったのよ。
それでまた、めちゃくちゃ喜ばれる。
最初はプライベートな時間も結構使ってやってたんだけど、そういう周りに喜ばれる効率化を繰り返してると、少しずつ業務時間内で自分のスキルアップに直結する時間を作れるようになる。
自分でこれ面倒くせーな、効率よくできねえかなって思ったら、じゃあどうやって?てのを考える。
ちなみにPCがなくても、たとえばメールアドレスさえあれば今の時代カイゼンはできる。
大きな会社に勤めてるとかだと使うのが難しいんだけど、IFTTTとかが良い例かな。
これはiPaaSっていうサービスの一種で、まあ言葉の意味は覚えなくて良いんだけど、要は「イベントAが発生したら別のイベントBを起こせ」っていうのを登録して、自動化できるWebサービス。
例えば、あなたが日雇いの会社にいて、毎日違う現場に働きに行くとする。
で、出勤前、現場到着時、勤務終了の時にLINEで毎日報告しなきゃいけないとする。
で、その報告を受けた事務方は、Googleスプレッドシートにその都度入力する。つまり、それだけの為の事務員が一人いる。
面倒くさいし、お金がかかる。
そこで、「特定のグループでLINEを受信したら(イベントA)、特定のGoogleスプレッドシートに情報を記録せよ(イベントB)」っていうのをIFTTTに登録すると、少なくとも事務員の入力の手間は省けるってえ寸法だ。
IFTTTはたくさんイベントを処理させたい場合は有料になっちゃうけど、個人で試すぶんにはクレカ登録しなきゃいいだけだから試してみるといいよ。
月1000円で学べる。コスパは圧倒的。
入門コース(学習に180時間と公称してる)がしっかり理解できていれば、Webで大抵のものは作れる。
ただし、大筋は問題ないんだけど、細かい部分で最新技術をキャッチアップできてない可能性があるので、そこは注意した方が良いかも。
https://www.nnn.ed.nico/pages/programming/
N予備校の入門コース終わらせたら、基本情報技術者か応用情報技術者を取る。
そしたら、職歴書の作り方次第で中小企業の社内SEにはまず転職できる。
中小企業の社内SEは、ITリテラシーの低い社員が多い中で「Excelのセルの色が変わらなくなっちゃったんだけど!」とか「複合機が紙詰まりって言ってるけどその紙が見つからない!」とかクソイージーなクエストをこなすだけでおちんぎんが貰える、人によっては天国、人によっては地獄のような職業だ。
ごめん、流石に言い過ぎた。実情は色々と面倒くさい。DXとかバズワードを聞きかじったクソ重役から突然言い渡される重めのミッションとか。
けど安定なのは間違いない。
N予備校の入門コース終わらせたら、基本情報技術者か応用情報技術者を取る。ここは社内SEと同じ。
生産技術ってのは、誤解を恐れずにすげえ簡単に言えば、カイゼンばっかりやってる人たちのことだ。
あんまり詳しくは言えないんだけど、俺が最後にやっていた仕事は言わば生産技術だった。
で、中小企業の生産技術は、Webに強い人材をかなり欲しがっている。有り体に言うとIoTとかね。
IoTは最近、セキュリティの強化がかなりクローズアップされていて、そのせいで二の足を踏んでる企業が多い。
そこに滑り込むのはアリだと思う。
よく「T型人材」って言われ方をするけど、どっちのスペシャリストの言うこともある程度分かる「橋渡し」的な人材になると途端に貴重になって需要が増すので、上昇志向があるなら「Web+何か」の組み合わせでお金稼ぐのが良いんじゃないかな。
ま、橋渡しって自然とプロマネとか任されがちで、裁量大きくて大変なんだけどね。
質問あればどうぞ。頑張って。
母艦のWindowsを仮想化してノートPCにLinux入れて接続すればいいじゃん
2022-10-08
色々あってLinuxに変えたけど、C#erが開発する上で色々不都合があってWindows今入れ直してる
Linuxのいいところ
①起動が早い
Windowsみたいなくるくるすらない。ウイルス対策ソフトすら入ってないからなんでもはやい。
なんでもワンタッチ
③無駄が少ない
UIとかもなんでも楽
基本的に無駄なことをさせないから想像通りの操作をすれば想像通りの結果になる
WINEを使って使えたVST(DTMの外部プラグイン)が2つだけ。まあ起動できたシンセサイザーさえあれば十分だから無問題ではあった
公式のAPI使うのにすらいろんなものインストールした。linuxにとっては非公式だから当たり前だけど
③開発系のアプリ、日本企業のソフトがほぼWindowsのみ対応
今時全部クラウドでビルドするから問題ないのかもしれないけど、ローカル環境ですぐに確認できないのは気になる
無料だし普通に使いやすいからメインでWindowsPCあるならサブは間違いなくLinuxにするわ
iOSはノートPC、常用使いがLinux、開発がWindows
そうしてもいいと思うぐらいのポテンシャルはあった
たった1週間しかメインとして使ってないけど、使うために奮闘してLinuxやハードウェアだけじゃなくて開発環境周りの色んなことを学べてよかった
色々あってLinuxに変えたけど、C#erが開発する上で色々不都合があってWindows今入れ直してる
Linuxのいいところ
①起動が早い
Windowsみたいなくるくるすらない。ウイルス対策ソフトすら入ってないからなんでもはやい。
なんでもワンタッチ
③無駄が少ない
UIとかもなんでも楽
基本的に無駄なことをさせないから想像通りの操作をすれば想像通りの結果になる
WINEを使って使えたVST(DTMの外部プラグイン)が2つだけ。まあ起動できたシンセサイザーさえあれば十分だから無問題ではあった
公式のAPI使うのにすらいろんなものインストールした。linuxにとっては非公式だから当たり前だけど
③開発系のアプリ、日本企業のソフトがほぼWindowsのみ対応
今時全部クラウドでビルドするから問題ないのかもしれないけど、ローカル環境ですぐに確認できないのは気になる
無料だし普通に使いやすいからメインでWindowsPCあるならサブは間違いなくLinuxにするわ
iOSはノートPC、常用使いがLinux、開発がWindows
そうしてもいいと思うぐらいのポテンシャルはあった
たった1週間しかメインとして使ってないけど、使うために奮闘してLinuxやハードウェアだけじゃなくて開発環境周りの色んなことを学べてよかった
リアルエンジニアのワイがなぜMacでないといけないのかを説明しよう。
Macしかできないことは、WindowsにWSL2があるいま、それただひとつ「iOSの開発」だけだ。たかがiOSというなかれ、今の時代、コンシューマサービス(B2C)を作るならiOS対応は必須なのだから仕方ない。
iOSのアプリ開発ができて、AWS/GCP/Azureにsshログインしてサーバ開発しようとしたらMac「でなければならない」のである。
B2Bのビジネス系ソフトしか作ってない人にはわからないと思うけどね。
なお、単にAWS/GCP/Azureにsshでログインしてvimでぐりぐりとサーバ開発するだけなら、MacよりもWindows WSL2のほうがはるかに優秀だ。
・画面の解像度が高い。一番小さいMacbook Airでも2560 x 1600あるから、デュアルディスプレイにしなくても足りる。sshの画面を4枚開いても全然余裕がある。なおワイの場合、この画面だけでMacを選んでいるといっていい。
・色がきれい。フォントがきれい。ワイはWindowsも(C#開発がどうしてもあるので)使うが、Windowsは画面が汚くてそれだけで非常にストレスになる。
↑を書いた元増田ですが、VBの話から派生した話で、やたらコマンドライン(以下CLI)を使った開発に否定的な人間がいて閉口した件。
そりゃ一口に開発と言っても色々なので、本当に統合開発環境(以下IDE)だけで開発するケースもあるのは、こっちも知ってるんだよ。
だから学習者の中で「何をやりたいか」が既に決まっているなら、CLIを全く触らずプログラミングを学ぶケースもアリということなのだろう。
1つ目は、そもそも「プログラムって何?」というレベルの人が「何をやりたいか」なんて決まっているわけがないので、最初から「何をやるか」を決めてかかるのはナンセンスという話。
むしろどういう開発に進んでもいいように、「等号は代入を意味する」辺りから始まって、どんなプログラミングでも基礎の基礎になる、データ構造とアルゴリズムを意識させることに集中させたい。
そのためには難易度低めで比較的潰しが効く言語を、できるだけシンプルな手順で作業できる開発環境で学べる方がいい。
そしたらPythonの実行環境とそこそこ以上の機能を持つテキストエディタを入れて、コマンドプロンプトとかPowerShellとかのCLIから"Helllo, world"が取っ掛かりだと思うわけ。
もしLinuxの環境が用意できるなら同じことをLinuxでも試してもらって、プラットフォームに依存しない開発の入り口くらいを知っておければベター。
いずれにせよ何かを実行する方法が1つではないという重要な知見は、できれば基礎のうちに知ってもらいたいことの1つだし、それはWindowsとLinuxとかCLIとIDEという対比がうってつけかなーと。
ちなみにIDEは、Pythonによる手続き型プログラミングに慣れた後のタイミングで学べばいいと思う。
そこまで行ったら変数の型や、クラスとオブジェクトとかの難しい話をGo言語で学んでおくことで、現場で使われているJava、C#、swiftへの移行もスムーズになりそうだし。
ちなみに「初心者コース」の最後、もし可能ならRustでポインタとメモリの話の触りくらいを体験してもらえると、組み込みに進む際のハードルが少しは下がるんじゃないかな。
もう1つは、いくら現場によってはIDEだけで開発する現実があっても、CLIを使った開発がどういうものかくらい、プログラマにとっては知ってて当たり前じゃねーの?という話。
もちろん「プログラマが何を知ってて当たり前なのか」は、時代の移り変わりとともにどんどん変わる。
大昔ならおそらく機械語とかが必須だっただろうけど、今なら機械語よりはHTMLを読めるほうが遥かに重要なわけで。
あと、UNIX系OSをパーティションごとに主要なディレクトリを分割してインストールしていた時代であれば、edエディタの使い方は必須だったと聞く。
(/binに入るエディタがedのみだったため、もし使えないとシステムクラッシュして/以外マウントできなくなったときに詰む)
でも今やそんなの完全に過去の話どころか、viとemacsの論争ですら多分古い方の問題になるだろう。
そういう過去の諸々も踏まえるとCLIが未来永劫、プログラマにとって常識的なナレッジだとは自分も思っていない。
でも今はまだ、プログラマを名乗るならCLIからコンパイルだ実行だくらいの基礎は知ってて当然だと思うんだが。
自分が業界に入った頃はVisualBasic使ってWindows用の業務アプリ作れますって人や会社が大量にいたんだけど、今はそんな需要はほとんどないわけで
なんで、PythonやらJavaScriptやらRubyが初心者向けと勧められちゃうんだろう。
a = 100
puts a
とか打ち込んでぱっと実行結果が見れるから、その瞬間は簡単に思えるけど、20行やら30行やら100行とかちょっと行数が増えるだけでこれらの言語ってJavaやらC#に比べたら格段にコード書くのが難しくなるよね。
初心者が数行程度のコードを書いて「Python簡単じゃん!」と騙されるのはわかるけど、人にどの言語がいいとか勧めてる人ってそこそこコードを書いてる人らだよね。
WindowsPCで動くもの作りたいならVisualStudio入れてC#でどうぞやし
スマホで動くもの作りたいならAndroidStudioかXcodeやし
確かに。
Access便利そうだな、簡単にWindowsでDBを扱うアプリが作れそう。
って思って、ちょっと触ったら「VBで書くのかよ。騙された。。」
ってなった。C#なら喜んで使ってるんだがなぁ。
cmdがPowershellになったような感じで今後進化することを期待する。
昔はLinux系OSなら一発でビルドできるパッケージがWindowsだと自前でソースコード拾ってきたりしなきゃいけなくてすごく面倒だった事も多かった
Cygwinとか使えばそこらへんの手間はある程度解消された部分はあるけど、どうしてもLinuxの方が楽だった
今はWSLもDockerもあるし、Windowsでも遜色ない開発ができると思う
あと、VisualBasic触るくらいなら、同じ開発環境で触れるC#やった方がいいとはたしかに思う
Eclipseとか優れた開発環境のないJavaなんて書きたくない
Java単体では書きたいと思えない
C#もVisual StudioとかIntellisenseありきだと思える
C++は全然詳しくないので、それこそSTLがどうこうみたいなのは正直分からない。
あくまでCとの比較なんだけど、一般的に難しい方の言語と言われるRustでも、Cのソースに比べたら全然読みやすいことにびっくりした。
特にポインタ周りの記述は、&とか*の書き方がCから少し変わっただけなのに、ぐっと読みやすくなってる件。
これならCやRustを使う上で絶対的に必要な、メモリの話も理解しやすいだろう。
なので先にRustを学んでおけば、後でCに取り掛かる際のハードルはだいぶ低くなりそう。
そうなると、今だと全くのゼロからプログラミングを学ぶなら順番としてはPython→Go→Rustになるのかな。
正直JavaやC#やSwiftは必要になってから学んでも遅くはないし、Goを知っていれば多分そこまで難しくない。