概要
「初心者本はひととおり読んだけれど,次に何をしてよいかわからない」
「簡単なコードは書けるけれど,中規模システムは作れない」
本書は,そんなプログラミング迷子が設計からコードまで書けるスキルを身につけるための指南書です。
開発現場で起こった実際の問題とその解決法をもとに,文法以外に必要な「プロジェクトの各段階でプログラマーがやること」「その選択をどう判断するのか」「どうコードを実装して実現していくのか」を解説します。コードにはPythonを使用していますが,ほかのプログラム言語でも共通する知識が満載。より効率的かつ効果的にプログラムを書ける「自走できるプログラマー」へ導きます。
こんな方におすすめ
- プログラムを書けるけど,レビュー指摘などで手戻りが多い人
- 優れたエンジニアになりたい人
- 設計の仕方や,メンテナンス性の高いプログラムの書き方を知りたい人
著者から一言
プログラミングは,パソコンがあれば無料で始められます。初学者向けの本もたくさんあり,特にここ数年は今まで以上に多くの人がプログラミングを始めています。裾野はどんどん広がっていき,2020年からの初等教育でのプログラミングの必修化もそれを後押ししていくでしょう。あと何年か後には,プログラミングが今よりももっと日常的に行われる世の中になっているかもしれません。
こうした状況はとても喜ばしいことですが,プログラミングが一部の人のだけが持つスキルでなくなれば,仕事でプログラミングする人にはより高いスキルが求められることになります。競争が激しくなっていくなかで,より秀でたプログラマーになるためには,何が求められるでしょうか?
プログラミングで何かを作るには,文法の他にアプリケーションを設計するスキルや,ライブラリを選定するスキル,Webアプリケーションなら本運用し続ける環境を整えるスキル,運用するスキル,などさまざまなスキルが必要です。これらのスキルのうち,「プログラミングで何かを作るプロセスとスキル」「プログラミングで作りたいものを設計するスキル」をお伝えするのが本書です。本書を読み終わったとき,次のようになれたらすばらしいと思いませんか?
- 自分の作りたいものを着実に作るプロセスがわかっている
- どう設計すればアプリケーションとして良いものができるかがわかっている
- どういう場合にどのライブラリを使えば良いかわかっている
本書はそんな,単にプログラミング言語だけでないプログラミングの「中級な」「設計を含んだ」「うまく作るための」内容をお伝えする本です。少し読んでみると「プログラミングそのものの話題が少ない」と少し戸惑うかもしれません。ですがそれこそがプログラミング能力を活かして何かを作るために必要なことです。
我々ビープラウドは,在籍するスタッフの多くがコードを扱います。代表取締役も,営業の役割を担っている人間も,コードを読み書きします。現在の仕事は多くが受託開発で,大量のトラフィックを捌く必要があるコンシューマ向けのWebシステムや,ビジネス向けのWeb業務システム,機械学習によるデータ処理とWebの連携などが多くを占めているWeb系ソフトウェア開発という職種です。
ビープラウドでの開発プロジェクトは2~3ヶ月という短いスパンのプロジェクトを2~3名で開発することが多いため,1人が関わる範囲が広く,必然的に書くコードの量も多くなります。私たちにとってプログラマーとは,設計書をコードにする単純作業者のことではなく,やりたいことをまとめ,設計からコードにし,そしてリリースするまでをすべて1人でできる人のことを指しています。本当にすばらしいサービスやアプリケーションをつくり出すには,自走できるプログラマーが必要です。
とはいえ,すべてのプログラマーがはじめから自走できたわけではなく,組織のメンバーは常に入れ替わっていき,新しく参加するメンバーの中にはこれからいろいろなことを学んでいく人もいます。それは,技術的なつまづきと学びを繰り返して,その背景にある原理原則をメンバーそれぞれが見つけていく,長い旅のようなものです。ビープラウドには,この学びの旅をサポートする「教え合う文化」が根づいており,つまづいたときには先輩が親身になって助けてくれます。そこで先輩達が教えてきた履歴を見ると,新しいメンバーがなぜか必ずつまづいてしまうパターンがいくつもあることがわかってきました。こういった,設計からコードまで書けるようになるために知っておいてほしい技術的なトピックを集め,この本にまとめました。
本書は,プログラミング入門ならぬ,脱入門者を目指す開発者向けの指南書です。自走できるプログラマーであれば知っているであろういろいろな手法や観点を元に,「プロジェクトの各段階でプログラマーがやること」「その選択をどう判断するのか」「どうコードを実装して実現していくのか」を紹介します。一部の最新技術に注目するのではなく,実際のプロジェクトに適用して,プロジェクトを完成させるための指針をまとめました。