目次
皆さん、こんにちは!ビジネスアプリケーション事業本部のエンジニアKです。
グローバルウェイは「“人”と“技術”を新しい時代のために」を経営理念とし、急速に拡大するデジタルトランスフォーメーション(DX)市場の課題に人材と技術の両面から取り組んでいる会社です。
私が所属しているプラットフォーム事業では近年大人気プログラミング言語であるPythonを用いて法人向けにシステム開発を担当しています。お客様から要望をヒアリングし、当社が保有しているシステム資産や提携している各種アライアンス先のソリューションと組み合わせることで、お客様へ最適なサービスを提案しながら課題解決にあたっています。 さて、今年も2024年9月27日(金)- 28日(土)の2日間TOC有明Convention HallにてPyCon JP 2024が開催されました。昨年につづき、グローバルウェイは今年もプラチナスポンサーとしてPyCon JP 2024に参加し、3つの展示物をお客様にご覧いただきました。では、イベント当日はどんな雰囲気だったのか、今年のグローバルウェイはどんな制作物を展示したのか、この記事を通じて読者の皆さんにもお伝えしたいと思います。
まず本題に入る前に、PyConについて初耳という読者さんもいらっしゃると思います。簡単にPyConについてご説明しますと「Python Conference」の略語であり、一般ユーザから専門家のエンジニアまで色々なPython言語のユーザが集まり、Pythonについて情報交換、交流をするためのカンファレンスのことです。
PyConは世界各地で開催されますが、日本でも2011年以降毎年PyCon JPが開催されるのでご興味のある方はぜひ一度参加してみてください。Python言語が近年Web開発、機械学習、AI等関連で脚光を浴びている中、Pythonが活用される様々な分野での取り組みに出会えることができます。
今年グローバルウェイの展示物①は「Python教育」です。グローバルウェイは新入社員や他言語エンジニア出身の中途社員向けにPythonカリキュラムを以前から提供しており、Pythonエンジニアへのリスキリングに力を入れて来ました。グローバルウェイのPythonカリキュラムの魅力は3日という短期間でPythonの基礎を学べるだけでなく、希望者には、Python基礎試験の受験も支援するところです。私Kもまだ入社したばかりの頃、このカリキュラムを受講し、3つのPythonエンジニア認定資格を取得しました。
自社のPythonカリキュラムを昨年のPyCon 2023 APACでお客様に紹介したところ、
予想以上に熱い反応と同時にPythonを学びたいがどこで勉強したら良いのか困っている方もいらっしゃいました。そこでグローバルウェイは今年自社のPythonカリキュラムを外部配信してみました。約50人が本カリキュラムを受講し、約半数の方がPythonエンジニア認定基礎試験を申込。そして、なんとPyCon開催2日目で受験者の皆さん全員が合格したとの嬉しい事実を確認できました!受講者の皆さん、おめでとうございます!そしてようこそPythonの世界へ!
グローバルウェイも受講者の反応や受講結果を踏まえて改善しながら、より充実したカリキュラムや資料をお客様に提供できるよう引き続き頑張ってまいります。
昨年とは違い、今年はグローバルウェイの強みであるWeb開発についても展示をしました。展示物②は「マルチステップフォーム作成のベストプラクティス」です。たとえば、読者の皆さんも日頃Web画面で会員登録や受験の申込等をされますね。必須項目を入力しなったら入力を促す案内文が表示されたり、最後に確認画面で自分が入力した内容を最終確認した経験が皆さんあると思います。そこでユーザの快適な操作のため一般的に入力画面の作成に採用される方法が、入力画面と実行処理の間に確認画面や別の入力画面を入れる「マルチステップフォーム」です。
今回のPyCon JP 2024ではDjangoを使用し、上述したマルチステップフォーム作成のベストプラクティスをお客さんに共有しました。PythonのフルスタックフレームワークであるDjangoにはWeb開発のための多くの機能がデフォルトで組み込まれていますが、その代表的な組み込み機能として「FormView」があげられます。実際FormViewを使うことで画面初期表示、入力制限、画面遷移等の機能をわずか数行のコードで実装ができます。そして、マルチステップフォームの肝心なところである、入力データを最後まで保持する方法についても当日お客様に共有しました。
Web開発においてセキュリティ対策は欠かせない作業です。最悪の場合、お客様の個人情報等大事な情報が漏洩される可能性があるので、エンジニアとしては常に注意すべき部分でもあります。展示物③は「Djangoを用いたWeb開発時のセキュリティ対策」です。今回のイベントで紹介したのはクロスサイトスクリプティング(以下、XSS)とSQLインジェクションでした。他にセキュリティ攻撃の種類は数多く存在しますが、Web開発エンジニアとして必ず知るべき知識でもあり、イベントブースでは直接画面でデモをしながら確認しやすいという点からXSSとSQLインジェクションを選定しました。
では、XSSとSQLインジェクションとはそれぞれどんなセキュリティ攻撃でしょう。まずXSSとはWEBアプリケーションの入力項目でHTML、JavaScriptを入力した場合にブラウザ上で実行されてしまう脆弱性のことです。たとえば、あるJavaScriptのスクリプトタグを事前にサーバのデータとして格納するとします。なんの対策もしないと、ユーザがその情報を閲覧するときスクリプトタグのコードが実行される可能性があります。もしそのコードがパスワードを取得して表示させる内容みたいな悪意のあるコードだとしたら、情報漏洩につながる危険がありますね。
他方、SQLインジェクションとはSQLの組み立て方法に脆弱性が潜んでいる場合、攻撃者は悪意のあるクエリを注入し、不正なSQLを実行させる脆弱性のことです。たとえば、名前を検索する場面だと想像してみましょう。名前は‘太郎’で検索するとします。
なにも対策してない下記のような一般的な取得系のSQLクエリが実行されるとします。
SELECT * FROM users WHERE name = ‘太郎’;
「name = ‘太郎’」によって絞られ名前が‘太郎’である情報を取得できます。
しかし仮に悪意のあるユーザが、「太郎 OR ‘1’ = ‘1」で検索すると
SELECT * FROM users WHERE name = ‘太郎 OR ‘1’ = ‘1’;
上記のようなSQLクエリが実行されます。クエリ条件の末尾の「OR ‘1’ = ‘1’」によって全体条件の値が真になってしまいます。その結果、‘太郎’の情報以外にもすべてのユーザの情報を取得できるようになります。なにも対策しないと致命的な脆弱性問題につながるかもしれません。
では、XSSとSQLインジェクションに対してどのように対策を練れば良いでしょうか。幸い、Djangoの機能はすでに上述した2つの攻撃を未然に防ぐよう方法を提供しています。具体的にはXSSに対しては、Djangoのテンプレートとミドルウェアは利用、SQLインジェクションはDjangoのORM(Object-relational mapping)を利用することで、簡単かつ安全にPythonでのWeb開発が進められます。Django万々歳ですね。とはいえ、セキュリティ問題はどこにでも潜在し得るので、エンジニアとして常に意識をしながら開発を進めるべきだと思います。
せっかくのイベント参加でしたので他のブースにも回ってみたところ、日本でのPythonの領域が色々な分野で広がっていることを感じました。中にはグローバルウェイのように直接Python開発に関係する展示だけでなく、Python利用のためのセキュリティ専門企業やPython教育関連企業、Pythonエンジニアの転職をサポートする企業等のブースもあり、まだ新生言語のPythonがどんどん日本のIT業界に定着していく姿を垣間見られたと思います。次回のPyConも今からとても楽しみですね。
最後に、私Kは今回、先輩社員が作成していただいた展示物をお客様に説明することでとても勉強にもなりましたし、他のブースを訪れてエンジニアとしての視野が広がったと思います。早く一人前のPythonエンジニアになれるように、これからも日々精進いたします!読者の皆さん、最後までお読みいただきありがとうございました。
★関連記事★
最後までお読みいただきありがとうございました。
この記事を読んで、グローバルウェイにご関心をお持ちいただけたらと思います。 採用も多数ポジションで募集していますので、ぜひ一度現在募集中のグローバルウェイの求人一覧をご覧ください。特にエンジニアを積極的に募集しています! ※ビジネスアプリケーション事業部について詳細が気になる方は、以下のページをぜひご確認ください!
>サービス内容一覧・詳細(公式サイト)
>事業の概要①
>事業の概要②