Pythonのコードが読みやすい一番の理由は、インデント(字下げ)を強制するルールにあります。 ブロック(if文やfor文など)ごとに、インデントするルールが定められています。 インデントがルールとして決められていることで、誰が書いてもブロックが明確になります。 この特徴によって、Pythonは読みやすいのです。 Pythonのインデントを必須とするルールは、PEP8というコードスタイルガイドラインに定められています。 インデントの他、一行ごとの文字数や空行の入れ方も定められています。
このページでは、Pythonのなりたちや特徴から、ライブラリやコミュニティの紹介まで、「Pythonとは何か」を紹介します。 掲載情報は、Python公式ドキュメントの掲載内容をベースに、実例などをまとめています。
Published by PyQ
Pythonは、可読性が高く、Web開発から科学演算、機械学習などに用いられる汎用プログラミング言語です。 汎用プログラム言語とは、特定の用途に特化していない、さまざまなことができるプログラミング言語のことをいいます。 最近なにかと話題のPythonを、まずはその人気の秘密からひも解いてみましょう。
Pythonは、エンジニアだけでなく様々な人に役立つプログラミング言語です。 大規模なシステム開発だけでなく、ちょっとした作業の効率化にも役立つので、サブスキルとしても人気が高いです。
PythonはWebページ上の情報を分析するマーケティング業務にも役立ちます。 Pythonを使うことができれば解析サイトや自分のサイトのコンテンツ情報を手軽に一括で取得できます。 この手法をスクレイピングと呼びます。 今まで手動で行っていたレポーティングや分析作業を効率化できます。
Pythonで、ユーザーとのコミュニケーションをとるための効率的な仕組みも作れます。 特定の入力に反応するbotをはじめ、AWSのLambdaのプログラムで「1日1回サイトをチェックし、通知を送る」なんて処理も作れます。 さらに、スクレイピングした結果をSlackに通知することもできます。
Pythonがノンエンジニアにも人気な理由のひとつに、Pythonは無料で使えるという点があります。
Pythonのライブラリとは、一定の処理を誰でも使えるようにしたものです。 たとえば、日時の計算をしたりパスワードの生成をしたりできます。 標準で搭載されているライブラリの他にも、無料でたくさんのライブラリをダウンロードできます。
Pythonは無料で気軽に始められるだけではなく、習得しやすい言語でもあります。 基礎を短期間で習得しやすいので、学習を進めることで幅広く、汎用的に活用できます。
Pythonは可読性が高い、すなわち読みやすい言語と言われています。 読みやすく、また書きやすいので、プログラミングの学習に適しています。
ここ数年で、Pythonの日本語情報は爆発的に増えました。 書籍・Webなどで情報を集めやすく、日本人にとって学習しやすい環境といえます。
Pythonはコミュニティの活発な言語です。 勉強会やカンファレンスの開催数も多く、共に学ぶ仲間もみつけやすいでしょう。
「Pythonは可読性が高く学習しやすい」というのは頻繁に耳にするPythonの強みですが、「可読性が高い」「学習しやすい」というのは、どんな特徴を持っているからなのでしょうか。
Pythonのコードが読みやすい一番の理由は、インデント(字下げ)を強制するルールにあります。 ブロック(if文やfor文など)ごとに、インデントするルールが定められています。 インデントがルールとして決められていることで、誰が書いてもブロックが明確になります。 この特徴によって、Pythonは読みやすいのです。 Pythonのインデントを必須とするルールは、PEP8というコードスタイルガイドラインに定められています。 インデントの他、一行ごとの文字数や空行の入れ方も定められています。
実は、人間にとってわかりやすい言語と、コンピュータにとってわかりやすい言語は異なります。 Pythonは、人間にとってわかりやすい高水準言語※です。 そのため、書いたプログラムをコンピュータにとってわかりやすく翻訳する必要があり、この翻訳作業をコンパイルといいます。 Pythonは、コードを実行する時に随時コンパイルを行う言語で、インタプリタ言語といいます※。 インタプリタ言語※でプログラミングを学習すると少しずつ書いたコードを動かして結果を確認できるというメリットがあります。
※1. 反対に、コンピューターにとってわかりやすい言語を低水準言語といいます。
※2. 対義語となる言語はコンパイラ言語といいます。コードの実行前に一括でコンパイルを行う言語で、Cなどが有名です。
Pythonが、最初のプログラミング言語に向いていることはわかりました。 では、実運用ではどうなのでしょうか。 学びやすい無料の言語は、プロになりたい人には向いてないのでしょうか。 もちろんそんなことはありません。 サービスの開発や研究分野でPythonは広く使われています。 ここでは、Pythonの実運用に適した特徴と、実際のPythonの活用事例を見ていきましょう。
実運用で採用する言語は、安定していることが大切です。 サービスを開発している言語が、ある日いきなりなくなってしまったりしたら大変ですよね。 そこまでのことが起こらなかったとしても、他の技術が変化していくなかで、長い間その変化に対応されなければ使いづらい言語だといえるでしょう。
その点で、Pythonはとても安定している言語です。 1991年以来安定的にリリースが出ていて、主要なリリースは約18ヶ月ごとに出ます。 Python3.9以降は12ヶ月ごとにリリースされることが決定しています(参考:PEP602)。 そして、主要なリリースの後1年半に渡り”bugfix”リリースも公開されるため、既存のリリースも期間を追うごとに安定性が向上します。
PEPのリリースまでの流れ
Credit:PEP8(https://www.python.org/dev/peps/pep-0001/)
Pythonのリリースが安定している理由の1つに、Pythonではリリースまでの工程が明示的に定められている事があります。
リリースの際はPEP(Python Enhancement Proposals)という、Python拡張提案がまず作られます。 PEPには拡張の根拠や例となるコードが書かれています。 PEPの内容の議論を重ね、採択/却下が決定し、リリースまで進みます(主に左図のような流れでリリースに至ります)。 このようなPEPのリリースまでの流れや役割もまた、PEPに書かれています
Pythonには、標準で使える機能の他に、分野を問わず様々なライブラリが公開されています。 使えるライブラリがある処理は自分で書く必要がないので、分析や開発など、Pythonを使って本来実現したい事に集中できます。
PythonのライブラリはPyPI(Python Package Index)というサイトにまとまっていて、便利な処理は大抵、誰かが作成してPyPIに登録されています。 ほとんどのライブラリはpipというコマンド1行で、簡単にインストールできることもPythonの強みです。 インストールが簡単なので、効率的に分析・開発できます。
実際に、世の中ではPythonがどのように利用されているかを紹介します。 紹介する例はほんの一部ですが、Pythonでどんなものが作れ、どんなことが実現できる言語なのかイメージできることでしょう。
普段はインターネットで活用しているサービスが、どんな言語で実装されているか、意識する機会はあまりないでしょう。 実は、普段よく目にしたり活用しているサービスにも、Pythonで実装されているものがあります。その一部を紹介します。
写真・動画を共有するSNSサービス。PythonのWebフレームワークDjangoを用いて開発されています。 PyCon 2017の基調講演では、Python2からPython3へのバージョンアップについての発表がありました。
クラウドとローカルの複数の媒体間でデータの共有や同期を可能とするオンラインストレージサービス。 Rian Hunter氏は、PyCon APAC 2013で、「DropboxはすべてPythonで開発している」と述べています。
Web上の画像や動画などを気軽にクリップしたり共有できるサービスPintarestは、Python,Djangoで開発しています。PyCon 2019 では、Python2からPython3へのバージョンアップについての発表がありました。
アメリカ最大の掲示板サイト。 2005年にPythonで書き直されました。 開発者Aaron Swartzは「Python版のコードは少なく、実行速度が速く、読み取りと保守がはるかに簡単でした」と述べています。2011年に再度リニューアルされて構成に変更がありましたが、すべてPythonでかかれていた時期のコードが公開されています。
エンジニアをつなぐIT勉強会支援プラットフォーム。 IT勉強会を中心としたイベントの開催・参加を総合的にサポートします。 全体的にPython言語で開発し、フレームワークはDjangoを使用しています。
オンラインPython学習サービス。 サービスの開発もすべてPythonで行っています。 フレームワークはDjangoを使用しています。
長く愛されるサービスでは、システムの開発に使われる技術は様々な要件に応じて日々変わっていきます。そのため、紹介したサービスで用いられているPython言語の領域は変更されている可能性もあります(項目の内容がいつのことなのか気になる場合は、記載された年次を参考にしてください)。日々移り変わる技術分野の中でも、Pythonは大きな存在感を持っています。
医療分野や自然科学など、Pythonはデータサイエンスの分野でも活用されています。 Pythonの研究活用の例を紹介します。
2015年に世界ではじめて重力波を検出したレーザー干渉計重力波観測所LIGO(ライゴ)では、データ解析やシステムの制御などにPythonが活用されています。 解析データは公開されており、解析を再現できます。
イベントホライズンテレスコープ(EHT)(日本研究チームEHT Japan)は、2019年、世界ではじめてブラックホールの画像化に成功しました。 撮影した画像の解析に用いられるスパースモデリングという手法を、Pythonで実装しており、解析データも公開されています。
アメリカ航空宇宙局(NASA)でも、Pythonが活用されています。 GitHubに公開されているプロジェクトには、Pythonで実装されたものがいくつも見受けられます。 また、パッケージやライブラリ・モジュールなども公開されています。
参考:[GitHub]
世界最大規模の素粒子物理学の研究所欧州原子核研究機構(CERN)でも、Pythonが活用されています。 CERNでは毎秒6億回の衝突データなどのビッグデータを扱うそうです。 そのような領域でも、その使いやすさからPython人気の高いことが示されています。
Pythonのことが好きになってきましたか? ここからは、Pythonの成り立ちや仕様など、少し深い内容をお話します。 今すぐに必要な情報ではないかもしれませんが、Pythonを学習する際に振り返るときっと役立つでしょう。
Pythonは1990年代の始めに、オランダ人のGuido van Rossumによって開発されました。 1989年のクリスマス休暇中に、趣味のプログラミングプロジェクトとして開発を開始したのがきっかけだとか。 Pythonという名称は、イギリスで大人気だったテレビ番組「空飛ぶモンティ・パイソン」(Monty Python’s Flying Circus)が由来です。
2001年には、Pythonソフトウェア財団(PythonSoftwareFoundation,PSF)が組織されました。
PSFはPython関連の知的所有権を所有するために作られた非営利団体で、Pythonのリリースはすべてオープンソースです。
言語仕様とは、その言語がどのような設計で作られているかを表すものです。 Pythonでは、Python 言語リファレンスで明示されています。
Pythonの可読性の高さでも説明したとおり、Pythonはコンピュータ言語への翻訳(コンパイル)を実行しながら随時行うインタプリタ言語です。 標準インストールにより「Pythonインタプリタ(以降インタプリタ)」が利用できるためです。 Pythonは「やりたいことをシンプルに記述」でき、インタプリタにより「ちょっと書いて確認」が簡単にできます。 インタプリタ言語に対するものとして、コンパイラ言語があります。 コンパイラ言語は、実行するのにコンパイルという作業が必要になります。 一手間かかりますが、コンパイルにより実行前にコードの間違いを確認できるという面もあります。 Pythonでは、コンパイルとは違いますが、コードをチェックするコマンドとしてflake8やpylintなどがあります。
オブジェクト指向とは、プログラミングに用いられる考え方で、現在のプログラミングでは必須とも言われている概念です。
Pythonは、オブジェクト指向をサポートする言語です。言語の機能面では、クラスが使える言語と考えるとよいでしょう。
クラスとは、同じような構造を持つデータの元になる型です。
データをすべてモノ(すなわちオブジェクト)と捉えた時に、クラスはオブジェクトの設計書のような役割を果たします。
この時、設計書に書かれている属性をプロパティ、設計図を元にして作ったモノをインスタンスと言います。
Pythonは、このクラスという機能が最小限の構文・意味付けを用いて実装されています。
Pythonは本格的なプログラミング言語ですが、ちょっとした文字列処理でも便利に使えます。 たとえば、2つの文字列の変数s
と t
があったときに、s + t
は連結した文字列になります。
Pythonでは、Cなどの他のプログラミング言語のように数値演算をできます。 Pythonでは整数は何桁でも計算できます。 実数は有限の有効桁数ですが、sympyなどのライブラリーを使うと何桁でも計算できます。
プログラムの制御構造の条件分岐の文法があります。 条件分岐とは「晴れていたら庭に水をまく」のように条件に当てはまれば処理を実行し、条件に当てはまらない場合は処理を実行しなかったり、別の処理を行うことです。
プログラムの制御構造の「繰り返し処理」の文法があります。 繰り返し処理とは「1から100までの数値を順番に足し算する」のように、対象になるいくつかのデータを1つ1つ処理することです。 何度も繰り返し行う処理について何度もプログラムを書かなくてよくなります。
正規表現を使うと、似たような表現をまとめて処理できます。 たとえば re.findall('@([^.]+).co.jp', text)
のようにすると、text中の '@XXX.co.jp'
からXXXを抜き出せます。
デコレーターとは、関数を修飾(デコレート)するものです。 デコレーターを関数に設定することで、関数の前後に処理を追加できます。
Pythonのwith文を使うと、ブロックの開始、終了時に処理を追加できます。 たとえば with open()
とファイルを開くと、withブロック終了時にファイルが自動でクローズされ便利です。
Pythonは他のPythonファイルから関数やクラスをインポートして活用できます。 Pythonではファイルを分割してプログラムを設計できます。 Pythonはインポートの仕組みがよくできているので、大規模なプログラムでも破綻せずに設計できます。
Pythonでは、日付や時間データを操作するためのクラスを提供しています。 単なる数値で日付を扱うと「月またぎ」のときなど計算が必要になりますが、datetimeモジュールを使うと11月30日の「次の日」は12月1日だとすぐに計算できます。
calendarライブラリーを使うと、カレンダーを表示したり、カレンダーに関係する色々な計算ができたりします。 具体的には1年分のカレンダーを表示したり、今年はうるう年か調べたり、2019年11月5日は何曜日かを計算できます。
Pythonの関数には可変長引数を使って、任意の個数の引数を受け取れます。 また **
のようにするとキーワード引数を可変長引数として受け取れます。
ここまで、Pythonの概要や歴史、詳しい機能を見てきました。 次は、Pythonと社会の関わりを見ていきたいと思います。 Pythonを学ぶことで、あなたがどんな未来に関わっていく可能性があるのか、ぜひ想像してみてください。
Pythonの未来を考える時「Pythonは将来性があるのか?」という問いかけは、重要な疑問ではないでしょうか。 そこで、社会へのPythonの広がりにともなう、将来を見越した社会の動きについて紹介します。
求人検索エンジン「スタンバイ」の調査によると、2018年Pythonのエンジニアの年収が、国内でTOP3に入りました。 この調査では中央値を元に調査が行われており、Pythonは安定した収入を見込めることが読み取れます。 この調査では求人件数も公開されており、Pythonは、1位のGo・2位のScalaに比べても多くの求人が出ています。 また、2017年から1.7倍の求人件数が増加しています。 これらのデータからも、Pythonの需要が多くあり、かつ将来的にも増加傾向にあることがわかります。
Python技術者の就労需要の増加にともない、Pythonの技術力を効果的に表現し、統一された基準で評価する必要性も高まってきています。 国内でPython基礎力を測る資格試験の開設など、能力の表現・評価の為の動きが広がっています。
Pythonの基礎的な能力を試すため、国内で受けられる資格試験があります。 Python3エンジニア認定基礎試験は2019年7月までに5000人以上が受験しており、Python3エンジニア認定データ分析試験の開始も進められています。
国家試験でもPythonが使用可能に。2020年4月から、IPA(独立行政法人情報処理推進機構)の提供する基本情報技術者試験をPythonで受けられます。 基本情報技術者試験は、ITに関する基本的な知識・技能を評価するための国家試験です。
Pythonなどの技術領域には、大小さまざまな技術コミュニティが存在します。 ここでは、Pythonのコミュニティについて紹介します。
技術分野で言われる「コミュニティ」とは、同じ技術に興味を持った人が集まり、知見を共有したり一緒に学ぶ文化です。 技術者たちは、自発的に企画・運営される勉強会やセミナーを通して、様々なテーマで学んだことや得た知識を交換しています。
多くの技術者コミュニティは、ボランティアで運営されています。 テーマとして扱われる技術本体が、オープンソースとしてボランティアで開発されていたり、オープンな環境で技術を広く交換することなどが理由です。 ですが、何よりも、その根底には技術者の情熱があるでしょう。
「好きな技術の良さを多くの人に広めたい」「知見を共有、交換することで自分の技術レベルを高めたい」
「同じものが好きな仲間でわいわいと盛り上がりたい」
そんな気持ちで、多くの技術者がコミュニティに参加したり、運営に関わっています。
Pythonのコミュニティはとても活発で、国内外で様々なカンファレンスやイベントが開催されています。 国内でのPythonコミュニティの特徴を聞くと、「親切な技術者が多い」「初めてでも参加しやすい雰囲気」という感想を聞くことが多いです。
また、仕組みの面でもどんな人も不快な思いをせず過ごせる、コミュニティの健全運営の文化が浸透しています。 PyConなど大きなカンファレンスでは、ハラスメントなどのポリシーを規定する行動規範が明文化されています。 Pythonを学び使う上でコミュニティへの参加を視野に入れると、大きく世界が広がることでしょう。
Python.jpは日本のPythonコミュニティです。 Pythonのドキュメント翻訳などのプロジェクト、イベントやコミュニティなど国内のPython情報が配信されています。 公式のDiscordサーバでは、情報交換・質問・雑談など活発にコミュニケーションしています。
PyConは、世界各地でPythonやPythonを使ったソフトウェアについて情報交換し、交流するためのカンファレンスにつけられる名称です。 PyCon JPは日本で開催されるPyConであり、国内外のPythonユーザーの情報交換の場として2011年より継続して開催されています。
PythonのWebフレームワークであるDjangoの、日本開催のカンファレンスです。 Djangoに関わるすべての人が参加できます。 Django Congressのように、Python関連技術のコミュニティも活発に活動しています。
PyLadies Tokyoは、女性のPythonista(Python使用者)をつなぐPyLadiesの東京(または日本)支部です。 Pyladiesのように、Pythonをベースに共通点を持つつながりを得られるコミュニティも、数多く存在しています。
有志が運営するPythonコミュニティやイベントは多くあります。 ここでは、connpassの「Python」カテゴリのページを紹介します。興味を持ったら、自分にあったコミュニティを探してみてください。
本セクションは、コミュニティで活動しているPythonistaのみなさんの意見を元に更新します。
このページは、Python学習サービスPyQが公開する、Python言語の解説ページです。 本ページでPythonを学びたくなった人に勧めたい、Python関連技術のコミュニティを教えてください。 自薦・他薦は問いません。 お寄せいただいたコミュニティは、定期的に活動しているか・継続的な活動が見込めそうか等一定の基準で判断し、定期的に追加・更新します。 オススメのコミュニティがある!という方は、ぜひご意見をお寄せください。
このページの、Python文法についての掲載情報は、主にPythonの公式ドキュメントで裏付けを取っています。 Pythonに興味が出たら、ぜひ公式ドキュメントにも目を通してみてくださいね。 そこからPythonistaへの第一歩がはじまることでしょう。
早速インストールしてみたくなった場合は、以下のページからインストールできます。開発環境を使いたい人は開発環境紹介セクションで紹介しています。
このページは、Pythonを実際に書きながら独学できるオンラインサービス、PyQ(パイキュー)の運営チームが作成しました。
「何かプログラミングをやってみたいけど、Pythonってどうなの?」と感じているあなたや、「Pythonってどうして人気なの?」と思っているあなたに、Pythonの魅力を伝えたくて書きました。 PyQは、Pythonを愛する技術者が、Pythonをもっと身近に感じてほしいという思いで作っているサービスです。 このページを読んで、Pythonの使い手「Pythonista」仲間が増えるとうれしいです。
PyQはPythonのインストールや環境構築などが不要で、ブラウザだけですぐPythonを学習できます。
10日間、基礎文法を無料で試すこともできますので、もし、試しに少しPythonを触ってみたいと思ったら、私たちのサービスにもぜひ遊びにきてください。