昨今はプログラミングブームが来ていると確実に言える.
どこの企業もAIの活用を中長期的成長目標などと絡めて提示している.
その内容は如何として..
そんなこんなでプログラミング関連をまとめておく.
小学校などでも義務教育課程としてはじまったほか,児童から大人まで様々な人がプログラミングスクールに通い,新聞や動画でもそうした広告を非常に多く見るようになった.これらに対する個人的違和感は後述する.
弊社にも内製できるようにプログラム部隊がいるし,これは他者でもDXを始めとした大きなムーブメントだ.
保守的で伝統的な企業には,そうした部分のレガシーの課題感が大きいのも事実なのだろう.
ただ最近,情報商材屋などの言葉に代表されるように,バズの潮流として詐欺まがいの温床になっていることに注意が必要だろう.
彼らはプログラマーの華々しさを語るが,レッドオーシャンになりつつもある今,この先もそのスキルで安泰とはいかない.
そこの学びに投資をしたからといって,今後勝てる保障はない.
こういう話は長くなるので,機会があれば別のトピックの記事を作ってもいいだろう.
前置きが長くなったが,こうしたプログラミングブームがある中,どのような教材を用いるべきかなどについて個人的にまとめておこうと思った.
とはいえ,こうしたトピックも既に多くある焼きまわしと同様なのだが.
上記は顧客を鴨葱にしか見ていないが,本来的なプログラミングの勉強に金銭はそもそもとして必要ない.
強いて挙げれば,実行用のそれなりの性能のPCとネット環境くらいだ.
Free Materials
で,再三述べる通り以下の教材は腐るほど紹介されているが,それだけ有用だ.
最近はフリーミアムをはじめとして,YouTubeなど無料の優れたものに溢れている.
Introductory Programming Courses | MIT OpenCourseWare | Free Online Course Materials
Pythonプログラミング入門 — Pythonプログラミング入門 documentation
Kyoto University Research Information Repository: プログラミング演習 Python 2019
ここには無難に有名大学のものを示したが,自社の研修コンテンツを公開している企業も増えてきている.
やはりPDFなどが教科書らしく思えるが,動画で再生リストで累計数十時間というコンテンツのものもあり,ボリュームは十分だ.
よく分からないカブレSIerのサロンや本に払うのもバカらしい.
Top 10 YouTube Channels to Learn Programming | Ayoka Systems USA
プログラミングの本質:デバック
やや専門的な話になるが,そもそもプログラミングの本質はデバックであり,これはネット検索との格闘であるので,こうした流れは自然に思える.
タダより高いものはないと身構える人もいるだろうが,まずは知らない人に金を払うより,無料の資料を見比べておくべきだろう.
あるいはプログラミングに無双的な夢想を持っている人は,短い動画なので以下のような現実も把握しておくべきだろう.
そういえば海外のYouTubeを見ているとしばしば表れるのだが,以下のようなEラーニングコースはプログラミングを始め,他のリカレント教育でも非常に強力なツールだ.
言語選択
これも散々ほかで言われていそうで改めて書くのも正直憚れるが.
案外,社内の同期やら知人のニーズが高い気がするので付記しておく.
まず前提として箇条書きされたものが具体的な言語で,それを操作するものが言語ごとにまた選べる.
Python
現在最も流行っている.そのため情報も豊富で,組み込み関数的な他者が大枠を作ってくれたモジュールも豊富.特に流行りのAI系が盛んな印象.
さらに文法が比較的緩やかで自然言語に近い印象で,読みやすく書きやすい.
汎用性はピカイチだが,計算速度を要する場面やWeb系にはあまり強くない.
操作にはAnaconda系が個人的にお勧め.
Anaconda | The World's Most Popular Data Science Platform
R
やや地味な印象だが手堅い印象.
高専の卒業研究で使ったきりなので,あまり詳しくはないが,Pythonよりも機械語の色が強めな印象.
というのも計算速度などは優位に見える.
操作はRstudioが有名か.
Java
古くからあって,かつての時代のクセの強さが残っている感はある.
Pythonよりもとっつきにくいかもだが,同等の汎用性を有し,外部のクラスも充実している.
何より多くのサイトがこれで作られている.最近は他の言語も台頭してきているので,世代交代が起こると賭けるなら,強みは微妙になるが.
そういう方面なら,最後にあるようなMVCに関連させて,HTMLやCSSも要勉強か.
これは計算ツールではなく,お化粧ソフトなので,ジャンルが別物なのだが.
これといった操作用ソフトは知らないが,どの言語でも使えるAtomやIntellijあたりか.
C
よく見る.けどよく知らない.
+と#もあって違うらしい.
MATLAB
計算量が多いならこれ一択な印象.
行列系の計算に圧倒的強み.
ライセンスが必要なのがネック.
複雑なシミュレーションとかしたい人向け.
特化的で汎用性は低めか.
Excel
なんだかんだ現代ビジネスを支配している.
お馴染みのifやsumのほか,vlookupやピボットテーブルなどもあり,バカにできない.
簡単めな分析なら,そのまま操作した方が早くて便利ということもままある.
さらにマクロによる自動化でプログラミングと似たこともできる.
下手にプログラミングに挑戦する以前に,最低限のExcel能力をつけておくことは重要.
Excelでデータベースを雑に簡単に形を整えて,別言語で解析するハイブリット運用もしばしば行う.
ただデータサイズに限界があるのが,なによりもの欠点か.
社内勉強会Tips
余談だが,このような話は以下の時にもしたりした.
ちなみにそこでは以下のようなサイトを参考にしたことを共有するなどした.
CS50 for Japanese: コンピュータサイエンスの入門 – 当ウェブサイトは、Creative Commons ライセンスに基づいて管理されています。
サンプル - Bootstrap 4.3 - 日本語リファレンス
Spring Boot で Thymeleaf 使い方メモ - Qiita
あるいはエラーコードごとの対応方針とか.