|
独断と偏見で理系のみなさん、プログラマー・SEを目指す皆様にお勧めする本を紹介するコーナーです。
|
ITエンジニア残業ゼロの働き方 〜現場で本当に使えた仕事効率化の法則95
今回紹介する本はITエンジニア残業ゼロの働き方 〜現場で本当に使えた仕事効率化の法則95です。 今でもITエンジニアは忙しく残業が多いイメージがある職種かと思います。実際私の勤める会社では多い人でも月60時間くらいですが、会社によってはもっと多いエンジニアもたくさんいるでしょう。その一方で残業はほとんどしなくてもきちんと成果を上げている人がいるのも事実です。
仕事の成果=効率×時間
です。当たり前ですが、残業時間を減らすためには効率をよくする必要があります。そのためには以下の3つが有力です。
このような仕事の効率化を解説する本はたくさんあります。また人は「自分の職種(や業種)は特殊でこのような当たり前のことを言われても自分には当てはまらない。」と考えてしまう人も多いです。そこで本書は実際にITエンジニアだった著者が編み出した95の原則を具体的に紹介しています。 特に若い人には参考になることも多い一冊だと思います。 気になった方はご購入はこちらでお願いします。
- 時間をうまく使う
- 作業量を減らす
- コミュニケーション能力を上げる
プログラムは技術だけでは動かない
今回紹介する本はコーディングを支える技術 〜成り立ちから学ぶプログラミング作法です。 このホームページを読みに来てくれている方は学生さんも多いと思います。プログラマは技術職というイメージを持っていないでしょうか?一人パソコンに向かって黙々とプログラムを打ち込んでいく。そんなイメージはありませんか?
しかし実際には違います。多くのプログラム言語に精通しており、様々なアルゴリズムを使いこなせる。さらにOSやネットワークにも強い。そんな人でも「使えない人」がいます。
例えば僕はデジタルカメラのファームウェアを開発していますが、CMOSなどセンサーを設計している部署、電気回路を設計している部署、仕様を決めている部署、特許を管理している部署など多くの部署とやり取りをします。実際にプログラムの設計やプログラムを書いている時間は半分もありません。センサーはどうやって動かせば良いのか、電力は足りているか、CPU使用率が高くなると放熱が間に合わないとか、いろいろなことを考え、最適解を考えてプログラムを設計しなければなりません。
ファームウェアでなくても同じです。どこかの会社がネットショッピングのサイトを作りたいと依頼を受けた場合、発注してくる会社はどんなサイトにしたいのかイメージは合っても具体的な仕様は考えられていない場合が多いです。そこでSEやプログラマは相手がどんなものを作りたいのかを引き出し、逆にこちらから提案して行く必要があります。
細かい仕様書どおりに実装するプログラマも必要ですが、実際に求められるのは、作りたいものを依頼者から引き出す能力、問題を解決する能力、提案する能力をもったプログラマが求められます。もちろん技術も必要ですが、コミュニケーション能力もそれ以上に必要です。
技術は勉強すれば身につけることも可能ですが、実際の仕事をうまく回すのには経験が必要です。本書は社長兼SEとして活躍した著者の経験談です。うまく行ったことも、失敗したことも紹介されています。人の経験を読んでもそのまま自分の経験にすることはできませんが、参考になることも多い一冊です。
ご購入はこちらでお願いします。
コーディングを支える技術――成り立ちから学ぶプログラミング作法
今回紹介する本はコーディングを支える技術――成り立ちから学ぶプログラミング作法です。 僕が大学にいた頃(と言っても情報系ではなく化学系なのですが)、メジャーなプログラミング言語と言えばC言語。特殊な用途でFORTRAN、COBOL、マシン語があると教わりました。卒業する頃にはオブジェクト指向と言うことでC++やJavaが脚光を浴び始めた頃でした。今では200種類近くのプログラミング言語があり、有名どころだとC言語、C++やC#、Java、Ruby、Perl、PHP、Python…あたりでしょうか。1年もたつとすぐに変わってきたりもします。
なぜこんなに言語があるのか。プログラムは道具です。何かを切りたい場合、はさみ、カッター、包丁、電気ノコギリ…用途によっていろいろな道具があるように、プログラミング言語も用途に応じてたくさんあるのです。ブラウザで動かしたい場合、パソコンやスマートフォンで動かしたい場合など、そういう場合でも異なってきます。 しかしすべてのプログラムに共通することが1つだけあります。コンピュータ上で実行されると言うことです。このホームページでも何度か書いていますが、人間がやりたいことをコンピュータにわかる用にしてやる言葉がプログラミング言語です。
話が本書からだいぶそれてしまっていますが、多くのプログラミング言語で共通したことと、その言語特有の決まり事というのがあります。繰り返して実行するときに使われる「for」「while」は多くの言語で共通しています。しかし同じ繰り返し処理をさせるのになぜ2つの文があるのでしょうか?
ここを読んでいる方はすでにおわかりでしょうが、繰り返しを行う場合10回繰り返したいという場合はカウンタに[i]を使ってfor文を使った方が楽です。とある条件になるまで何回繰り返すかわからないという場合はwhile文を使った方が楽です。
話は変わりますが、プログラミング言語には多くの演算子があります。四則演算を行う[+][-][*][/]やビット演算を行う[or][and]、大小関係を比較する[<][>]など。C言語ではこちらで解説していますが優先順位が決められています。この順番も理由があって決められています。
その他、変数の型、文字列をどう扱うか、例外処理をどうするか…。多くの決まり事に対して「なぜ、そう決めたのか?」を解説してくれるのがこの本です。
こういった素朴な「なぜ?」を知ると、プログラムを書くときに、見やすく、処理が速い、バグが少ないプログラムを書くことにつながります。プログラム自体を解説した本ではありませんが、ある程度の知識を得た方にぜひ読んでもらいたい一冊です。
ご購入はこちらでお願いします。
人間に勝つコンピュータ将棋の作り方
今回紹介する本は人間に勝つコンピュータ将棋の作り方です。といってもこの本は実際に将棋ソフトをプログラムしていこうという本ではありません。将棋における、日本とコンピュータの戦いの歴史を紹介した本です。 人間より強い将棋ソフトを作るというのは難しい。なぜならチェスは取った駒はそのまま。しかし将棋は取った駒を再び自分の駒として使えるようになっているため、アルゴリズムが複雑だからです。個人的には西洋のチェスは敵軍を殺す。しかし日本では尊い命を殺さず、自分のカリスマで味方にするという西洋と日本の違いにあり、命を重んじる日本の方がすばらしいかなと思います。西洋は宗教が違えばそもそも信じる神が違う。だから武将にカリスマがあっても味方にするのは難しいのかなと思いますがどうなんでしょうか。 話がそれましたが、そんなわけでチェスやオセロ(リバーシ)はコンピュータソフトとしても古くから作られ、得にチェスはIBMのスーパーコンピュータDeep Blueがチェスの名人カスパロフ氏をやぶり、世界で初めてコンピュータが勝利しました。オセロに関してはルールが単純なため、人間はほとんど勝てなくなってしまいました。 先ほども書きましたが将棋に関してはアルゴリズムが複雑なため、人類と勝負できるところまでくるのに、実に35年もかかりました。これはアルゴリズムを作るだけでなく、実際に対戦できるスピードにするハードウェアの処理速度の向上もあります。 さて、一言で将棋のアルゴリズムと言ってもいろんなものがあります。激指(げきさし)というプログラムは探索アルゴリズム、YSSというプログラムは0.5手延長アルゴリズムという方法です。Bonanzaは、ハードウェアの進化があったからこそ実現できたアルゴリズムで、力和zで可能な限り指し手を計算し、良い手・悪い手に点数をつけていき、ベストの指し手を決めます。 人類に初めて勝ったプログラム“あから2010”は激指しとBonanza、YSSなどを組み合わせたものです。こうして35年にわたる開発の末、清水女流王将に勝利することができました。 むつかしい部分も多いが、コンピュータの歴史を“将棋”を通してまとめたおもしろい本です。 ご購入はこちらでお願いします。
哲学的な何か、あと科学とか。
今回紹介する本は哲学的な何か、あと科学とか。哲学?科学?むつかしそうと思うかも知れませんが、この本はこむつかしい哲学の本や科学の本ではありません。哲学・科学の入門書でもありません。ただの読み物としても充分楽しい本です。 ネットで一時期話題になったので読んだこともあるかも知れませんが、ドラえもんのどこでもドアのお話。どこでもドアは説明する必要もないでしょう。遠く離れたところに移動できる架空のドアです。この仕組みを考えてみます。ドアを通った物を瞬時にスキャンし、その情報に基づいて目的地で物質を正確に再構築します。スキャンされた物質は実は瞬時に破壊されるのです。
いつものように寝坊したのび太君がドラえもんに頼んでどこでもドアを出してもらいます。でもここでのび太はふと疑問に思います。スキャンされた自分と学校で再構築された自分は本当に同じ人間なんだろうか?スキャンした自分は分子破壊光線で粉々にされたのでは僕は死んじゃうと言うこと?
ドラえもんは答えます。学校では体も脳も記憶も再生されたのび太君が学校で授業を受けるんだよ。
でも完全に同じように再現するのは無理でしょ。それは僕に似た他人だよと反論するのび太。
しかし全く同じものしか自分とは認めなければ、1秒後ののび太君はのび太くんじゃないと言うことだよ。
しずかちゃんや他のみんなだってどこでもドアをつかっているのに、君はしずかちゃんだと認識している。
そうこうしている間に本当に遅刻してしまう時間に。仕方なくのび太君はどこでもドアに入っていく。「しずかちゃん、おはよ〜!」「あら、のび太さん、おはよう。」
しかしどこでもドアでスキャンされたのび太は激痛と共に指が溶けていくのが見える。やはり自分は自分。僕は死んでいくんだ。そして僕に似た何かは今頃学校で授業を受けている。僕はここだよ…。ここを訪れているみなさんは理系の方だと思いますが、自分以外は実はロボットのような存在で意識を持っているのは自分だけなのではないか?もし自分の脳を右脳と左脳に分けてみたらどうなる?■←この四角は赤いけれど他の人にも同じ色に見えているの?そんなことを考えたことはないでしょうか? 哲学と言うと小難しそうなイメージですが、本書はそう言う本ではなく、考えることの楽しさと大切さを教えてくれる本です。
SEはクライアントが求めるものを想像する必要があります。と言うのはたいていソフトを発注するクライアントは具体的なイメージがあるわけではなく、抽象的にこんなソフトが欲しいと思っているだけです。その抽象的なイメージから具体的なイメージをSEは作り出す必要があります。つまりクライアントが抱えている問題とその解決を考えることが必要なのです。一方、プログラマはプログラムを設計した後にうまく動かなくてバグになることがほとんど。デバッグするときには、「きっとこうなっているからこうなってうまくいかないんだ。」と想像しながらデバッグ作業をする必要があります。もちろんSEやプログラマに限った話ではありませんが、言われたことを学ぶだけの学生から社会人になると常に考えていなければいけなくなります。考えることの大切さ、難しさ、そしておもしろさがわかる本だと思います。ご購入はこちらでお願いします。
文庫版も出たようです。文庫版
100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
オブジェクト指向スクリプト言語であるRubyのまつもとゆきひろ さんや、100人のスーパープログラマ・起業家・CIO(情報戦略統括役員)が選んだブックガイド! 著名人の方が、C言語の入門書から、英語の本、人を動かすなど自己啓発本・ビジネススキル本、受験に必要なスキル本など様々な100冊を紹介した本の紹介本。 この本を読んでみれば、もっと深く詠んで勉強したい本が見つかること請け合いです。
理系なお姉さんは苦手ですか?
「理系のお姉さん」と言われるとどんなイメージでしょうか?
文系の人に聞いてみると、1位〜3位までほぼ同率で「白衣」「メガネ」「黒髪」なんですって。一方、理系の人に聞いてみると「理屈っぽい」「数学が強い」「メガネ」がトップ3でほぼ同率。
実際に白衣を着た理系というのは、医学(看護、獣医を含む)、化学、薬学くらいですので、文系の人の「理系のお姉さん」というと、そう言うイメージなんですね。中には「血に強い」という回答もあったくらいですので。
一方、理系の人に言わせれば、理系と言っても千差万別。電気、機械、建築、情報科学など、いろいろあります。理系の人に言わせるとは悔いよりも作業着というイメージが強いくらい。僕も化学を大学で専攻していましたが、白衣と作業着の両方着ていましたし。そんなわけで、本書はテレビなどのメディアで活躍中の内田麻理香さんと、漫画『理系クン』で話題の高世えり子さんが、理系女性の生態を解き明かそうと、様々な分野で活躍中の理系人生に進んだ女性を取材し、漫画で紹介しています。理系のお姉さんというと、会話が変とか化粧っ気がなく、頑固というイメージは本当なのか。理解女性のユニークなガイドブックです。
伝える技術
「お使いを頼むわ。牛乳を1パック買ってきてちょうだい。卵があったら6つお願い!」しばらくして夫は牛乳を6パック買ってきました。妻は聞きました。「何でまた牛乳を6パックも買ってきたのよ?!」そこで夫は答えました。「だって卵あったよ。」 実際、卵があったから牛乳を6パック買う人はいないでしょう。でも妻の指示を1行1行確認していくと、
もし卵があったら→牛乳を6買う
それ以外なら →牛乳を1買う
とも解釈できます。人間なら、常識でしょ、行間を読めよと思いますが、コンピュータは行間も空気も気持ちも読んではくれません。言われたことがすべてです。つまりプログラマはすべてを指示しなければならないのです。この妻は、妻としては普通ですがプログラマとしてはちょっと足りません。つまり「卵があったら卵を6つ買ってきて。」と言わなければいけなかったのです。
正しく動作するプログラムを作るためには
> 正しくアルゴリズムを選び、ことが必要になります。 伝える技術を題材にしたビジネス書は星の数ほどありますが、本書はちょっと違っていて、“プログラム”は“コンピュータへの説明”と見なしてその能力を鍛える方法論などを紹介しています。
> 正しくコード化し
> 正しいデータを与えて
> 正しいマシンで動かすプログラマーはもちろん、プログラムの仕様を作る人にも読んで欲しい一冊です。
このページの先頭へ
本の紹介ページへ