昨夜、元メルカリのメンバー(広報マネージャー、HRマネージャー、エンジニアリングマネージャー、Webエンジニアなどなど)とZoom飲みをやって、とっても楽しかったんですが。

みんなあれですね。ぶっちゃけ、暇してますね。

皆さんもきっと外出自粛の影響で、GWなのに家にいるしかなくて退屈してるんじゃないでしょうか?旅行もダメなら、地元への帰省もダメ、近所に出かけてもお店はどこもやってないという状況ですしね。

ただ、モノは考えようで。こういう時だからこそ、普段なかなか時間をとれずにいた事にチャレンジするのはいかがでしょうか?

僕のtwiterのフォロワーさんには、エンジニアの方だけでなく「IT系に転職したい」「エンジニアになりたい」「ビジネス職でもプログラミングを理解したい」という方もいると思います。

なので今日は特に、文系サラリーマンで営業職や事務職についている方向けにおすすめのプログラミング入門書を紹介しようと思います。僕も文系ですし、大学ではHTMLの授業くらいしか受けたことないのでプログラミングは独学です。

それと、下記の書籍をぜんぶ購入する必要はないです。気になったものを1冊か2冊、まず眺めてみてください。2つ電子書籍化してないですが、あとはすべてkindleで読めると思います。

はじめに. なぜオススメなのかという選出基準

僕自身がプログラミングをゼロから学び、長く開発現場にいて感じるプログラミングを効果的に学ぶコツは、下記3点だと痛感します。

  1. 多くの入門書は学校の教科書のように基礎から順に「積み上げ方式」で解説しますが、作りたいものを明確にしてから必要な知識をつまみ食いする「逆引き方式」が圧倒的に理解が速い
  2. 概念図が示してありシステムの全体像をつかめる本を選ぶこと
  3. 多くの入門書が入門と言いつつ流しがちな「テクニカルターム=技術用語」きちんと解説されている本を選ぶこと

これ、実は受験勉強と一緒です。受験校が決まれば過去問から出題傾向がわかり、教科書を1ページ目から網羅する必要がなくなりますよね。

プログラミングだって学び始めればキリがないので、作りたいもの(ちょっとしたWebアプリでもSlackボットでも何でもよい)をラフに定め、システム全体を概念図で理解し、必要な技術用語だけを都度学んでいくアプローチを取ると、知識の探索効率を上げることができます。

1. Webプログラミングが面白いほどわかる本

Amazon Kindle

ニコニコ動画を運営するドワンゴが、自社運営のプログラミング学校「N高等学校」向け教材として一般公開しているN予備校の書籍です。

最初に読んで欲しいのは「Chapter.5 Slackのボットを作ろう」です。効果的な学習原則に従うなら、まずは簡単なBotを最小限のコードでつくってみるのが最短です。

ほとんどの手順はSlackでの登録作業で、途中でちょっとしたコードをコピペする場面がありますが、一旦そのまま写経のように書き写しておけばOKです。コードの意味は後でわかるので、まずは何かうごくものを作るのが大事です。

また、Linuxの基礎やシェルプログラミング、Githubをつかったプログラミングなども丁寧に解説されているので、後から気になったら目次で参照するのもおすすめです。

2. 独学プログラマー

Amazon Kindle

次はプログラミング言語のPythonです。僕自身はPHPから入門したのですが、これからプログラミングを学ぶ皆さんはPythonが良いと思います。初心者でも理解しやすく機械学習系のコードもPythonで書かれているからです。

僕が思うこの本の最大の特徴は「技術用語の説明を端折らない」ところです。

関数、変数のスコープ、文字列操作、ループ、ファイル書き出しなど基礎的な技術用語を網羅的に押さえているだけでなく、プログラミングがどういう考え方で進化してきたかというパラダイムやオブジェクト指向プログラミングについても簡単にではありますが解説されており、Pythonベースでプログラミングの全体像を押さえるのに役立ちます。

3. 10年戦えるデータ分析入門

Amazon Kindle

ソフトウェアエンジニアがアプリケーションを書くときは、Pythonだけでなく様々な言語があるのですが、データベースから顧客のデータを引き出したり、複数のデータをつなぎ合わせて分析する時の言語はSQLほぼ一択です。

メルカリでは、データアナリストやデータサイエンティストほど高度ではないにせよ、プロダクトマネージャーやCSのメンバーは簡単なSQLを書いて自分なりの見解を導き出すリテラシーは求められていました。

この本はSQLの解説本としては決定版とも言えるもので、初心者が最初につまづく「join」というテーブル(エクセルの表みたいなもの)同士を結合する処理の説明がめちゃくちゃ丁寧でわかりやすく、感動した覚えがあります。

4. Pythonによるスクレイピング&機械学習入門 [開発テクニック]

Amazon

僕がプログラミングを学び始めて、ある日に一気に理解が進んだ最初のブレイクスルーは、実は「スクレイピング」をやってみた時でした。スクレイピング(別名:クローリング)とは、任意のサイトにアクセスしてHTMLを読み取り、必要なデータを自動抽出してくることです。

僕は一時期これで、Hetanaの人気記事の一覧やYoutubeの人気動画をWebsiteやAPI(データを取得するための入り口のようなもの)から自動取得して自分なりの処理を施してオレオレサービスをつくったり、仕事で必要な全国都道府県市町村名や職種一覧のデータをプログラムに取得させたりしていました。

スクレイピングを実際にやってみる過程で、サーバーを立て、簡単なコードを書いて動作させ、取得した一覧をちょっと加工してCSVで書き出しておくという一連の処理が学べるはずです。

考えてみれば、Googleだって世界中のWebサイトをスクレイピングして情報を集めてindex(目次)にし、検索できるようにしたサービスです。なので、実際に「動いているサービス」を体感するには、スクレイピングを実践するのがプログラミング学習の最短ルートだと思うのです。

ただし、これ実は一番おすすめなのに、電子書籍もなく在庫も切らしてるみたいでごめんなさい。。。

代わりにこちら:Pythonによるクローラー&スクレイピング入門 設計・開発から収集データの解析・運用まで

Amazon Kindle

上記の「Pythonによるスクレイピング&機械学習入門 [開発テクニック]」が品切れなので、近いコンセプトで書かれた書籍としてこちらをおすすめしておきますね。電子書籍版もあります。

5. プロになるためのWeb技術入門

Amazon

(初心者は読むだけで十分)10年前の書籍で古いので載せるか迷ったのですが、やはり紹介することにしました。ことWebアプリケーションについて言えば、HTTPメソッドについての丁寧な解説や、Webブラウザとサーバー間の通信でどういう情報がやり取りされているのか可視化してみたり、普通だと流してしまいそうな技術とその振る舞いを図を多用して解説しています。

図が多いのが特徴で、ログイン処理とSessionの考え方、開発フレームワーク、O/Rマッピング(プログラミングで表現されたでオブジェクト、例えばユーザーとか商品などと、リレーショナルデータベース上のデータを対応させること)、SQLインジェクション(Webフォームへの入力を悪用して開発者が意図しないような形にSQLを変更し、情報の不正取得や改ざんを行う行為)まで扱っています。

6. AWSでつくるAIプログラミング入門

Amazon Kindle

こちらは、基本的なプログラミングがわかってきた方が、AWSのようなクラウドサービス上で「機械学習プログラミングとは何か?」を手軽に体感したい場合に役に立つ書籍です。

プログラミングの入門書はたいていの場合、自分のパソコンの中にサーバー環境を(local環境という)をつくってそこでコードを動かすのですが、実際に動いているサービスはAWS(Amazon Web Services)やGCP(Google Cloud Platform)といったプラットフォーマーが提供するクラウドサービス上で動いています。

また、機械学習についての処理は自分で書かず、AWSが用意している各種AIサービスに代理してもらうことで、非常にスムーズにプロトタイプ開発ができることも体感できるので、そういう意味でおすすめです。

最後に. 古いけどお世話になった思い出の書籍たち

古いけどお世話になったプログラミング入門書籍

最後に。上記はもう古すぎるのでAmazonへのリンクは貼りませんが、まだプログラミングやアプリケーションへの理解がちんぷんかんぷんあった僕の理解を助けてくれた書籍たちです。ただし、内容は古いので実際に手を動かすなら最新の入門書の方がおすすめです。

ということで、以上です。

外出自粛でどこにも行けないGWですが、プログラミングを学んでみようと一念発起された方が、なるべく早く理解が進む助けになれば嬉しいです。