プログラム初心者でも作れる!|ゼロベースからのPython入門

Pythonを覚える

このページを読んでいただいてありがとうございます。
SE歴20年超の「かめ」です。

私はもともとプログラマとしてシステム開発会社へ入社したのですがここ10年位はプロジェクトマネージャとしてコスト管理、スケジュール管理、品質管理、協力会社管理、人員育成等を行っています。

ですが、やはりプログラムを作りたいという動機からPythonを覚えて、お客様の基幹システム開発時にこぼれた要件のサポートとしてちょっとしたプログラムを書いて便利に使ってもらっています。

また、社内の若手SEにむけてもこのブログの内容でPythonを覚えてもらいプログラムの仕組みや動作を学んでもらっています。

プログラムを組んだことがない若手SEでも、1か月ほどでEXCEL操作のプログラムを組めるようになっていて好評です。

このページでは「プログラムの初心者」に向けてPythonを利用してプログラム作成できるようになるまでを解説します。

  1. プログラムを覚えることによるメリット
      1. 問題解決能力の向上
      2. 創造力の向上
      3. 情報技術の理解
      4. 将来の職業選択の幅が広がる
      5. 自信の向上
      6. コミュニケーションスキルの向上
  2. Pythonでできることは何だろう?
    1. 自動化スクリプト
      1. Excel作成の自動化
      2. 画像編集
      3. PDF操作
      4. ファイルやフォルダ操作
      5. PC操作の自動化
      6. APIの利用
      7. メール関連処理
      8. ブラウザ操作
    2. ウェブアプリケーションの開発
      1. Django(ジャンゴ)
      2. Flask(フラスク)
      3. DjangoとFlaskの比較
      4. Djangoを利用しているサービス
      5. Flaskを利用しているサービス
    3. データ分析と機械学習
      1. データ分析
      2. 機械学習
    4. AI開発
      1. AI開発
  3. 簡単にできるPython開発環境の構築
    1. その1:開発環境の作成とデバッグ方法
    2. その2:pipの使い方
    3. その3:exeファイルの作り方
    4. その4:パラメータを利用した実行方法
    5. その5:別のPythonファイルの関数の実行方法
  4. 短期間でプログラムを覚える方法
    1. とにかくプログラムを書いてみる、動かしてみる
    2. どのように動いているのだろうかという考え、興味を持つ
  5. プログラムをもっと覚えるために有用なこと
    1. 文法とは
    2. 文法の種類
      1. 変数とデータ型
      2. 演算子
      3. 制御構造
      4. 関数
      5. クラスとオブジェクト
      6. モジュールとパッケージ
      7. エラー処理
  6. 挫折しないプログラムの学習方法
      1. 小さな目標を設定する
      2. 毎日少しずつ学習する
      3. 実際に手を動かしてみる
      4. 楽しみながら学ぶ
      5. わからないことがあったら質問する
  7. プログラムをやってみよう!

プログラムを覚えることによるメリット

プログラムを覚えることは社内の若手SE育成をしていてもメリットは多いと感じています。

メリット

問題解決能力の向上

プログラミングを学ぶことで論理的思考や問題解決能力が鍛えられます。これは将来どんな職業に就くにしても非常に役立つスキルです。

創造力の向上

プログラミングはただコードを書くだけではなく新しいものを創り出す過程です。自分のアイデアを形にすることで創造力が養われます

情報技術の理解

現代では、情報技術が日常生活の多くの部分に関わっています。プログラミングを学ぶことでこれらの技術がどのように機能しているのかを理解できるようになります。

将来の職業選択の幅が広がる

IT業界は今後も成長が見込まれる分野であり、プログラミングスキルは多くの職種で求められています。プログラミングを学ぶことで将来的に職業の選択肢が広がります

自信の向上

プログラミングを通じて自分だけの作品を作り上げたり、難しい問題を解決したりする経験は自信に繋がります

コミュニケーションスキルの向上

プログラミングは一人で行うものだけではありません。チームでプロジェクトを進めることも多く、その過程でコミュニケーション能力も鍛えられます

本記事を読んでいただければ                                    

 

  • プログラムを業務で使い利便性を向上したい
  • プログラミング教育の必修化に対応したい
  • プログラムを覚えて副業したい
  • プログラムスキルを生かして転職したい

という目標も解決しますよ!

Pythonでできることは何だろう?

Pythonはとても人気のあるプログラミング言語です。

シンプルで読みやすい構文が特徴で、初心者からプロの開発者まで幅広く使われています。

Pythonでできること、Pythonをお勧めする理由を説明します。

自動化スクリプト

面倒な作業を自動化するスクリプトを作成することもできます。

これにより、繰り返し行う作業をプログラムに任せ作業省力化ことができます。

自動化スクリプトの例

Excel作成の自動化

openpyxlなどを利用してEXCEL帳票の自動作成やバーコード画像の埋め込み

画像編集

OpenCVを利用して、画面のリサイズやフィルタなどの編集や動画からの画像抜き出し

PDF操作

PyPDF2ライブラリでPDFファイルの結合、PDFPlumberでPDFファイル内のテキストや画像の抽出

ファイルやフォルダ操作

osライブラリを利用したファイルやフォルダの作成、削除、移動、名前の変更の自動処理

PC操作の自動化

マウスやキーボード操作、クリップボードの操作の自動化

APIの利用

APIを利用して、クラウドサービスから顧客との取引データを取得や株価サイトから株価データ取得。

メール関連処理

smtplibやpoplibでメールの自動送受信処理

ブラウザ操作

seleniumライブラリを利用したブラウザ操作の自動化して、ブラウザから自動ログインしてEDIデータを毎日ダウンロードする処理など。

自動化スクリプトの例はこのサイト内でサンプルプログラムを使っていろいろと説明していますので、参考にしてみてください。

ウェブアプリケーションの開発

Pythonはウェブサイトやウェブアプリケーションの開発にも使われます。

DjangoやFlaskといったフレームワークを使うことで、効率的に開発を進めることができます。

ウェブアプリケーションの開発の利用例

Djangoを利用しているサービス

Instagram – 写真や動画を共有できるソーシャルネットワークサービス。

Dropbox – インターネット上にファイルを保存できるクラウドストレージサービス。

Spotify – 音楽、ポッドキャスト、オーディオブックなどをインターネットを通じてストリーミング再生できるサービス。

YouTube – 個人が趣味で作った動画から、プロの制作会社が作成したコンテンツまで、幅広いジャンルの動画があり、さまざまな種類の動画が投稿・共有される世界最大の動画共有サービス。

Flaskを利用しているサービス

Netflix – 映画やドラマ、アニメなどのさまざまな映像作品をインターネットを通じて視聴できるサブスクリプション型の動画配信サービス。

LinkedIn – 仕事探し、キャリアの構築、業界内でのネットワーキング、専門知識の共有など、ビジネス関連の目的で広く利用されているプロフェッショナル向けのソーシャルネットワーキングサービス。

torivago – ホテルや宿泊施設の価格比較サイトで。世界中のさまざまな予約サイトからホテルの料金を比較し、ユーザーが最適な宿泊プランを見つけられるようにサポートするサービス。

有名な話としてInstagramはDjango上で構築されています。

PythonとDjangoを選んだのは、Instagramの創業者が開発のスピードと効率性を重視したためといわれていて、これらの技術選定はInstagramが迅速に市場に投入され成長する基盤となりました。

データ分析と機械学習

Pythonはデータ科学の分野で非常に人気があるプログラミング言語でその人気の理由の一つは、データ分析や機械学習を行うための強力なライブラリが豊富にあるためです。

データ分析と機械学習の例

データ分析

データ分析においては、NumPyやPandasといったライブラリが中心的な役割を果たします。

データ分析の例


金融データの分析
金融市場のデータ、例えば株価や為替レートの時系列データを分析する際にPandasを使用してデータを読み込み、加工、分析します。

顧客データのセグメンテーション
小売業やEコマースでは、顧客の購買履歴や行動データをPandasで処理し、顧客を異なるセグメントに分類することが一般的です。

NumPyを使って顧客ごとの購入頻度や平均購入金額などの統計量を計算し、これらのデータを基にクラスタリングなどの機械学習アルゴリズムを適用して顧客をグループ化します。

気象データの分析
気温、降水量、風速などの時間によって変化するデータを扱い、季節の傾向や異常気象のパターンを分析することができます

例えば、過去数十年の気温データから地球温暖化の影響を調査するといった研究に使われます。

スポーツデータの分析
スポーツのパフォーマンスデータや試合の統計を分析する際にも、Pandasが活躍します。

選手の成績、チームの勝敗記録などを扱い、パフォーマンスの傾向を分析したり、将来の試合の結果を予測するためのデータセットを作成することができます。

機械学習

機械学習に関しては、Scikit-learnが非常に重要なライブラリです。


機械学習の例

アイリスの花の分類
アイリスの花を種類ごとに分類する問題は、機械学習の分野では非常に有名な例です。

アイリスの花に関するデータセット(花弁の長さや幅など)を使ってどの種類のアイリスに属するかを予測します。

Scikit-learnの分類アルゴリズム(例えば、サポートベクターマシンや決定木)を用いてモデルを訓練し、花の種類を分類します。

住宅価格の予測
不動産市場のデータを利用して、家の特徴(面積、部屋数、立地など)からその価格を予測するモデルを作成することができます。

この場合、Scikit-learnの回帰アルゴリズム(例えば、線形回帰やランダムフォレスト回帰)が使用されます。

手書き数字の認識
手書き数字の画像からその数字が何かを識別する問題も、機械学習の典型的な応用例の一つです。

Scikit-learnには手書き数字のサンプルデータが含まれており、これを使用して分類モデル(例えば、サポートベクターマシンやニューラルネットワーク)を訓練することができます。

AI開発

AI(人工知能)開発の分野でもPythonが非常に人気のあるプログラミング言語です。

その理由はPythonが読みやすく書きやすい言語であること、そしてAI開発に必要な多くのライブラリが利用可能であることにあります。

AI開発の例

AI開発

PythonでAIを開発する際には、TensorFlowやPyTorchといったライブラリがよく使われます。

これらのライブラリは深層学習モデルの構築と訓練を効率的に行うことができるツールを提供します。

AI開発の例


自動運転技術
自動運転車はAIを使って周囲の環境を認識し交通ルールに従って安全に運転を行います。

センサーやカメラからのデータをもとに、他の車両や歩行者を識別し、適切な速度や方向を決定します。

医療診断
AIは医療分野での診断支援にも使われています

例えば画像診断ではAIがX線やMRIの画像から病変を検出し、医師の診断をサポートします。
これにより、診断の精度向上や早期発見が期待されています

顧客サービスのチャットボット
多くの企業が顧客サービスにAIを活用したチャットボットを導入しています。

これらのチャットボットは、顧客からの問い合わせに対して、自動で返答を行い、24時間365日の対応を可能にしています。

Pythonはできることが多く、また簡単にプログラムを書くためのライブラリも豊富で利用用途が広いためお勧めです。

また、初心者にも理解しやすい言語なので、プログラミングの基礎を学ぶのに適しています。

【コラム】Pythonを覚えて転職するとしたら?

Pythonは転職にも有利で近年のAI,DX案件に対応するため正社員登用も増えている傾向にあります。

例えば大手転職サイトのduda(デューダ)で検索すると以下のようにな件数となります。(2024年3月調査)

言語       求人数(件)        
Java 8,701
Python 4,892
C#3,532
PHP 3,156
Ruby 1,779
C1,616
VB.NET1,034
検索条件 【年収800万以上】【正社員】

Javaに次いでPythonが2位の件数となっていてこのことを見ると企業からも注目されている言語だということがわかると思います。

また、Javaは基幹システム業務用途が多い言語ですので、それ以外のAI、DXを目指すのであればやはりPythonがおすすめです。

簡単にできるPython開発環境の構築

プログラム作成を行うためには開発環境の構築が必要です。
ですが初心者の方は開発環境を作るだけでもやり方がわからずにつまずくポイントだと考えています。

このブログではPython開発の第一歩として記事をまとめており、Microsoftが提供しているVisual Studio Codeを利用して開発環境を構築する方法とプログラムの動かし方を紹介しています。

無償でできますのでやってみましょう!!

・すべてを完璧に覚える必要はありませんまずは環境構築してプログラムを動かしてみることを考えましょう。

いそがしい方はその1~その3までを作業するだけでも大丈夫です。

その1:開発環境の作成とデバッグ方法

Pythonの開発環境を構築する方法について詳しく説明しています。

Visual Studio Codeのインストール、必要なプラグインの導入、サンプルコードの実行、デバッグモードでのプログラム実行などの手順で記載しています。

その2:pipの使い方

Pythonのパッケージ管理システムであるpipの使用方法について説明しています。

pipの基本的な概念、pipの例としてpandasライブラリのインストール、アップグレード、アンインストール方法。また、pip自体のバージョンアップ方法も記載しています。

その3:exeファイルの作り方

Pythonプログラムをexeファイルに変換するためのPyInstallerの使用方法について説明しています。

具体的な手順として、PyInstallerのインストール、Pythonスクリプトからのexeファイルの生成方法、さらにGUIアプリケーションのためのオプション設定も記載しています。

その4:パラメータを利用した実行方法

Pythonでコマンドラインパラメータを取得して実行する方法について説明しています。

コマンドラインからの引数をプログラム内でどのように利用するか、そしてその利点について解説しています。

その5:別のPythonファイルの関数の実行方法

Pythonファイル間での関数のインポートと実行方法について説明しています。

別のPythonファイルから関数を呼び出すためのコード例や、それに関連するベストプラクティスが紹介されています

記事を読んで設定するだけで開発環境ができて、プログラムの動作まで体験できますので是非活用してみてください。


短期間でプログラムを覚える方法

書籍を購入してプログラムを覚えるという方法が良く取られますが、プログラムの書籍は文法から教えてその後に実際にプログラムを組んでみるというパターンが多いです。


実は文法を覚えることは初心者では難しく時間がかかるため、文法を覚える過程でプログラムに対する興味を失っていきます

そのため私は以下2点の方法で覚えていくことをお勧めしています。

とにかくプログラムを書いてみる、動かしてみる

実際にコードを書きプログラムを動かしてみる経験は理解を深める上で非常に重要です。教科書やネットで学んだことをただ読むだけでなく、自分でコードを書いてみましょう


小さなプログラムから始めて、徐々に複雑なものに挑戦していくことがおすすめです。例えば、簡単な計算を行うプログラムや、文字列を扱うプログラムなどからスタートしてみましょう。


プログラムを書く際には、自分が書いたコードがどのように動作するのかを一つ一つデバッグ実行で確認しながら進めると理解が深まります。

どのように動いているのだろうかという考え、興味を持つ

プログラムがうまく動いたときの喜びや達成感は、学習を続ける大きなモチベーションになります。自分で考えたり作ったりしたプログラムが動くと、それがどのように動いているのかをさらに知りたくなるはずです。


プログラムが期待通りに動かなかったときには、なぜうまくいかないのか、どの部分に問題があるのかを考えることも大切です。この過程でプログラミングの理解が深まり問題解決能力も養われます


もしプログラムが動かなかったとしても、その原因を探り解決する過程で学ぶことがたくさんあります。エラーメッセージを読んで理解しどうすればエラーを解決できるのか考えてみましょう。

とはいえ、いきなり一からプログラムを作成するのは難しいのでPythonのサンプルコードを動かしてみて、それを変更していくことで覚えていきましょう。

 

簡単な計算であれば生年月日から現在の年齢を計算する記事

 

動かしてみて面白い記事としてQRコードを作成する記事がありますので、開発環境に設定してどのように動いているか確認したりQRコードの内容やカラーを変更して試してみてください。

 

EXCELが利用できる環境であればEXCELに値をはめ込みして印刷を行う記事もあります、こちらも飛ばす値を変えたり、セル色変更等を行い試してみてください。

プログラムをもっと覚えるために有用なこと

私が紹介した簡単にできる開発環境の構築や短期間でプログラムを覚える方法の場合、プログラムの文法を後回しにしていましたが文法はとても重要です

文法とは

プログラミング言語で「文法」というのは、ちょうど人が話す言葉に文法があるように、プログラミングをするときに守らなければならない特別なルールのことです。

このプログラミングの文法には「構文」と呼ばれる書き方のルールや「セマンティクス」と呼ばれる意味のルールが含まれています。

これらのルールに正しく従ってプログラムを書くことでコンピューターは私たちが意図したとおりに動いてくれます。

プログラミングをするときはこの文法をよく理解し正しく使うことが大切です。

文法の種類

文法を覚えることは避けて通れないのですが、初心者の時点では「このような文法があるんだ」と思ってもらえればよいです。

 

プログラムを繰り返し作成してゆくと自然に覚えることができます。

主な文法

変数とデータ型

変数を使って、数値や文字列などのデータを保持できます。

データ型には、整数(int)、浮動小数点数(float)、文字列(str)、ブール(bool)などがあります。

演算子

数値の計算に使う加算(+)、減算(-)、乗算(*)、除算(/)などの演算子があります。

文字列を結合するための加算(+)演算子や、論理演算を行うためのand、or、notなどの論理演算子もあります。

制御構造

条件分岐にはif文を使います。if、elif、elseを組み合わせて、条件によって実行するコードを変更できます。

繰り返し処理にはfor文やwhile文があります。for文はリストなどのイテラブルなオブジェクトを順に処理するのに使い、while文は条件が真の間繰り返します。

関数

処理をまとめたものを関数として定義できます。defキーワードを使って定義します。

関数は引数を取ることができ、returnで値を返すことができます。

クラスとオブジェクト

Pythonはオブジェクト指向プログラミングができます。classキーワードを使ってクラスを定義し、クラスからインスタンス(オブジェクト)を生成できます。

クラスには属性(変数)とメソッド(関数)を定義できます。

モジュールとパッケージ

コードをモジュール(ファイル)に分割し、他のファイルからimportすることができます。

複数のモジュールを含むディレクトリをパッケージとして扱うことができます

エラー処理

try、except、else、finallyというキーワードを使います。

これらを使うことでプログラム中でエラーが発生したときの挙動を制御し、プログラムが予期せず終了することを防ぎ、エラーの情報を適切に扱うことができます。

文法は書籍であれば体系的に記載してあるため手元に用意して覚えることをお勧めします。

 

また、学習者の習熟度によりおすすめの書籍もまとめてありますので
こちらの記事を参照ください。

挫折しないプログラムの学習方法

プログラムを覚えることは、学校の授業と同じで継続してプログラムを作り続けることが必要と考えています。

以下を頭の片隅に置いておき学習を推進することが挫折しない近道と考えています。

小さな目標を設定する

大きな目標だけではなく、小さな達成できる目標を設定しましょう。

例えば、「1週間に1つの小さなプログラムを作る」など、小さなステップで進めると、達成感を感じやすくなります。

毎日少しずつ学習する

毎日少しの時間を使って学習することで知識が定着しやすくなります。長時間一度に勉強するよりも、短時間を毎日続ける方が効果的です。

実際に手を動かしてみる

プログラミングは読んだり聞いたりするだけではなく実際にコードを書いてみることが大切です。

エラーが出ても落ち込まず、試行錯誤を繰り返すことが上達の秘訣です。

楽しみながら学ぶ

プログラミングは楽しいものです。自分の興味があるプロジェクトを見つけたり、ゲーム作りなど楽しんで学べる内容を選ぶと、続けやすくなります。

わからないことがあったら質問する

わからないことがあったら、先生や友達、オンラインのフォーラムなどで質問しましょう。

一人で悩むよりも、人に聞くことで新しい発見があるかもしれません。

ですが、実際に1人で学習することは疑問点の解消やモチベーションの維持が難しくなってきます。

・難しいところがありすぎて解決できないと進めることができなくなり、結果として学習をやめてしまう

・コツコツの積み重ねが大事な作業だが、誰も見てないのでサボってしまう

私もテレワークせざるを得なかった時に若手SEの理解度が低下したことやつまずいているなと実感しました。

初心者を経験や知識が豊富な方が指導・支援・助言するメンターは重要と思っています。

周囲にメンターがいない方であれば教育を受けてみるのも一手かと思います。


プログラムをやってみよう!

もともとは社内教育用でしたが、初心者の方がプログラムをはじめる足掛かりになるように本記事を作成しました。

こちらを読むことにより初心者が一番最初につまづく部分が解消できるようになればいいなと考えています。

またつまずきを解消して目標に向けて進んでいければと思います。

  • プログラムを業務で使い利便性を向上したい
  • プログラミング教育の必修化に対応したい
  • プログラムを覚えて副業したい
  • プログラムスキルを生かして転職したい

あなたの目標は何でしょうか?

目標をかなえるために一歩踏み出してプログラミングをはじめてみましょう。

コメント

タイトルとURLをコピーしました