「Python 2」と「Python 3」にはさまざまな違いがある。ペネトレーションテストでの「Python」活用を推奨する有識者が、特筆すべき両者の違いを解説する。
前編「初めてのプログラミングには『Python』を選ぶべき“セキュリティ的な理由”」は、実際にシステムに侵入して脆弱(ぜいじゃく)性を確認する「ペネトレーションテスト」(侵入テストとも)の担当者が、プログラミング言語「Python」を習得すべき理由を解説した。この主張は、ペネトレーションテストへのPython活用を解説した書籍『Black Hat Python, 2nd Edition: Python Programming for Hackers and Pentesters』の著者、ジャスティン・サイツ氏とティム・アーノルド氏による。Pythonを習得する上で理解しておくべきポイントを両氏に聞いた。
―― 「Python 3」だけを学習するのがお勧めですか。「Python 2」も学習する意味はありますか。
アーノルド氏 Python 2とPython 3の両方の知識があると役に立つ。Python 2の知識を持っていることは重要だ。Python 3を使用して新しいプログラムを開発する場合がほとんどだとしても、Python 2の知識は依然必要になる。Python 2で記述された概念実証(PoC)コードやシェルスクリプト(OSの基本的なユーザーインタフェース「シェル」で動作する簡易的なプログラミング言語)もある。知らないうちに自身のPCにマルウェアを取り込まないようにするためにも、Python 2の知識は欠かせない。Python 3の知識があれば、Python 2を学習するのは難しくない。
―― Python 2とPython 3にはどのような違いがありますか。
アーノルド氏 Python 2とPython 3には知っておくべき違いがある。個人的に重要だと感じるのは、Python 3で文字列を扱う際の標準文字コードが「Unicode」になったことだ。Python 2では、開発者がプログラム内に文字コードを変換する処理を明示的に記述する必要があり、これによってしばしば問題が発生した。例えば操作対象の文字列の文字コードが分からない場合だ。Python 3は全ての文字列データをUnicode文字列として扱うため、Python 2より簡単に文字列を読み取ることができる。
Python 2とPython 3の最大の違いは、プログラムの水面下での処理にある。一例がソケット通信(プログラム同士の通信)だ。Pythonのソケット通信は、文字列をバイナリデータとして送受信する。Python 2とPython 3ではバイナリデータを保持する変数の型が異なるので、注意しなければならない。
個人的に気に入っていることを1つ紹介しよう。Python 2は「print」の後に半角スペースと表示したい文字列を記述する必要がある。Python 3はprintが関数になり、表示したい文字列をかっこ内に記述する。これは軽微ではあるが、見た目で判断できる構文の違いだ。Pythonプログラムのソースコードでprintがどのように使用されているかを確認すれば、Python 2とPython 3のどちらでソースコードが記述されているのかが分かる。
もう一つの大きな変化は、Python 3で「コンテキストマネージャ」が使えるようになったことだ。Python 3では、「with」文を使って関数を実行するよう記述すると、コンテキストマネージャがその関数を安全に終了する。外部ファイルなどのリソースを読み込む場合を考えてみよう。リソースのクローズは忘れがちな処理で、開いたまま処理を終了してしまうことは少なくない。「with open(ファイル名)」と記述すれば、開いたファイルを閉じるための処理内容を記述する必要がない。ソースコードの実行対象がブロック(処理のまとまり)の外になった瞬間に、コンテキストマネージャがファイルを閉じる。
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
サービスアカウントによる特権アクセスの管理に頭を悩ませるセキュリティ担当者は少なくないだろう。重要なシステムやデータを守るには、こうした特権アクセスを適切に管理し、アカウントを保護することが求められる。
サービスアカウントの悪用や誤用が問題になっている。システムやアプリケーションへのアクセスに特別な権限を有しているだけに、悪用されれば大きな被害につながる可能性もある。管理・保護のベストプラクティスをチェックしよう。
eコマースの登場以降、デジタル決済の選択肢は急速に広がり、利用者の利便性は飛躍的に高まった。一方で、それぞれの決済方法を利用するユーザーを標的とした金融犯罪や不正行為も爆発的に増加している。どう防げばよいのだろうか。
金融サービス業界において、金融犯罪を防ぐための対策は不可欠だ。デジタルサービスが増え、システムが複雑化する中で、どう対策を実践していくか。取引詐欺やマネーロンダリングなど4つのシーンを取り上げ、具体的な対策を解説する。
クラウドシフトが進み、リモートワークも普及した現代のIT環境で重要性が高まっているのが、ゼロトラストに基づくセキュリティ対策だ。その新たなアプローチとして、ブラウザベースの手法が注目されている。どういった手法なのか。
お知らせ
米国TechTarget Inc.とInforma Techデジタル事業が業務提携したことが発表されました。TechTargetジャパンは従来どおり、アイティメディア(株)が運営を継続します。これからも日本企業のIT選定に役立つ情報を提供してまいります。
「パーソナライゼーション」&「A/Bテスト」ツール売れ筋TOP5(2025年4月)
今週は、パーソナライゼーション製品と「A/Bテスト」ツールの国内売れ筋各TOP5を紹介し...
Cookieを超える「マルチリターゲティング」 広告効果に及ぼす影響は?
Cookieレスの課題解決の鍵となる「マルチリターゲティング」を題材に、AI技術によるROI向...
「マーケティングオートメーション」 国内売れ筋TOP10(2025年4月)
今週は、マーケティングオートメーション(MA)ツールの売れ筋TOP10を紹介します。