ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

独習Pythonは、入門書の次のスモールステップとしてオススメ

山田祥寛さんが執筆した独習Pythonを拝読しました。

独習Python

独習Python

著者の山田祥寛さんは、WingsProjectという執筆者コミュニティ(会社でもある)を運営されていて、200冊近くのプログラミング、技術書籍の執筆、監修の実績があります。(その他、雑誌記事やWeb記事など多数)

私も2005年から2010年の期間、雑誌記事(JavaPress、DB Magazine、ムック本)やWeb記事(CodeZine、@IT)をWingsProjectの1メンバーとして執筆させていただき、山田さん(ご夫妻)に監修いただきました。Codezineに掲載したDjangoチュートリアルGoogleAppEngineの記事ははてなブックマークでホットエントリー入りもしました*1

前置きはこのあたりにして、独習Pythonの特徴を紹介します。

対象者

  • 入門書でPythonを動かしてみたが、知識が頭の中でまとまっていない人
  • 他言語を知っていて新たにPythonを学ぶ人
  • Pythonについて体系的な知識を学びたい人

Pythonの対応バージョン

3.8(この記事を書いた2020年8月時点で最新)

Pythonの文法を基本から応用までひととおり学ぶのに最適

Pythonプログラミングの入門書(たとえば、いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで 「いちばんやさしい教本」シリーズ)を読んで、なんとなくプログラムを動かせるようになった次のステップは何をすればよいでしょうか。

それは、Pythonの文法や書き方をひととおり憶えることです。

入門書の次のステップとして自分のつくりたいプログラムをつくりながら都度文法を調べるという方法もあります。

しかし、その方法だとなんとなく動いてしまったために適切な書き方を知らないままになってしまい、悪い癖がつくなどの弊害が生まれます。

そのようなことにならないためには、入門書の次のステップとしてはPythonの文法を網羅的に学ぶのが良いでしょう。

独習PythonはPythonの基本からひとつひとつ丁寧に説明が始まり、応用レベルの文法まで解説されています。

応用的な内容として、特にオブジェクト指向構文については110ページを割いて丁寧に説明されています(10章、11章)。

オブジェクト指向はプログラミングのレベルを上げるための必須スキルなので、じっくり読んで理解できるまで取り組んでみるとよいでしょう。

学ぶペースとしては基本的な内容である1〜8章を1日1章ペースでさくっと進め、9章〜11章は1節ずつ自分のペースで読み進めていくのがよいでしょう。

ひととおり学んだ後もプログラミングのリファレンスとして活用できる

山田さんの書籍の特徴は、書籍が網羅的でかつシンプルにまとまっていることです。独習Pythonもその例外ではありません。

網羅的でかつシンプルな構成なので、ひととおり学んだ後もプログラミング時のリファレンスとして活用できます。

プログラミングのときに手元に置いておくと役に立つでしょう。

私もプログラミングが主な仕事のときは山田さんの書籍で学び、知識を身につけていました。特に新しい言語を学ぶ時は手元に書籍を置き、ことあるごとに読み返していました。

プログラミングで大事なことが随所に書かれている

プログラミングには「書くことはできるが書かないほうが良い書き方」があります。

コードは他の人が最短時間で理解できるように書かなければならない」とはリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)に書かれている「読みやすさの基本定理」です。

「書くことはできるが書かないほうが良い書き方」をしてしまうと、他の人(将来の自分も含む)がプログラムコードを理解するスピードが落ちてしまいます。

文法を学んだだけではこれに気づくことができず、実践の場でレビューされて初めて気づく(もしくは気づかないままプロダクトコードに埋め込まれてしまう)などといったことになりがちです。

独習Pythonでは文法を説明するだけでなく、どのように書いたら良いかという点についても折りに触れて説明されています。

この説明を理解することにより、学んだ文法を適切に使うことができるでしょう。

まとめ

Pythonプログラミングの入門書を読んだ次の書籍として独習Pythonで文法をひととおり学ぶことで、中級プログラマーへの土台をつくることができるでしょう。

網羅的かつ簡潔にまとまっていますので、他言語を知っている人がPythonを学ぶ際にも役立つ書籍です。

Pythonの本もいろいろ出ていますが、これからPythonをじっくり学びたい人には独習Pythonをおすすめしたいと思います。

WebでPythonを学びたい人は、オンラインPython学習サービスのPyQもありますので、よろしくお願いします。

独習Python

*1:httpからhttpsへのURL変更でブックマーク数がリセットされてしまったのが残念です。

「自走プログラマー」は中級以上のPythonプログラマーになりたい人のための豊富なレシピ集

ビープラウドの清水川貴之さん@shimizukawa , 清原弘貴さん@hirokiky@tell-kさんが執筆(ビープラウド監修)した「自走プログラマー」が出版されます(大手書店は2020年2月18日から先行販売、電子書籍は2月22日販売開始、一般書店は2月27日販売開始です)。

自走プログラマーの前書きには「プログラミング入門者が中級者にランクアップするのに必要な知識をお伝えする本」と書かれています。

私なりに、入門、初級、中級以上のそれぞれのプログラマーのレベルをイメージしてみました。

  • 入門プログラマー
    • プログラミングの文法を学びながら書いている。プログラムが完成しないこともある。
  • 初級プログラマー
    • 見よう見まねで動くプログラムを完成できる。しかしレビューを受けると、多くの指摘があり、レビュー、修正ともに大きな時間がかかってしまう。行ったり来たり、止まったりの「迷子状態」にハマることが多い。
  • 中級以上のプログラマー
    • 動くプログラムを完成できる。レビューは指摘事項が少なく、少量の修正で済む。人の助けを借りる量も少なく自走している状態。

中級以上のプログラマーが持っている習慣

中級以上のプログラマーが持っていて、入門、初級プログラマーが持っていない習慣があります。

それは「すべての設計・実装に理由をもつ習慣」です。

中級以上のプログラマーは、設計や実装の理由を質問すると、明確な答えが返ってきます。

一方で、入門、初級プログラマーにレビューで質問をすると「なんとなく」「憶えていない」「Webからコピペしたので理由はない」というような答えがしばしば返ってきます。

中級以上のプログラマーは「すべての設計・実装に理由を考える」習慣をもっているために、プログラムやシステムの全体の一貫性が維持され、メンテナンス性、パフォーマンスにも優れたプログラムを書くことができるのです。細部まで心が行き届いている状況といえるでしょう。

入門、初級者の人がすべてに理由を考えられない理由

入門、初級者の人が理由を考えられないのには理由があります。

入門・初級者はプログラムを動かすための知識を1つしかもっていません。

それは、プログラムの入門書には「プログラムを動かす方法」は書かれていますが、設計や実装の選択肢やメリット・デメリットは書かれていないからです*1

設計や実装の選択肢を1つしか持っていないので、それが良いのか悪いのかわからないのです*2。そのため、設計や実装の理由を考えようにも考えられないのです。

設計・実装の選択肢を良いも悪いも含めて複数もっていれば、それぞれの案を比較検討できますし、少しずつでも理由を考えられるようになります。

「自走プログラマー」には、この良い(ベストプラクティス)・悪い(具体的な失敗例)の選択肢が良い・悪いも合わせて240(120のプラクティス☓2)個掲載されていますので、理由を考えるための「設計・実装の選択肢」を得ることができるでしょう。

この「理由を考えるための設計・実装の選択肢」が、前書きに書かれている「プログラミング入門者が中級者にランクアップするのに必要な知識」の本質です。

「自走プログラマー」の具体的な内容

自走プログラマーの目次は以下です。

第1章 コード実装
1.1 関数設計
1.2 クラス設計
1.3 モジュール設計
1.4 ユニットテスト
1.5 実装の進め方
1.6 レビュー

第2章 モデル設計
2.1 データ設計
2.2 テーブル定義
2.3 Django ORMとの付き合い方

第3章 エラー設計
3.1 エラーハンドリング
3.2 ロギング
3.3 トラブルシューティング・デバッグ

第4章 システム設計
4.1 プロジェクト構成
4.2 サーバー構成
4.3 プロセス設計
4.4 ライブラリ
4.5 リソース設計
4.6 ネットワーク

第5章 やることの明確化
5.1 要件定義
5.2 画面モックアップ

関数名の名前付け、関数設計から始まり、クラス設計、モジュール設計、ユニットテストと進み、レビュー、モデル設計、エラー設計、システム設計、要件定義と、ソフトウェアの小さな範囲からソフトウェア全体へと範囲が広がっていきます。

中級以上のプログラマーの意識は、機能をつくるというソフトウェアの「点」にとどまらず、開発するソフトウェアが安定して持続的に運用や開発を続けていけるのかという「面」にも視点が及んでいるのでそのような構成になっています。

プログラマーは、実運用で起きうるエラーや異常をあらかじめ認識したエラーハンドリング、そして迅速な状況把握を可能にするロギングができて、はじめて一人前です。

「自走プログラマー」では、エラー設計(ロギング)にも37ページの紙幅をとっています。

このように自走プログラマーは、本番運用まで見越した実践的な内容になっています。

「自走プログラマー」の活用方法

設計・実装の選択肢を得た上で「自走プログラマー」を以下のように実践で活用していただければと思います。

  • 「自走プログラマー」のプラクティスに書かれているように実装してみる。実装・設計のパターンを頭に入れる
  • 「自走プログラマー」にかかれている「具体的な失敗例」と「ベストプラクティス」の違いをひとつひとつ理解する*3
  • 「ベストプラクティス」ではない設計・実装をしたときにどのようなデメリットが発生するかを考える
  • すべての設計・実装に理由を考えることを始める・続ける

「自走プログラマー」のひとつひとつのプラクティスは日々の開発で「理由」を考え抜いて得られたものです。料理でいうとプロの料理人によって考え抜かれたレシピ集です。

これらを読んでいくことで、中級以上のプログラマーが、日々どのようなことにこだわり、思考を積み上げているかを知ることもできるでしょう(中にはそこまで考える必要あるの?というものもあるでしょう)。

最後に

中級以上のプログラマーには誰もが一足跳びには到達できません。

日々のひとつひとつの仕事(設計・実装)に意味・理由を考えて、思考を重ね、洗練させていくなかで、徐々にそのレベルに到達していきます。

日々、すべてに理由を考える習慣を続けられる人は、短い期間で初級者から中級以上のレベルに達することができます

逆にいうと、日々すべてに理由を考える習慣のないプログラマーは何年経っても初級プログラマーから中級以上のプログラマーに進化はできないでしょう。これは厳しいようですが現実です。

このようにならないためにも、理由を考えるための設計・実装の選択肢と、中級以上のプログラマーの考え抜く視点を「自走プログラマー」から手に入れてもらえればと思います。

そして、得た知識をもとに、すべてに理由を考える習慣を始めるとよいでしょう。

入門・初級レベルのプログラマーの方は是非とも、中級以上のプログラマーを目指しましょう。

一回このレベルに到達すれば、プロフェッショナルなプログラマーとして安定した成果が出せますし、周囲からの信頼も高くなるでしょう。

そのための入り口として「自走プログラマー」を是非お手にとっていただければと思います。

自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120

*1:これは入門書という性質上仕方のないことです

*2:良い悪いは相対的なものなので

*3:プログラミングの設計や実装の違いは、小さなこだわりであることもしばしばあります。そのため違いを理解できないこともあるかもしれません。読書会を開催して複数の視点から考えるのも良いかもしれません

「ザッソウ」は価値を創造するチームのための導入しやすいコミュニケーションガイド

ソニックガーデン社の倉貫義人さんが執筆された「ザッソウ」を拝読しました。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

「ザッソウ」とは

「ザッソウ」とは雑談+相談の造語です。

本書のメイン・テーマは、雑談と相談をチームコミュニケーションの土台にしていくことの提案です。

書籍を読んで感じた本書の特徴や感想を以下にあげていきます。

「チームの価値創造力」を高めることが中心コンセプト

私が「ザッソウ」を読んで納得感を感じたのは、チームが価値を創造し、成果を生むために「ザッソウ(雑談と相談)」が必要という観点から全体が書かれていることです。

チームの心理的安全性を高めたり、働きやすい職場をつくるのはなぜでしょうか。

その理由をつきつめると、チームが価値を創造し、成果を生むためです。

その目的を忘れてしまうと、うまくコミュニケーションを取っているようでも、実は衝突を回避したり、嫌われないための表面的なコミュニケーションだったりすることも多々あります。

本書は、チームが価値を創造し、成果を生むことを目的とした、しかし敷居が低く取り組みやすいコミュニケーション方法としての「ザッソウ」を提案していることに、書籍の骨太さを感じました。

チームコミュニケーションを俯瞰するための理論がまとまっている

雑談や相談によってコミュニケーションが活発化した結果、チーム内で衝突が起きるなどチームに変化が起きます。

また、日々、漫然と雑談していてよいのだろうかという不安に襲われることもあるかもしれません。

そのような時に、役立つのがコミュニケーションや心理学の理論です。

本書で紹介されているチームコミュニケーションの理論を知っておくことで、チームに起きた変化や現在地点を俯瞰できます。

それにより、自分たちの状況を客観的に考えることができるので、対策を考え、行動できるようになるでしょう。

また、ザッソウの目的・効果を知っておくことで、チーム内のザッソウの内容も時間とともに進歩していくことでしょう。

本書では紹介されている主な理論は以下のようなものです。

わたしも紹介されている理論は部分的には知っていたのですが、書籍にまとめていただいたことで、それぞれが関連付けられ深く知ることができました。

チーム内での役割や個人の段階に応じて読むことができる

本書は、チームリーダーやメンバーなどチーム内の役割や成長の段階に応じた、ザッソウのコツや考え方が書かれています。

  • チームリーダーが、チームのコミュニケーションを活発化し、チームのレベルを高めていく考え方、ザッソウを促すコツ
  • 経験の浅いメンバーが、チームでザッソウする考え方やコツ

自分の状況に応じて、必要な箇所を読んでみるとよいでしょう。

また、経験の浅いメンバーがリーダーの気持ちや考えを知ることもでき、リーダーもメンバーの気持ちを知る(思い出す)こともできるでしょう。

各個人が、自分と違う役割や段階の人についてお互いに知ることで、チームのコミュニケーションレベルもあがり、チーム力の底上げにつながります。

最後に

これからの時代は、人が時間をかけて作業していた単純な仕事は、AIやロボットによって自動化されます。

そのような時代では、人にしかできない仕事が人の仕事になります。

その仕事とは、未来のビジョンや実現したい価値を描き、それをカタチにし、価値を創造していくことです。

そのような仕事は、ひとりではなく複数人のチームで実現していくことになります。

そのときには、チームとしての創造力を高めることが、価値の実現につながります。

なぜなら、創造力に必要な、想像力、知識、発想、アイデア、技術力、視点、ビジョンなどは、人とのコミュニケーションから生まれてくることが多いからです。

チームの創造力を高め、最大限に価値を実現するためのコミュニケーション手法が「ザッソウ」です。

本書を読めばわかりますが、ザッソウは導入の敷居が極めて低く明日からでも始められます。

仕事の期限に追われているときは、少しでも早く手を動かしたい気持ちになります。

しかし日頃から「急がば回れ」の発想で「ザッソウ」を導入することで、ビジョンの実現に速く近づくチームになれるのではないでしょうか。

「ザッソウ」を価値を創造するチームのためのコミュニケーションガイドとしておすすめします。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

*1:書籍を参照してください

「正しいものを正しくつくる」は、エンジニアの傲慢が詰まった書籍か

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで」の著者、市谷聡啓さんが2019年6月に出版した「正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について」を拝読しました。

正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について

本書をおすすめしたい人

  • プロダクト開発において、アジャイル開発での進めかたを知りたい人
  • アジャイル開発チームのプロダクトオーナー(ビジネスサイド、企画者)
  • プロダクト開発チームが所属している会社の経営者
  • アジャイル開発を新たに学びたい人
  • アジャイル開発をひととおり知っているが、あらためて学びたい人

「正しいものを正しくつくる」という中心理念

本書のAmazonレビューを見ていたところ、星1つのレビューを見つけました。

エンジニアの傲慢さが詰まった本

「正しい」という言葉を使うエンジニア、同じエンジニアとして非常に恥ずかしい思いです。 「正しいもの」など誰がわかるのでしょう?わかるのなら皆誰も失敗などしないでしょう。

書籍のタイトルだけを見たら、このように考えるのもおかしくはありません。

必ず成果が出る「正しい」要求や仕様をビジネスサイドから提供されれば、それにもとづいて作りますというエンジニアも世の中には存在するからです。

しかし、本書に描かれているアジャイル開発チームの考え方は、真逆です。

プロダクト開発のプロジェクトは「不確実性*1」と常に背中合わせです。

その状況のなかで「正しいものとは何か?」という問いを立て、仮説検証しながらつくるべきものを探り、開発においては「正しくつくれているか?」を日々確かめる、謙虚で思慮深いアジャイル開発チームの姿を本書からはイメージすることができます。

プロダクト開発において「正しさ」はプロジェクトが続く限り、追い求めていくものであり、問い続けていくものです。

「正しいものを正しくつくる」という言葉は、本書の内容を読めば、いうまでもなくエンジニアの傲慢ではないことがわかります。

「正しいものを正しくつくる」とは、「正しいものとは何か?」「つくっているものは正しいといえるか?」「正しくつくれているか?」と問い続けるチームをつくるための中心理念であるといえるでしょう。

チームが不確実性と戦っていくための戦略の書

本書の第4章「アジャイル開発は2度失敗する」で、アジャイル開発チームは2つの壁につきあたると説明されています。

  • アジャイルに作ることによる困難の壁

    • アジャイル開発を習得することそのものの難しさによる困難
  • プロダクトの成果が上がらないという壁

    • プロダクトをリリースしたが売上が伸びない、使われない

本書は、これらの壁をアジャイル開発チームが乗り越え、成長し、成果を出すための考え方と取り組みを順を追って説明しています。

その説明の深さと内容は、アジャイル開発チームが不確実性と戦っていくための戦略の書であるといえます。

アジャイル開発の基本を学べる

本書はアジャイル開発そのものについても、ボリュームを割いて丁寧に説明しています。

アジャイル開発の一般的な説明というよりも、プロダクト開発という文脈を起点にアジャイル開発を説明しているので、より実践的な説明であるといえるでしょう。

そのため、アジャイル開発について入門したいという人から、アジャイル開発をあらためて学びたいという人にもおすすめです。

最後に:著者のプロジェクト経験から学ぶ

アジャイル開発に関する書籍では「アジャイルで開発すればうまくいく」という内容になりがちです。

しかし、本書ではアジャイルに開発するだけではうまくいかないことにしっかりと目を向けています。

本書は、チームがアジャイル開発における失敗から学び、成長していく過程を追体験できる構成です。

愚者は(自分の)経験に学び、賢者は歴史(他人の失敗)に学ぶ*2といいます。

プロジェクトのチームに与えられる時間も、人生の時間も限りがあります。

アジャイル開発でプロダクト開発に取り組む方々は、自らの経験と失敗の中から学ぶのもよいですが、本書の著者の失敗と経験の中から得た知見から学ぶのはいかがでしょうか*3

P.S

私は自分の血肉になりそうな書籍は、図にまとめて理解を深め、ことあるごとに参照するようにしています。

「正しいものを正しくつくる」を拝読させていただき、今後何度も読み返す書籍であると思い、図にまとめました*4

本書のさらなる内容紹介になれば幸いです。

f:id:haru860:20190721100551p:plain

*1:不確実性とは、起こりうる事象はわかっているが、それが起こる確率が事前に予測できないという性質のこと

*2:オットー・フォン・ビスマルク(初代ドイツ帝国宰相)の言葉

*3:それでも、多くの失敗をするでしょう

*4:書籍内の全体構成図をさらに加筆

「いちばんやさしいPython機械学習の教本」は、機械学習の実践的入門書

いちばんやさしいPython機械学習の教本」をビープラウドのメンバーで執筆し、上梓しました。

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

  • 作者: 鈴木たかのり,降籏洋行,平井孝幸,株式会社ビープラウド
  • 出版社/メーカー: インプレス
  • 発売日: 2019/06/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

本書をおすすめしたい人

  • 機械学習の基本理論を学びたい人
  • 将来、AIを活用して仕事を楽にしたい人。そのために基礎を学びたい人
  • いつかはAIを開発してみたい人。そのために基礎を学びたい人
  • AIリテラシー(AIについて知識を持ち、活用・応用する能力)を身につけていきたい人
  • Web開発者でAI・機械学習についての知識を身つけたい人

本書執筆の背景

本書のタイトルにある「機械学習」とは、AIを実現するための技術のことです。

機械学習という名前は、コンピュータ(機械)がデータのパターンを学習し、未知のことを予測ができるようになることからつけられています。

世の中では、AI(AIを実現するための機械学習)を活用し、人が担ってきた仕事を代替しようという動きが盛んです。

機械学習を実装するために一番使われているプログラミング言語がPythonです。

そのためPython+機械学習を学びたいというニーズが増えてきました。

そのニーズに応えるかたちで、本書を執筆しました。

本書の基本構成

本書はAIのbot(本書内では「pybot」)*1に、以下のような機能をPythonでプログラミングし、学習を進めていきます。

  • 書籍データ検索(データ収集)
  • 文章自動生成(自然言語処理)
  • 手書き文字認識(機械学習)
  • 気温予測(機械学習)

f:id:haru860:20190708060713p:plain
本書で開発する機能の全体像

簡単なAIのbotをつくることで、AIがどのように動いているのかの基本を知ることができます。

本書の特徴

仕組みや理論を図解を中心に説明しているので、機械学習の概念を理解しやすい

新しいことを学ぶときには、図で全体を俯瞰した方が早く理解できます。

本書では、機械学習システムの全体像やデータ処理(文章、画像、表形式データ等)の流れ、構造などをカラー図解で丁寧に説明しています。

機械学習の説明やプログラミングコードなどをひととおり読んだあとに、これらの図解を繰り返し参照するとよいでしょう。

全体との位置づけや処理の流れをイメージしながら、知識を定着させることができます。

機械学習の基本を手を動かしながら学び、理解を深めることができる

機械学習の説明を読んだだけでは、理解が浅くなりがちです。

実際にプログラムを書き、動かすことで説明の内容が理解できることもあります。

本書では、機械学習のPythonプログラムを開発し、Webで実行可能なAIのbotに機能を追加していきます。

慣れてきたら自分で機能をつくりかえたり、データを変えてみてもよいでしょう。

プログラミングや機械学習の応用力が身につきます

そして、プログラムが動いたらふたたび説明を読み返しましょう。

理論と実践がさらに結びつき、理解が深まります

今後、機械学習を学び続けるためのベースとして活用できる

本書の内容の全体像を下図に示します。

f:id:haru860:20190708060924p:plain
本書の構成

全体構成は以下のとおりです。

  • Chapter1:機械学習の概要、全体像や学習の進め方
  • Chapter2:機械学習の開発環境準備
  • Chapter3〜7:機械学習と関連技術の機能をプログラミング
  • Chapter8:本書を学んだあとの次のステップ

本書の構成はシンプルですが骨太です。

1章でまずは機械学習の全体像を理解していただき、そのあとに3〜7章で理論の理解と実践をしていただければ、機械学習の第一歩を踏み出したといえる内容になっています。

そして、本書で学んだあとの第二歩目を歩むために、Chapter8でさらに学習を続けるための情報源(Webサイト、書籍、コミュニティ)を紹介しています。

本書の知識をベースとして、Chapter8に書かれた情報源にアクセスし、さらに学習範囲を広げ深めていただければと思います。

最後に

「いちばんやさしいPython機械学習の教本」は、著者以外にもビープラウドのメンバー17名がレビュアーとして参加しました。

書籍の内容や説明も、自信のある品質に仕上がりました。

本書で、機械学習の基本と仕組みを学び、Pythonで実装するための第一歩を踏み出してみてはいかがでしょうか。

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

まずはPythonを学びたいという方へ

本書内のサンプルプログラムはシンプルですが、Pythonプログラミングの基本的な知識を持っていればスムーズに学習に入れます。

Pythonをまずは学びたいという方は、姉妹書のいちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで (「いちばんやさしい教本」シリーズ)をご参照ください。

以下は「いちばんやさしいPythonの教本」の紹介記事です。

shacho.beproud.jp

*1:botとは、人間に代わって作業を行うコンピュータープログラムの総称

DevLOVE Xに参加したまとめと感想

2019/6/22(土)、23(日)にDevLOVE Xに参加しました*1

f:id:haru860:20190622104709j:plain

私は2日間で11セッションに参加しました。

今後に役立てるためにも、ブログにまとめたいと思います。

参加の目的

DevLOVE Xには、以下の目的で参加しました。

  • いまのIT業界で活躍しているひとたちが、いま何を考えどのようなことを話すのかを聴き、2019年6月時点のIT業界、エンジニア界隈の動向や雰囲気を感じる
  • 自分の知識や感覚をアップデートする
  • アップデートした結果を、自分の行動と会社の事業につなげる

感想

全体

登壇者のメンバーが豪華で、かつ内容も興味深いため、各時間帯でどのセッションに参加するのに迷いました。これだけのメンバーが集ったのは今までのDevLOVEの方々の取り組みの結果かと思います。

イベントの内容、活気・雰囲気ともに、今後の記憶に残る素晴らしいイベントでした。

スタッフのみなさん、登壇者のみなさん、素晴らしいイベントをありがとうございました。

各セッション

  • 各セッション、登壇者の方々が時間をかけて準備されていてるのがひしひしと伝わってくる質の高い発表でした
  • 主催側から登壇者が自分のこと(この10年とこれからの10年)について話してくださいと依頼されているらしく、情報や知識だけではなく登壇者のいままでの歩みを聞けたのがとても楽しめました。ヒトの人生はひとつのエンターテイメントであり、素晴しいコンテンツになるなと感じました。
  • 早く行きたければ一人でいけ 遠くへ行きたければみんなでいけ。」の言葉が、4人の発表スライドに登場したので、「Whyから始めよ」とともに、DevLOVEコミュニティの共通認識として浸透していて素晴らしいとおもいました
  • 各発表に、エンジニアがいま考えていること、どのようにしていきたいかということがにじみ出ていました。非ITエンジニア系の経営者やITエンジニアと仕事をするビジネスサイドの方々は、今回のDevLOVE X のようなテーマのイベントに参加するとITエンジニアの気持ちが分かって良いと思います*2

会場、その他

  • NAVITIMEさんの会場が素晴らしかったです。各部屋のスクリーンも大きく、壁を取り除いて大きな会場にできるのも羨ましいです
  • 体調不良で土曜日の朝から声が出なくなってしまいました。いろいろな人とお話したかったのですが、懇親会に出ても何も話せないので、泣く泣く撤収しました。

各セッションのまとめ

以下は、個人的なメモ・学び、感想です。

※ 参加した11セッション全てなので長いです。

参加したセッション(敬省略)

及部 敬雄 「【勝手に基調講演】アジャイルで目指した坂の上の雲」

資料

https://speakerdeck.com/takaking22/clouds-above-the-hill

参加目的
  • モブワークに取り組み、チームでFAした及部さんのチーム論、マインドを知るため
学び・持ち帰ったこと
  • チームワークの改善を進めると、プロダクトオーナー領域にボトルネックが集まる
    • そのため、チームメンバーが越境し、プロダクトオーナー領域の仕事を考え、取り組むことが必要
  • チームの力を上げてから個人の力を上げていくのが取り組みやすいし、進めやすい
    • ただし、チームを個人の隠れ蓑にしない
  • 良いチーム = 個を成長させるチーム、チームを成長させる個
  • タックマンモデル(チームの状態遷移) 形成期→混乱期→統一期→機能期
    • 機能期にとどまるのは停滞するリスクがある。
    • 新しい取り組みで、安定を壊し混乱期に戻さないと、チームは成長していけない
感想

及部さんの経験から、自分の言葉で語られていたので納得感がありました。個人の成長が組織の成長につながると思っていましたが、チームの力を上げてから個人の力を上げるほうが取り組みやすいという話は参考になりました。

篠原 徳隆 「ゼロイチ人材の存在意義と生存戦略」

資料

参加目的
  • 自社でゼロイチで事業を立ち上げているので、ゼロイチ人材に必要なスキル、仕事、マインドについて知る
学び・持ち帰ったこと
  • 不確実性に取り組むには、一つずつ、背骨を作りながら進めること
  • 専門家になる必要はないが、専門家に依頼できるように情報を集め、学ぶ
  • プロダクトを作るときは、全て実行する要素。一つでも欠けてはいけない
  • プロダクトをつくるときは美意識が大事
  • ゼロイチ人材の要素(以下のスライドの左半分)
感想

ゼロイチに求められる人材と、それを成長・拡大させていく人材では、タイプ、特徴、役割、求める能力、仕事が異なってくるし、適正があるということが、篠原さんの話を聞いていてわかりました(篠原さんはゼロイチ人材の方が得意)。

資料がきれいにまとめられていて、自社でゼロイチ(0→1)、イチヒャク(1→100)を組み立てる時に、全体を俯瞰するための資料にスライドが役立ちそうです。

発表の筋からは逸れますがヴァル研究所のように、データ、資産をもっているとそのリソースをもとに数多くの事業を立ち上げることができるのだなと思いました。

小島 英揮 正しいコミュニティを正しくつくる ~コミュニティ成長の不確実性をいかに乗り越えるか?~

資料

参加目的
  • コミュニティを発展させていくための考え方を知る
  • コミュニティをマーケティングにつなげ、ビジネスにつなげていく考え方を知る
学び・持ち帰ったこと
  • コミュニティのアウトプット
    • コミュニティのアウトプットが増える→コミュニティを軸にフィードバックループが出来る→興味を持つ人が増え参加者が増える
    • コミュニティのコンテンツの質を上げるには?メインセッションとLTセッションを用意する
  • コミュニティの関心軸によるグロース
    • コミュニティを大きくするには、関心軸に人が集まるようにし、コミュニティをオープンにする
    • 関心事のコンテキストがゆるいと、ゆるいまま終わっていない
    • 関心事軸ではなく、ヒト軸(有名人軸)でコミュニティに人が集まると、内輪ウケ、ヒエラルキー(有名人に近いかどうかで決まる)、マンネリ化が起こりやすい
    • 無料のピザとビールで参加者を集めているうちはコミュニティは発展しない。人は増えるがノイズが増える。500円でも1000円でも参加者から集める
  • コミュニティ内での役割と立ち位置
    • コミュニティを始めたときは、リーダーとフォロワーが大事。ワナビーズは気にしない
    • リーダーにフォロワーがつかないと、リーダーは変な人のまま
      • ワナビーズよりもフォロワーになる。そうすると世界が広がる
    • コミュニティで、登壇側に回ると変化する。話しかけられやすくなる。フィードバックをもらえる。1をアウトプットすると10のインプットが集まる
  • その他
    • オフラインファースト
      • オンラインで、その場を盛り上げられるファシリテーターは稀有
    • 1つのテーマに20人くらいしか集まらなかったら分科会にする(株分け)
感想

コミュニティを発展させるためのポイント、軸がよく理解できました。フォロワーの重要性という話は自分も心に留め、自分がリーダーではないコミュニティでも実践できればと思います。

伊藤 英明 あるUXerがバズワードに翻弄される10(+10)年の話

資料

参加目的
  • UXを仕事にしている人がどのような仕事をし、何を考えているかを知る
  • 自分がUXの仕事に携わるときの知識を得る
学び・持ち帰ったこと
  • HCD(Human Centered Design)
  • UXデザイナーとして担っていた役割
    • 決めるための情報を集める役割
    • PMとともに決める役割
  • Product Ownerも兼務していた
    • 決めたことを開発チームと共有する役割
    • 要件どおりの開発がされたかを確かめる役割
  • MVPキャンバス
  • UXRED
    • 属人的に語られていたUXデザイン従事者の現状課題を明らかにする
    • 解決のためのアクションをとる
    • スライド(P.56)
  • UXD従事者のスキル・役割が不明確なために、ステークホルダーの漠然とした期待に応えることに時間を費やしている。その一方でUXデザインの価値を高める活動が不十分
  • 事業企画にUXD従事者を参画させる
感想

UXデザイナーの役割、定義があいまいで、多能工になりがちという話が参考になりました。そのため、実プロジェクトでは、UXの定義・範囲はしっかりと定めておく必要がありそうと認識できました。「人間中心設計」についても、学んでみようと思います。

安井 力 何だかんだ言っても好きなことが役に立ってきた

資料
参加目的
  • 「アジャイルな見積りと計画づくり」を折に触れて読んでいるので、その翻訳者のやっとむさんのお話を聴講する
  • 好きなことが役に立ち、生きていけるという実例を聞き、参考にする
学び・持ち帰ったこと
  • プランニングポーカーは、ただ数字を出すのではなく、出した数字について対話し、知っていること、知らないことを引き出すことがだいじ
  • 心理的安全性
    • チームが機能するとはどういうことか→買いました
    • 心理的安全と責任(4つの組織的元型)
      • スライド(P.45)
      • 心理的安全が高くて、責任が高い方が学習につながり成長できる
      • 心理的安全性が高くて、責任がない場合、快適なだけ
    • 心理的安全はチームの人間関係に限らない
      • ユーザー、顧客、マネージャーとの関係での心理的安全性は大事
  • 生きがい・至福
  • 正しさよりも好きかをまず考える
  • 「アジャイルな見積りと計画づくり」、10周年イベントが企画進行中らしい
感想

日々の仕事では「取り組むべきかどうか」を中心に考えがちです。お話を伺い「好きかどうか考える」というひとつの視点を得ることができました。ただ、当然ですが「好き嫌い」だけで仕事を進めないようには注意したいと思います。

書籍「アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~」のポイントも聴くことができて参考になりました。

原田 巌 アジャイルで忘れてしまったもの、そして、再び拾い集めたもの 〜モデリングもしないでアジャイルとは何事だ!から早幾年〜

資料

参加目的

  • モデリングとアジャイルの関係を知る
  • アジャイルで忘れてしまったものとは何かを知る
学び・持ち帰ったこと
  • V字モデルを心の中にもっていない人が多い。V字モデルというと、ウォーターフォールをイメージするかもしれないが、そうではない。ソフトウェア開発で必要な作業を示している
  • V字が直線になる瞬間
    • どの段階にいても、常に話の要求元を考える
  • 「抽象化が難しいからモデルが書けない」→現実はもっと難しいので、皆がどのように現実を捉えているためにもモデリングは取り組む必要がある
  • モデリングは、できるか、できないかじゃない。やる!」 手を動かすことが大事
  • モデルを通して対話をする
感想

世の中の開発現場では、図が書けない、モデルが書けない(設計ができないと一緒ではないでしょうか)、開発の全体が見えてない人が多い、というのが感じられました(私もその認識でしたが、同じなのだなぁと)。アジャイル+モデリングを広めてほしいです。

漆原 茂 10年後の僕たちに送りたいメッセージ 〜未来のエンジニアに幸あれ〜

資料

参加目的

  • デブサミ2019で、ベストスピーカー総合1位になった漆原さんのお話を聴講する
  • 自分の今後の10年について考える
学び・持ち帰ったこと
  • 大人になると時間が早く過ぎるのは、人生にトキメキが無くなったから
    • 大事な人生ボーッと生きてんじゃねーよ!ということ
  • 歳を重ねても覚える能力は低下しない
    • むしろ年を経てからピークを迎える能力もある(人の気持ちを感じ取る力、世界を把握する力など)
  • 時代や技術の変化は激しいが、10年後も明るいどMに徹しろ
  • 急に素人でゼロから始めることを恐れない(邪魔するもの:プライド、不安、嫉妬)
  • 超一流を産む→10年以上の継続的な鍛錬の結果(10000時間)。得意と感じるには1000時間で良い
    • まず最初に楽しく没頭して1000時間取り組み「得意」にする
  • 新しい知識習得は記憶力や脳の処理能力を向上させる
    • 有酸素運動も毎日40分続けると1年後には脳の能力が向上している
感想

「私はもう年取ったから」「若いときより能力が衰えたから」といって何もしなくなってしまうのか、それとも時代の変化を楽しみ新しいことに取り組むのかで、540度違うと認識できました。自分の日々新しいことにチャレンジしていきたいと思います。

沢渡 あまね 『仕事ごっこ』をやさしく滅ぼす

資料

目的

  • 仕事ごっこを自社で撲滅するため

学び・持ち帰ったこと

  • 仕事ごっこの定義
    • 生まれた当初は合理性があったものの、時代や価値観の変化、技術進化にともない、生産性やモチベーションの足をひっぱる厄介者と化した仕事や習慣
    • コラボレーションひいてはその組織とそこで働く人の健全な成長を邪魔する形骸化した仕事や慣習。あるいは仕事のための仕事
  • 紙の仕事のトラップ
    • 紙の作業は悪気なく仕事を邪魔する。
  • わがままなお殿様
    • 社内接待による、きれいな資料、社内プロセスの大量生産
    • 上司が威圧的に要求(無意識のマウンティング)→部下がディフェンシブになる→ムダな仕事発生 の流れ(私の私見)
    • 偉い人になりたがる人は、江戸時代の殿様になりたいのだろう(私の私見)
  • 時代遅れのビジネスマナーで、組織内のコラボレーションが遅くなっていくと組織の力が失われていく。ブランドイメージも下げることになる→アップデートしよう
  • 従業員に拒否権のまったくない、一方的な転勤制度
    • (感想)海外に支店つくったから行ってきてくれとか、自分にはできないなぁ(本人が行きたいなら可)

感想

世の中の会社で起きている切実な現実:仕事ごっこが、童話風にユーモアに語られ、どの話も記憶に残りました。2019/7/6に発売される書籍「仕事ごっこ ~その“あたりまえ"、いまどき必要ですか?)」が世の中に広まり、仕事ごっこに携わる多くの人が解放されてほしいです。

中川 伸一 「Lean Baseball - 技術と野球とPythonから学んだこと」

資料
目的
  • ブログでホームランを飛ばす中川さんの極意を聴講する
  • 野球についてひとつでも学び、知識を得る
学び・持ち帰ったこと
  • 「自分のことば」で書いたコンテンツは強い( ポジション・トークと煽りをやめる )
  • 読む人を定義する
  • 単に本を紹介するだけではなく、学び方やそのときのトレンドも含めて伝える。
  • 複数人(推定25〜334人)に同じことを聞かれたら、それをブログコンテンツにしたら当たる
  • 経験値からだけで仕事をしないようにする。そのために、ゼロベースに戻る、新しいことを始める
  • 個人の活動は、常にホームランを狙う(インパクトが残るようなことをひたすらやる) 。ホームランは狙って打つ
感想

ホームランを狙うといっても、力任せに振って入ったまぐれのホームランと、技術と読みをもって狙って打ったホームランは、540度違います。中川さんは最初にまぐれで本塁打を打った(結果、炎上)かもしれませんが、そのあとは、技術と読みを使って狙って本塁打(ヒット記事)を打ってきたと思われます。

ホームランは、地道に技術力を磨き、リーン思考で仮説と検証を繰り返して、読みの精度を上げてきた賜物でしょう。

羽山 祥樹 人にうれしいAIのUXデザイン - Googleの「People + AI Guidebook」をひもとく

資料

目的
  • People + AI Guidebookに興味があったので、内容を知る
  • Human Centerd Designに取り組んでいる人の話を聴き、UXまわりの知見を増やす
学び・持ち帰ったこと
  • 本家サイト https://pair.withgoogle.com/
    • 2019/5/9 のGoogle I/Oで発表
  • 翻訳サイト(羽山さん翻訳) : http://storywriter.jp/pair/
  • ユーザーニーズ+成功の定義
    • システム全体でユーザー体験をつくる
    • 裏がAIかどうかはユーザーには関係ない(学習が不足しているとか)
  • 技術の使い方。自動化が好ましいのか、人の力を拡張するのが良いのか
  • 期待値のデザイン
    • メンタルモデルが誤っていると、ユーザーの期待とズレが生じる
      • AIは人間と同じような振る舞いすると期待してしまう
      • 身の丈にあった事前期待にする
    • 期待値はプロダクト以外でも作られる
      • 類似の機能やプロダクトの、既存のメンタルモデル
      • マーケティングメッセージ
      • オンボーディング
      • マニュアル
  • 人間が技術に歩み寄る
    • ITリテラシーがあるように、AIリテラシーもある。時間をかけて浸透させていく
  • エラー+上手な失敗

感想

今後、AI、機械学習を使った、システム企画などが増えてくると思われます。その際に「People + AI Guidebook」は役に立ちそうです。羽山さんのスライド、翻訳サイトともに活用させてもらいます。

カカカカック 技術ブロガーを育てる!ブログメンタリングで何を教えているのか

資料
目的
  • ブログメンタリング(ブログメンタル)について学び、自分のブログ執筆に役立てる
  • ブログについてあらためて考える
学び・持ち帰ったこと
  • 公開URLでアクセスできるアウトプットこそ重要 Public URL-ize
  • 社内向けでも、汎用化し公開URLにするのが大事
  • なぜブログを書くのか?
    • ①忘れないようにメモを残したい
    • ②理解を整理してもっと詳しくなりたい。執筆を通して理解を深める
    • ③誰かの役に立ちたい
    • 相乗効果 自分のことを知ってもらう
  • ブログを続けるメンタルと習慣
    • 習慣化できないひとは、平日と休日という言葉をつかう。1週間に平日も休日もない
      • 習慣化できないひとは「休日にやる」という
    • 「仕事が忙しくて書けません」 ブログよりも仕事が大切という、暗黙的な価値観に疑問を投げかける→ブログを自己成長に置き換えたらどう?
    • 1週間168時間ある。無限のパフォーマンスが出せる!
      • 1週間は冷静に見ると長い。時間を浪費してないかを確認しようということ
    • 書けない理由のすべてに解決策を提示する
      • 「旅行に行くので、ブログが書けません」→前々から予定は決まっているので、事前に記事を下書きしておく→仕事が忙しくなる週なども想定し、常に下書きを持っておく
      • 習慣から外れるのは例外的なことが起きたとき
        • 例外に対応できるように準備しておく
  • ブログを趣味として考えたら
    • たとえば旅行が趣味の人が、旅行に行くのが苦痛だとか、憂鬱だとかはない
感想

ブログを書くメリットは感じているのになかなか書けない自分がいましたが、ブログを続けるマインドを学べたので活かしたいと思います。

今後ブログを習慣化できるように、今回の話を参考に自分の中のメンターをつくろうとおもいます。「ブログを趣味と考えたら」というは発想は新鮮でした。

*1:私自身はDevLOVEには2014年1月24日に登壇させていただいています

*2:ITエンジニアの側もビジネス側の気持ちを理解することは当然のこととして

「BPStudy#138〜将棋を楽しもう」を開催しました〜趣味をテーマにIT勉強会を開催するということ

BPStudy#138〜将棋を楽しもうを、2019年2月27日(水) に開催しました。

bpstudy.connpass.com

将棋をテーマにした開催は、2007年からのBPStudyで初めてです。

f:id:haru860:20190318213908j:plain
将棋で初の開催

開催のきっかけ

「コンピューター将棋は、人間を超えた」といわれています。

2017年には将棋ソフトPonanzaが、佐藤天彦名人を破っています。

コンピューター将棋は、新手・新戦型の発見などにおいても将棋の進化に貢献し、その貢献にIT技術が大きく関わっています。

その裏で2015年から私の将棋熱は小学生以来久々に高まっていました。

日曜日放映のNHK杯は全録画・視聴を3年以上続けています。

将棋熱の復活を機に、いつかはBPStudyで将棋をテーマに開催したい、そしてそのときはコンピューター将棋も内容に含めたいと考えていました。

コンピューター将棋ならHEROZ*1

どこかでHEROZの方と知り合えないかなぁと思っていたところ、昨年12月の「みんなのPython勉強会(Start Python Club主催)」の懇親会で、元HEROZ株式会社の大渡さん(現在はAIアーティスト、フリーランス)と知り合うことができました。

その後メールにて大渡さんに登壇の依頼をしたところ「適任を紹介したい」とのことでHEROZの杵渕さんもご紹介いただき、開催が決まりました。

当日は第1部は将棋AI、第2部は自由テーマでLT(7人)という構成で開催しました。

第1部 将棋AIの仕組みと付き合い方

大渡さんには「明日開発者になれる!?将棋プログラムのいろは」というテーマでお話いただきました。資料は以下です。

docs.google.com

杵渕さんには、将棋AI進歩の歴史、将棋AIによるプロ棋界の流行の変化、棋力向上のためのソフト活用術をテーマにお話いただきました。資料は以下です。

大渡さんには、コンピューター将棋の考え方、強くなる仕組み、杵渕さんには、コンピューター将棋の将棋界での歴史(新手や新戦型の発見)を主にお話しいただきました。

お2人にお話いただいた内容を頭に入れておくと、現代の将棋とこれからの将棋の進化をさらに深く楽しめるのではないかと思いました。

第2部 将棋大LT大会

第2部はLT大会ということで、7人の方々に発表いただきました。

資料は以下のページを参照してください。

bpstudy.connpass.com

将棋の上達法、こだわりの戦法(矢倉と左美濃急戦)の話など、観る将(観る将棋)、いままでの自身の将棋への関わりなどをテーマに語っていただきました。

発表した方々、そして参加者の将棋への愛が伝わってくるLT大会となりました。

趣味をテーマにIT勉強会を開催するということ

将棋をテーマとして企画した段階では、参加者が集まるのか、そして会は盛り上がるのかと少し心配していましたが、それは杞憂に終わりました。

登壇いただいた方々の発表は、将棋への想いからか熱がこもり、聴いている側も共感、納得、驚きなどの声が常に上がっていました。

このような雰囲気は、仕事のジャンルをテーマにした勉強会とは明らかに違う点です。

そのような違いが生まれるのは、趣味のジャンルは楽しむことが前提ですが、仕事のジャンルをテーマにした勉強会では、仕事に役立つかどうかという視点が入ってくるからではないでしょうか。

最近では「◯◯Tech」というように、さまざまなジャンルでITが使われています。

それは仕事のジャンルに限らず、趣味や娯楽のジャンルでも同じことがいえます。

100人いれば100人の楽しみ方があり、取り組みがあるものです。

プロとして取り組んでいる人の取り組みに加え、趣味で楽しんでいる人にも発表してもらえば、その多様性を肴に大いに盛り上がる会になるのではないでしょうか。

今回を機に「趣味☓IT」というテーマで、今後あらたなテーマでBPStudyを開催できないか考えてみたいと思います。

発表いただいた大渡さん、杵渕さん、LTに登壇いただいた方々、ありがとうございました!

*1:将棋アプリの将棋ウォーズや将棋AIを開発