入門 Python 3
AmazonでBill Lubanovic, 斎藤 康毅, 長尾 高弘の入門 Python 3。アマゾンならポイント還元本が多数。Bill Lubanovic, 斎藤 康毅, 長尾 高弘作品ほか、お急ぎ便対象商品は当日お届けも可能。また入門 Python 3もアマゾン配送商品なら通常配送無料。
https://www.amazon.co.jp/%E5%85%A5%E9%96%80-Python-3-Bill-Lubanovic/dp/4873117380
エンジニアという職業は、技術向上のため日々技術学習を続けること自体が業務であるといっても過言ではありません。これはビギナーやトレーニーに限らず、ハイレベルなプログラマーが日々海外の最新の技術論文をチェックしているように。
今回は、自然言語処理やクローラーやデータ分析ツールなどの開発経験をもつAvintonのエンジニアに、これからエンジニアとして駆け上がっていく入門者へおすすめの学習ノウハウを教えてもらいました。
ソフトウェアの開発技術はめまぐるしく変化しており、Web上に情報があまりに多く、入門者は何をどのように学習すればいいのか、良い情報を探すことが難しいといった声を周りで聞くことが多かったからです。この記事がシステム開発入門者の学習の一助となれば幸いです。
まずは、目指すのが開発エンジニアであれ機械学習エンジニアであれ、必須と思われる技術を以下に挙げてみました。
実際の開発の現場では、これらの知識を組み合わせて作業を進めていきます。システム開発の入門者は、上記のリストがそれぞれどれぐらいマスターできているかチェックしてみてください。
プログラミング言語としてPythonとRubyを挙げたのは、コードがわかりやすく、ライブラリが充実していて、開発の現場でも多く用いられているからです。そして、これらの言語を使ったアプリを開発するフレームワークとしてDjangoやRailsがあります。PythonとRubyの違いとしては、出来ることに大きな差はないと思いますがライブラリの充実度で、Pythonは機械学習・データサイエンス、RubyはWeb開発で使われることが多いです。
学習方法としては、本や動画で基礎を学びながら、コードを書いたりアプリを開発してみるなどして実際に手を動かすのが大事です。自分が駆け出しの頃苦労したのは、エラーが出たときにどのように対処すればいいのかわからない、オブジェクト指向のプログラミングが難しいといったことでした。これらは後述する本を読み、自分でも実装してみることで理解を深めていきました。
情報収集は、Amazonで上記の技術を検索して、評判の高い本を中心にチェックするのが良いと思います。
個人的には、例えば Pythonに関する本であれば
"入門Python3" (Bill Lubanovic) ← 少し難しい
Rubyに関する本であれば、
"プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで" (伊藤 淳一)
SQLに関する本であれば、
"達人に学ぶSQL徹底指南書" (ミック)
上記3冊がオススメです。
また、最近ではUdemyなど動画で学べるサイトがありますので、そちらも併せてチェックしてみてください。Udemyはセールの期間だと値段が大幅に割引きになるので、その時の購入がオススメです。
あと、Twitterでソーシャルメディア界隈で有名なエンジニアをフォローして、定期的に技術トレンドを仕入れたりしています。
実際の開発の現場の流れとしては、V字モデルなどとも言われますが、
要件定義 → 設計 → 実装 → コードレビュー → 単体テスト → 結合テスト → リリース
といった流れになります。
実装したコードは、ローカル(自分のPC内のソースコード)からリモート(チームで共有しているソースコード)にpushして、GitHubでコードレビューを受け、指摘に対して修正をします。
ここで大切なのは、実装したコードに不具合がないかなので、手動テストに加えてテストコード(unittestやRSpec)を書くことです。プログラミングが少しできるようになってきたなと思ったら、テストコードを書くトレーニングをしましょう。
ちなみに、開発時に参考にしているサイトは以下のようなものです。
(バージョンは適宜読み換えてください)
- 各言語やライブラリを調べる
・Python
・Django
・NumPy
・pandas
・Ruby
・Ruby on Rails
・Ruby on Rails API
- 解決しないエラーがあるときに、似たような事例がないか調べる
- 言わずと知れたGoogle先生
さて、例えば開発経験が1年以上経って、そろそろもう少しステップアップしたいなと思ったと思ったときは、どんな本を読めばいいでしょうか。個人的なオススメは以下の本です。
"Pythonによるデータ分析入門" (WesMcKinney)
"オブジェクト指向設計実践ガイド Rubyでわかる進化しつづける柔軟なアプリケーションの育て方" (Sandi Metz)
"Java言語で学ぶデザインパターン入門"(結城 浩)
これらを読むことで、データ分析や設計など、一歩進んだタスクに取り組むことができるようになります。自分の尊敬しているエンジニアも、早く正確に的を得た設計ができるスキルがあり、様々な分野の開発で活躍しています。
あと、フロント技術は自分の専門ではないのですが、以下の本が評判が高いです。
"JavaScript Primer 迷わないための入門書" (azu, Suguru Inatomi)
加えて、フロントに取り組んでいく人は、フレームワークとしてVue.jsやReactも勉強しましょう。
ところで、自分の学習はどうなのかというと、最近オフに作成したアプリとしては、スクリプトで一定時間毎にデータを生成して、別アプリでMQTTのメッセージブローカーを介してその時系列データを受け取ってリアルタイムにグラフを表示し、異常なパターンを検出するというものです。ユースケースとしてIoTを意識しています。このように、今でも継続して学習は進めており、それが重要なことだと考えています。
具体的に、入門者はどのようなアプリを作成してみればいいでしょうか。よくやるのは、フレームワークの学習であれば、記事やコメントの投稿・閲覧ができるブログシステムの作成です。更に一歩進んだタスクとしては、今考えてみたのですが、こういうのはどうでしょうか。
“クローラーを使って、ECサイトで特定のキーワードで検索して商品の画像・商品名・価格の一覧をスクレイピングして取得し、自分の作成するアプリで検索・表示できるようにする。”
このタスクであれば、HTMLの構造や画像ファイルとデータの取得・保存・表示やクエリといった基礎的なことを学べるのではないでしょうか。クローリングする際はサイトのポリシーに違反しないように注意してください。また、公開はせず、ローカルでの開発に留めるようにしてください。
以上、短いですがシステム開発入門者の学習方法について書いてみました。
こうやって見ると結構学ぶべきことがありますが、これらに興味を持って取り組んでいける人がエンジニアに向いていると思います。楽しんで学習を進めていきましょう。
エンジニアとしてキャリアチェンジする際、その企業の技術学習環境や支援、エンジニアのキャリアをどうとらえているか、よくチェックしてみてください。手前味噌ですが、Avintonジャパンはエンジニアとして技術習得できる環境が揃っており、そこがAvintonの強みでもあると思います。Avintonアカデミーはイギリス人リードエンジニアが世界の最新技術から次世代エンジニアとして習得すべき内容をコンテンツとして厳選構成された、Avintonエンジニアなら誰でも参加できるプログラムがあります。
そしてARoPと呼ばれる”エンジニアのためのエンジニアによる任意勉強会”は、Avintonアカデミーを網羅した後のAdvance版として、中堅~ベテランエンジニアの技術習得を促す機会を設けております。
また、2020年5月から導入されたタレントマネジメント制度では、3か月に1度の 1 on 1 MTGを通して、社員一人ひとりの成長目標を管理、言いづらい業務上の問題や不安を吸い上げる機会を設けています。
このブログを読んでくださったあなたは、今まさに新たな一歩を踏み出そうとしているはず。
Avintonはそんなあなたの「実現したい強い思い」を大事にする会社です。
一緒に切磋琢磨できるメンバーを募集しています。