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