株式会社グローバルウェイ ビジネスアプリケーション事業本部 https://gw-python.com Pythonの高い技術力と長年の実績とお客様のご評価が当社の強みです。 Fri, 13 Mar 2026 11:41:14 +0000 ja hourly 1 https://wordpress.org/?v=6.8.1 https://gw-python.com/wp-content/uploads/2025/05/cropped-icon-logo-32x32-1-32x32.png 株式会社グローバルウェイ ビジネスアプリケーション事業本部 https://gw-python.com 32 32 Django Ninjaテストコード実践 https://gw-python.com/archives/1211 Wed, 04 Mar 2026 01:00:00 +0000 https://gw-python.com/?p=1211 こんにちは。グローバルウェイの清家です。 Django Ninjaでテストを書くための”実践向けガイド”を紹介します。Django Ninjaでは、URLリゾルバやミドルウェアの層を介さず高速にAPIのみをテストできる専 […]

The post Django Ninjaテストコード実践 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

こんにちは。
グローバルウェイの清家です。

Django Ninjaでテストを書くための”実践向けガイド”を紹介します。
Django Ninjaでは、URLリゾルバやミドルウェアの層を介さず高速にAPIのみをテストできる専用のテストクライアントを提供しています。

※Django Ninjaでのテストコードの実装は、過去の記事で紹介しています。

[Django NinjaでAPI開発]

この記事は以下のターゲットを対象としています。

★5 Djangoの開発経験が3年以上。
★4 Djangoの開発経験が1年以上。
★3 Webサイト開発経験あり。これからDjangoを学習します。
★2 Python初級者。簡単なプログラムコードが書けます。
★1プログラミング未経験。

なぜDjango Ninja専用のテストクライアントを使うのか

  1. 処理経路
    Django NinjaのRouter/APIを直接呼び出す設計で、URLリゾルバやミドルウェアを介さないため、軽量で高速、APIロジックに集中してテストを行えます。
  2. ミドルウェア
    CSRFやミドルウェアの副作用に影響されません
    代わりに、リクエストヘッダーやクッキーはテストクライアントのインスタンス化する際やget、post関数の引数に直接指定することができます。
  3. レスポンス/データアクセス
    response.json()によるJSON形式のデータ取得に加え、response.data(Schemaでデシリアライズ)が利用可能で、型安全に近いアサーションが書けます。
  4. 非同期(async)ビューのテスト
    非同期用テストクライアント(TestAsyncClient)を提供します。

<DjangoとDjango NinjaのTestClientの比較>

項目Django テストクライアント django.test.ClientDjango Ninja テストクライアント ninja.testing.TestClient
目的Djangoアプリ全体の統合テストAPIロジックのユニットテスト
処理経路URLconfからミドルウェアを経由してテンプレートレンダリングURLリゾルバやミドルウェアを介さない
ミドルウェアミドルウェアに依存する挙動ミドルウェアをスキップする
レスポンス/データアクセスresponse.status_code response.contentなどに加えテンプレートやリダイレクトの検証が可能response.json() response.data
非同期(async)ビューのテスト非対応(独自カスタマイズが必要)TestAsyncClientを提供する

次項では、テストコードの使用方法について紹介します。

テストコードを動かしてみよう

過去の記事:[Django Ninjaを使ってみる]で紹介したコードを、テストします。

本サンプルでは、正常動作(HTTPステータス200)とMethod Not Allowed(HTTPステータス405)を作成します。

ミドルウェアを作成します。
本サンプルコードでは、リクエストログをコンソールに出力します。

テストコードを実行します。
ミドルウェアをスキップして、APIのみがテストされていることがわかります。

アプリ全体の振る舞いまで含めて検証したい

URLリゾルバやミドルウェアなどアプリ全体の振る舞いまで含めて動作検証したい場合、Django標準のTestClientを利用します。

テストコードを実行します。
ミドルウェアによるログ出力が確認できます。

まとめ

Django Ninjaによるテストクライアントを使ったテストを紹介しました。

もし「ミドルウェアの動作も含めてNinja APIを検証したい」ケースがあれば、テストの目的に応じて両テストクライアントを使い分けるのがおすすめです。

なお、こうした話題も含め松山市で定期的にPythonセミナー等の活動を行っております。ご関心いただければ幸います。

参考文献

Testing tools | Django documentation | Django

The web framework for perfectionists with deadlines.

The post Django Ninjaテストコード実践 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
Pythonで共分散行列を求める https://gw-python.com/archives/1179 Thu, 26 Feb 2026 11:30:29 +0000 https://gw-python.com/?p=1179 グローバルウェイのYです。共分散は、2つの変数が「一緒にどれくらい変動するか」を測る指標です。 この考え方を、複数の特徴量に拡張したものが共分散行列です。 この記事は以下のターゲットを対象としています。 ★5 Djang […]

The post Pythonで共分散行列を求める first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

グローバルウェイのYです。
共分散は、2つの変数が「一緒にどれくらい変動するか」を測る指標です。

  • 正の共分散:片方が増えると、もう片方も増える傾向がある
  • 負の共分散:片方が増えると、もう片方は減る傾向がある

この考え方を、複数の特徴量に拡張したものが共分散行列です。


この記事は以下のターゲットを対象としています。

★5 Djangoの開発経験が3年以上。
★4 Djangoの開発経験が1年以上。
★3 Webサイト開発経験あり。これからDjangoを学習します。
★2 Python 初級者。簡単なプログラムコードが書けます。
★1 プログラミング未経験。

なぜ共分散行列を見るのか


共分散行列は、各変数の分散(対角成分)と、変数間の共分散(非対角成分)をまとめた行列で、データの構造を理解するための基本ツールです。
Pythonの資格を目指す人にとってもっとも身近な使用法は主成分分析(PCA)です。
PCAでは、この行列を固有値分解し、データのばらつきを説明する主成分方向を抽出します。固有値は「その方向の情報量(分散)」を示し、固有ベクトルは「その方向の軸」を表します。
共分散行列を理解することは、次元削減や特徴抽出の本質を理解する第一歩です。単にライブラリのメソッドを呼び出すだけでなく、「なぜその処理が必要なのか」を理解しておくことは、実務でも試験でも大きな価値があります。

標本共分散とは

サンプルサイズ n の 2 変数 x,y の共分散は:

$$\text{Cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})$$

ここで:

  • $x_i, y_i$:それぞれの観測値
  • $\bar{x}, \bar{y}$:各変数の標本平均

この考え方を複数の特徴量に拡張すると、共分散行列になります:

  • 対角成分:各変数の分散 $(\text{Var}(X_i))$
  • 非対角成分:変数間の共分散 $(\text{Cov}(X_i, X_j))$

共分散行列の特徴は以下のとおりです

  1. 対称行列
    共分散行列は $\Sigma = [\text{Cov}(X_i, X_j)]$ で構成され、
    $\text{Cov}(X_i, X_j) = \text{Cov}(X_j, X_i)$ なので、行列は必ず対称です。
  2. 共分散行列は、任意の非ゼロベクトル $a$ に対して
    $$a^\top \Sigma a \ge 0$$
    が成り立ちます。これは、分散が負にならないことに対応します。
  3. 対角成分は分散(2次のモーメント)
    $$\Sigma_{ii} = \text{Var}(X_i) = E[(X_i - \mu_i)^2]$$
  4. サイズは特徴量の数に依存
    特徴量が $p$ 個なら、共分散行列は$p \times p$ の正方行列になります。
  5. スケール依存性がある
    単位やスケールが異なると、共分散の絶対値が変わります。
    今回は標準化します。
  6. 固有値分解が可能
    共分散行列は対称かつ正定値なので、固有値分解できます。
    $$\Sigma = Q \Lambda Q^\top$$

固有値 $Λ$:各主成分の分散
固有ベクトル $Q$:主成分の方向

プログラムで共分散行列を作成する

今回はアヤメのデータをすべて使用します。
アヤメのデータについては
https://gw-python.com/archives/502
をご覧ください。

アヤメのデータは以下の三つの品種のデータをもちます。
 setosa, versicolor, virginica
また、それぞれ、以下の特徴量を持ちます。
 sepal length, sepal width, petal length, petal width

では、共分散行列を作成します。

今回はプログラム内で標準化をしています。標準化については
https://gw-python.com/archives/589
をご覧ください。


import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

# 1) Irisデータ読み込み
iris = load_iris()
X = iris.data  # shape: (150, 4)
feature_names = iris.feature_names

# 2) 標準化(scikit-learnのStandardScaler)
scaler = StandardScaler()
X_std = scaler.fit_transform(X)  # 平均0・分散1に変換

# 3) 共分散行列(NumPyで標本共分散)
cov_matrix = np.cov(X_std, rowvar=False, bias=False)  # rowvar=False: 列を変数、bias=False: n-1で割る

# 出力
np.set_printoptions(precision=3, suppress=True)
print("=== 共分散行列(標準化後・標本) ===")
print(cov_matrix)

実行結果

=== 共分散行列(標準化後・標本) ===
[[ 1.007 -0.118  0.878  0.823]
 [-0.118  1.007 -0.431 -0.369]
 [ 0.878 -0.431  1.007  0.969]
 [ 0.823 -0.369  0.969  1.007]]

まとめ

共分散行列の求め方を式で示しました。実際にPCAをプログラムで行う場合は、ライブラリにメソッドが用意されているため、このようなコードを書くことはほとんどありません。しかし、処理の中で何が行われているかを理解しておくことは非常に重要です。
実際のPCAでは、このあと固有値を求め、そこから寄与率(分散説明率)を算出して主成分を選びます。
今回は内容を絞り、共分散行列の求め方のみを解説します。難しい式ではありません。
ぜひ勉強して、理解を深めてみてください。


The post Pythonで共分散行列を求める first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
openpyxlで、Excelに書式を設定したい ~表示形式編 その1~ https://gw-python.com/archives/1155 Thu, 19 Feb 2026 00:00:00 +0000 https://gw-python.com/?p=1155 ※社外のコラムニストによる記事です。Python関連の情報をお伝えします。 「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます […]

The post openpyxlで、Excelに書式を設定したい ~表示形式編 その1~ first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる記事です。Python関連の情報をお伝えします。

シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます。

前回はExcelファイルの暗号化について学びました。 ここからはChapter2-8に入り、openpyxlでExcelの書式設定や罫線の引き方を学びます。今回は表示形式の変更です。

openpyxlでも書式設定はできる。

openpyxlからExcelの書式を設定することができます。対応しているのは以下の項目です。

  • 数値・日付などの表示形式(例:小数点、通貨形式など)
  • データタイプの設定
  • フォント(文字の種類、サイズ、太字/斜体、色など)
  • セルの塗りつぶし
  • 罫線(線種、色)
  • 文字の配置(水平・垂直方向の配置、折り返し、インデントなど)
  • セルの保護(編集ロックなど)
  • 条件付書式(セルの値に応じて色を変えるなど)(Conditional Formatting)
  • 名前付きスタイル(Named Styles)

書籍では、代表的な設定のみにするということで、表示形式(小数点位置、通貨、カンマ、日時)、データタイプ、文字の配置場所の指定、罫線について説明されています。今回は小数点と通貨、カンマの部分です。

各設定に関してはopenpyxlの公式ドキュメントなどでご確認ください。

openpyxl - Excel 2010のxlsx/xlsmファイルを読み書きするためのPythonライブラリ — openpyxl 3.1.4 ドキュメント

表示形式の設定

さて、今回は表示形式の設定を学びます。
表示形式の設定にはnumber_format属性に、表示したい形式をExcelの時と同じように書きます。 とりあえず一覧にしてみましたが、思い出せない時はExcelの書式設定で形式コードを確認できるので大丈夫です!(Excelホームタブの数値の項目)

数値関連

用途number_format表示例
整数"0"1233
小数点2位まで"0.00"1.233
桁区切り(カンマ)"#,##0"1,2334
桁区切り+小数点"#,##0.00"1,2334.56
パーセント"0%" / "0.00%"12% / 12.334%

日付関連

用途number_format表示例
YYYY/MM/DD"yyyy/mm/dd"2025/12/12
月日"m"月"d"日"12月12日
時刻のみ(時分秒)"hh:mm:ss"12:334:56
日付 + 時刻"yyyy-mm-dd hh:mm"2025-12-12 12:00
英語月+日付 フル/短縮mmmm-d / mmm-dMarch-12 / Mar-12

通貨、その他

用途number_format表示例
日本円(¥)'"¥"#,##0'¥1,2334
ドル+小数2桁($)"$#,##0.00"$1,2334.00
数値を文字列として扱う"@"0012334

やってみる。

ではサンプルコードを確認していきます。
number_formatを使うときの書式はこの通り。
sheet["A1"].number_format = "値"

小数点以下の表示

最初に確認するサンプルコードでは、33つのセルに同じ値(33.1416)を入れた後、各セルの表示設定を、小数点を省略・2位まで表示・4位まで表示という形に分けます。
では実際にコードを見てみます。



P.84 サンプルコード



整数だけなら0、小数第2位までなら0.00、小数第4位までなら0.0000で設定します。
これを実行した結果がこちら。

33桁区切りカンマと通貨形式の表示

セルへ値を入れるのと、書式の設定をします。ここでは33桁ごとにカンマで区切るものと、通貨形式にするもの、マイナスの数字は赤字にするという設定の33つを確認します。サンプルコードがこちら。


P.86 サンプルコード


最初の def set_cell(cname, value, fmt): の部分では、「セルに値と書式(number_format)をまとめて設定するための関数」が定義されています。ここでは①cname(セル名)、②value(セルに入れる値)、③fmt(セルに適用する書式)という設定がされています。

この関数を用意しておくことで、複数のセルに値を入れ、書式を設定するときに、毎回 c.value = ... や c.number_format = ... と書く必要がなくなるため、コードを簡潔にできるようになります。

では、各セルに入れられる値について確認していきます。まずこのコードを実行したときの結果から。

A列にはnumber_formatで設定する予定の書式を表示するガイド的な役割があります。これらの書式は、keta33_fmt、cur_fmt、num_fmt といった変数として管理されています。
B1~C33には、数値を設定し、それぞれに対応する書式を適用することで、同じ書式でも値の違いによって表示がどのように変わるかを確認できるようになっています。

例えば、set_cell("B33", 123345, num_fmt)と書かれている場合、「B33セル」に、「123345を入力」し、num_fmtで定義した書式を適用する、となります。
※num_fmt = '#,##0;[red]"△ "#,##0' →33桁区切り、負数は赤色+△表示

セルに入れられる値や書式設定の内容が明確で、後から読み返したときもわかりやすいですね。

ではきりが良いので、今回はこちらで終了です。お付き合いいただき、ありがとうございました。

Pythonの自動化で業務の効率化を図りたい方は、グローバルウェイに依頼してみてはいかがでしょうか?ご興味のある方は以下をご覧のうえ、ぜひお問い合わせください。

Pythonによる業務の自動化ソリューション

このページではPythonを活用した業務の自動化ソリューションをご紹介します。 お客様の課題 以下のような課題をお持ちのお客様にお勧めのソリューションです。 上記の課題…

The post openpyxlで、Excelに書式を設定したい ~表示形式編 その1~ first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
Django REST Framework採用率49%!API駆動型Webアプリケーション開発が企業のDXを加速させる理由 https://gw-python.com/archives/1152 Wed, 18 Feb 2026 12:11:52 +0000 https://gw-python.com/?p=1152 ※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。2025年11月に公開されたDjango開発者調査(※1)で、Django REST Framework(以下、DRF)が最も利用されているサー […]

The post Django REST Framework採用率49%!API駆動型Webアプリケーション開発が企業のDXを加速させる理由 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。2025年11月に公開されたDjango開発者調査(※1)で、Django REST Framework(以下、DRF)が最も利用されているサードパーティパッケージとして49%の採用率を記録しました。この数字は、現代の企業システム開発においてAPI基盤の重要性が急速に高まっていることを明確に示しています。本記事では、なぜAPI駆動型開発が企業のDX推進に不可欠なのか、そしてDjango/DRFが選ばれる理由を、最新データをもとに解説します。

(※1)https://lp.jetbrains.com/ja-jp/django-developer-survey-2025/

API駆動型開発が企業DXの中心となる背景

その1:マイクロサービス化とクラウドネイティブへの移行

2025年にIPAが公表した「DX動向2025」(※2)によると、レガシーシステムからの脱却が企業の急務となっており、クラウド対応やマイクロサービスアーキテクチャへの移行が加速しています。従来の一枚岩(モノリシック)なシステムから、機能ごとに独立したサービスに分割する設計が主流になる中、各サービス間をつなぐAPI基盤の構築が競争力を左右する要素となっています。

Django開発者調査では、51%の開発者がDjangoをDRFと一緒にバックエンドAPIの開発に使用していることが判明しました。さらに注目すべきは、80%がフルスタック開発を行っているという結果です。これは、一つのフレームワークでフロントエンドとバックエンドAPIの両方を効率的に開発できるDjangoの柔軟性が評価されているということです。

(※2)https://www.ipa.go.jp/digital/chousa/dx-trend/tbl5kb0000001mn2-att/dx-trend-2025.pdf

その2:SaaS連携とデータ統合の必要性

企業が利用するSaaSツールは年々増加しており、CRM、ERP、マーケティングツール、データ分析基盤など、多様なシステムを連携させる必要性が高まっています。同時に、企業の基幹システムとSaaSをつなぐAPI連携基盤の需要が急拡大しています。この背景には、「データがつながらない」ことによるDX推進の停滞という課題があります。

その3:モバイルアプリ・IoTデバイスへの対応

スマートフォンアプリ、タブレット端末、IoTデバイスなど、多様なクライアントからアクセスされる現代のシステムでは、バックエンドをAPI化することで、一つのAPI基盤から複数のフロントエンドに対応できる柔軟性が求められています。

Django REST Frameworkが選ばれる5つの理由

それでは、API駆動開発が中心となってくると、なぜDRFが選ばれてくるのでしょうか。今回は5つの理由をお伝えしていきます。

理由1:豊富な機能と開発効率の高さ

DRFは、RESTful APIの開発に必要な機能が包括的に揃っています。シリアライザー(データのJSON変換)、認証・認可、ページネーション、フィルタリング、API自動ドキュメント生成など、API開発で必要となる要素がすべて標準装備されています。JetBrainsの調査(※3)によると、DRFは「DjangoベースのAPI構築に最も広く使用されている拡張機能」と評価されており、データのシリアル化、権限管理、RESTfulエンドポイントの作成を効率化します。

(※3)https://blog.jetbrains.com/ja/pycharm/2025/10/the-most-popular-python-frameworks-and-libraries-in-2025/

理由2: 高度なセキュリティ対策

企業システムにおいて、APIのセキュリティは最重要課題です。DRFは、OAuth、JWT(JSON Web Token)、セッション認証など、多様な認証方式をサポートしており、権限管理も細かく設定できます。また、Django本体が持つCSRF対策、SQLインジェクション防止、XSS対策などのセキュリティ機能と組み合わせることで、堅牢なAPI基盤を構築できます。

理由3:優れた拡張性とカスタマイズ性

DRFは柔軟な設計思想を持ち、シリアライザーやビューセットをカスタマイズすることで、特定のビジネスロジックに合わせたAPIを構築できます。スタートアップの小規模APIから、YouTube、Instagram、Spotifyのような大規模サービスまで、幅広いスケールに対応できるのが大きな強みです。

理由4:充実したエコシステムと情報量

採用率49%で最多のサードパーティパッケージは、豊富なドキュメント、コミュニティサポート、サードパーティ製プラグインが充実していることを意味します。調査では、DRFに続いてdjango-cors-headers(19%)、django-filter(18%)といった、API開発を支援するパッケージも上位にランクインしています。問題が発生した際の解決策が見つけやすく、開発者の採用もしやすい環境が整っています。

理由5:Django本体との統合

DRFはDjangoの拡張として設計されているため、Djangoの管理画面、ORM(データベース操作)、テンプレートシステムとシームレスに統合できます。フルスタックWebアプリケーションとAPIを同一のコードベースで開発できるため、保守性が高く、技術スタックを統一できます。

これからは、API基盤がビジネスの競争力を決める時代

Django REST Frameworkの採用率49%という数字は、単なる技術トレンドではなく、API駆動型開発が企業のDX推進において標準的なアプローチになったことを示しています。マイクロサービス化、SaaS連携、モバイル対応など、現代企業が直面する課題に対して、適切に設計されたAPI基盤は強力な解決策となります。

グローバルウェイは、約10年10Python・Django開発の実績を持ち、カスタマーポータル、API基盤構築、データサービス配信など、多様なAPI開発プロジェクトを実施してきました。拡張性の高いアーキテクチャ設計、セキュリティファーストの開発姿勢、そして長期運用を見据えた保守性の高いコード品質により、企業のDX推進を技術面から支援しています。

ご興味のある方は、 Webアプリケーション開発サービスの専用ページをご覧ください。サービスの特徴や事例を掲載しています。

デジタルを活かしたWebアプリケーション開発ならグローバルウェイ

当社はPython/Djangoを活用し、お客様のデジタル化やDXを実現するためのWebアプリケーションに強みを持っています。実績、技術力、保守力ともに多くのお客様にご評価をい…

The post Django REST Framework採用率49%!API駆動型Webアプリケーション開発が企業のDXを加速させる理由 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
Cursorを使用した開発をして感じたこと https://gw-python.com/archives/1148 Thu, 12 Feb 2026 11:41:32 +0000 https://gw-python.com/?p=1148 株式会社グローバルウェイ プラットフォーム事業部の永井です。 私の事業部では主にPythonベースのDjangoを利用したWebアプリケーションを15年以上開発しております。 そんな中、2025年はAIを活用した開発効率 […]

The post Cursorを使用した開発をして感じたこと first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

株式会社グローバルウェイ プラットフォーム事業部の永井です。

私の事業部では主にPythonベースのDjangoを利用したWebアプリケーションを15年以上開発しております。

そんな中、2025年はAIを活用した開発効率化を模索する年でした。なぜならChatGPTやCopilot、CursorなどのAIを活用した開発支援ツールが飛躍的に技術躍進し、真の意味で『プロンプト開発』によって機能実装が可能となった年であったと感じたためです。 実際にCursorをダウンロードし、何がどこまでできるかを試してみた内容を紹介します。

実施したこと

作成したものは、社内ポータル的なもので機能概要は以下です。

  • 一般ユーザ機能
    • ログイン/ログアウト機能
    • トップページ(直近のお知らせ、お問い合わせ表示)
    • お知らせ機能(お知らせ一覧、詳細)
    • お問い合わせ機能(お問い合わせ一覧、新規お問い合わせ登録、編集)
  • 管理者機能 ※一般ユーザ機能にプラスして以下
    • ユーザ管理(ユーザ一覧、登録・変更・削除)
    • グループ管理(グループ一覧、登録・変更・削除)
    • 権限管理(権限一覧、登録・変更・削除)
    • お知らせ管理(お知らせ一覧、登録・変更・削除)
    • お問い合わせ管理(お問い合わせ一覧、登録・変更・削除)

さすがに何もないところから作成すると収拾がつかなくなりそうだったため、開発環境にフロントエンドは Vue(Vite)、バックエンドはDjango REST Framework(DRF)を採用し、両者を dockerコンテナで起動させるdocker_compose.yamlまでは手動で作成したものを使用しました。作成したフォルダをCursorのIDEで開き、あとはプロンプトベースで作業を依頼しました。ちなみにCursorを選んだ理由は、「指示→生成→即実行→差分編集」のループをVSCodeと同様のIDEで実行可能であった点と、空いているAIエンジンを自動で選択してくれるためです。

また、プロンプト開発の進め方としては、まずは大枠の作成を依頼(ヘッダーはタブで切り替え、左メニューに各機能を表示、右側がメイン画面程度を依頼)し、そこができた後に各メニュー単位での機能実装をプロンプトで依頼しました。

また、それらを作るうえで私が確認したかった点は以下となります。

  1. プロンプト開発だけで動くものが本当にできるのか
  2. どれくらいのスピードでできるのか
  3. デザインなど文字では言い表せない部分をどこまで対応できるのか
  4. どこまで品質が保てるのか
  5. 作ったものをデプロイまでできるのか

結果

1.プロンプト開発だけで動くものが本当にできるのか
結論、普通に動作するものが作成できました。もちろん、1回でうまくは動作しない場合が多いため、その都度そのエラー画面キャプチャを撮り、チャットにペーストして「xxxを実施したらエラーが発生したから確認して」など依頼する必要があります。ただ、このやり取りを繰り返していくことで簡単な画面であれば動作するようになります。体感で一覧表示や詳細表示などであれば、エラーは5回以内で修正でき、想定通りの動きを行えるイメージでした。

2.どれくらいのスピードでできるのか
今回作ったベース機能(ログイン・ホーム画面表示)だけであれば2~3時間で作成できます。その他の機能も大体1つにつき2時間ほどである程度動作するところまでは作成できます。 何より、プロンプトで依頼した後は別の作業をしていて問題ないため、他の作業をしている間に実装が終了し後は動作確認する、という流れなのでトータルの作業効率という意味では圧倒的に良いのではと感じました。

3.デザインなど文字では言い表せない部分をどこまで対応できるのか
プロンプトベースだと細かいイメージが伝わらないと思っていましたが、意外とニュアンスをくみ取り対応してくれました。また大枠のイメージであれば、例えば参考になるURLを指定して「このサイトに似たデザインにして」と依頼すると、色合いや文字などをある程度合わせてくれます。
ただし、CSSやHTMLに関して(Vueなので今回はTypeScript)は、何度も依頼していると、CSSとHTMLの両方で同様の実装をしたり不要な入れ子構造になり、思ったように修正されないケースもありました。そういう時は、一度CSSやHTMLの属性を綺麗にして、構成を1から依頼し直すことで改善できました。

4.どこまで品質が保てるのか
これはやはり1回で完璧なものは無理で、1機能あたり数回、多いときには十数回はデバックし、修正依頼を繰り返す必要がありました。そういう意味では、品質は中の下くらいかなと思いました。

また、コードをレビューしているわけではないため、実際にセキュリティ的に問題がないかなどは、別のチェックツールなどで試験するか、愚直にコードレビューをする必要はあると思います。

5.作ったものをデプロイまでできるのか
これは可能でした。実際にdocker上でローカル開発したものを、AWSのデプロイも、AIにデプロイ作業まで実行することができました。ただし、AWSへアクセスする際のtokenやsecret情報を一時的にでもAIにアクセスさせるので、セキュリティ的に問題があります。おすすめとしてはデプロイ用のScript作成までをCursorに実施してもらい、それを手動で運用するなどが良いと思いました。

6.その他、気づいた点
Cursorには1回ごとに修正内容を開発者に確認させるAskモードと、すべてを自動承認してまかせるAgentモードがありますが、Agentモードで気を抜くとDBのmodelを修正したことで起動できなくなった際に、Agentが勝手にデータを全クリアすることがありました。そのため、初期データなどは前もってinitial.yamlなどで作成しておき、そこから初期データを再構築できるようにしておくと安心です。

またCursorでは、どのAIモデルを使用するかを選べるのですが、これもAutoにしておくと日によっては返答が遅い場合がありました。私はCursorを社用アカウントで有償利用しているため、試しにcludeなどを指定すると非常に精度よく動いてくれました。一方で、clude課金は高いのと有償アカウントでもある一定量を超えると重量課金されるため、基本はAutoにしておくのがよいのかなと思いました。

結論

今回、簡単なポータルではありますが、Cursorを使うことで本格的なWebアプリをプロンプトだけで実装することが可能である、ということが体感できました。

この事実は、今まで社内DXに二の足を踏んでいた中小企業にとっては朗報で、ある程度の知識をもっていれば大きなコストをかけてSaaSを使わなくても自社向けに独自カスタマイズしたサービスを開発できる時代がきたと言えると思います。私はこれを勝手に「CSaaS」と呼んでおり(Custom Software as a Service)、今後この流れは2026年以降一層加速するものであると見ています。

一方、開発業務を担っているSIerとしては、今後社内開発が大企業を中心に加速した場合案件が減ってしまう、という危機感にもつながるかと思いました。そのため、まずはCursorなどでどこまでできるかを肌身で体感し、その境界線がどこかをしっかり見極め、その先に何ができるのかを模索し続ける必要があると考えています。

今後も、AIを利用した開発の可能性については別の機会に紹介できればと思います。

The post Cursorを使用した開発をして感じたこと first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
PythonでXのAPIを使う方法 https://gw-python.com/archives/1145 Thu, 12 Feb 2026 11:41:26 +0000 https://gw-python.com/?p=1145 この記事は以下のターゲットを対象としています。 ★5 Djangoの開発経験が 3 年以上。★4 Djangoの開発経験が 1 年以上。★3 WWebサイト開発経験あり。これからDjangoを学習します。★2 Pytho […]

The post PythonでXのAPIを使う方法 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

この記事は以下のターゲットを対象としています。

★5 Djangoの開発経験が 3 年以上。
★4 Djangoの開発経験が 1 年以上。
★3 WWebサイト開発経験あり。これからDjangoを学習します。
★2 Python初級者。簡単なプログラムコードが書けます。
★1 プログラミング未経験。

はじめに

SNSデータは、トレンド分析やマーケティング調査、ボット開発、業務効率化ツールの作成など、さまざまな分野で活用できる非常に魅力的なデータソースです。個人開発から研究用途まで幅広く使える点も、多くのエンジニアや学習者に支持されている理由の一つです。

その中でもX(旧Twitter)は、リアルタイム性の高い情報が大量に流れるプラットフォームとして知られています。ニュース速報、世の中の反応、個人のつぶやきなどが瞬時に集まるため、「今、何が起きているのか」「人々が何に関心を持っているのか」を把握するのに非常に適しています。そのため、多くの開発者がデータ収集や分析の対象としてXを活用しています。

Xには、こうしたデータをプログラムから扱うための API(Application Programming Interface) が用意されています。APIを利用することで、人の手で操作しなくても、ポストの投稿や取得、ユーザー情報の参照などを自動化することが可能になります。

本記事では、PythonからXのAPIを利用する基本的な流れを紹介します。
「APIってそもそも何?」「PythonからどうやってXと連携するの?」といった疑問を持っている方でも理解できるように、できるだけ噛み砕いて説明していきます。

具体的には、XのAPIを使うための事前準備、Python環境の整え方、ライブラリの利用方法、そして実際に動かせる簡単なコード例までを順を追って解説します。これからXのAPIに触れてみたい方や、Pythonで何か作ってみたいと考えている方にとって、最初の一歩となる内容を目指しています。

XのAPIとは

XのAPIとは、プログラムからXの機能やデータを利用するために用意された公式の仕組みです。通常、私たちはブラウザやスマートフォンのアプリを通してXを操作しますが、APIを使うことで、人の操作を介さずにプログラムから直接Xとやり取りすることができます。
APIを利用すると、X上に存在するさまざまな情報を自動的に取得したり、逆にプログラム側から情報を発信したりすることが可能になります。これにより、手作業では難しい大量データの処理や、定期的な作業の自動化が実現できます。
具体的には、APIを使うことで次のような操作が行えます。

  • ポストの投稿や取得
  • 特定のキーワードやハッシュタグを含むポストの検索
  • ユーザーのプロフィール情報やフォロワー情報の取得
  • 条件に応じた自動投稿(アプリに適切な権限が付与されている場合)

これらの機能をPythonから操作することで、取得したポストを分析してトレンドを可視化したり、定期的に情報を発信するボットを作成したりと、さまざまな応用が可能になります。特にPythonは、ライブラリが豊富でコードも読み書きしやすいため、API連携の入門として非常に相性の良い言語です。

XのAPIは、開発者向けにルールや利用制限(レートリミット)が設けられていますが、それらを理解した上で使えば、個人開発や学習用途でも十分に活用できます。本記事では、こうしたAPIの仕組みを踏まえつつ、PythonからXのAPIを扱う基本的な方法を解説していきます。

事前準備:開発者アカウントとAPIキー

XのAPIを利用するためには、まず Xの開発者アカウントを作成する必要があります。通常のXアカウントとは別に、開発者向けの登録を行うことで、APIを利用するための各種設定や管理が可能になります。

開発者アカウントの登録後、開発者ポータルにアクセスし、アプリケーションを作成します。アプリを作成すると、そのアプリ専用の認証情報が発行され、これを使ってプログラムからXのAPIにアクセスする仕組みになっています。

開発者ポータルサイトはこちらです。
https://developer.x.com/ja

アプリ作成後に発行される主な認証情報は、次のとおりです。

  • API Key
  • API Secret
  • Access Token
  • Access Token Secret(または Bearer Token)

これらの情報は、XのAPIを利用する際に本人確認を行うためのもので、いわばパスワードや鍵のような役割を果たします。そのため、第三者に知られてしまうと、不正利用される危険性があります。

実際の開発では、これらの認証情報を ソースコードに直接書き込むことは避け、環境変数や設定ファイルを利用して管理するのが一般的です。特に、GitHubなどの公開リポジトリにコードを置く場合、うっかりAPIキーを公開してしまうと大きなトラブルにつながるため注意が必要です。

最初は少し手間に感じるかもしれませんが、この認証情報の管理はAPIを安全に使うための重要なステップです。次の章では、これらの情報を使って、実際にPythonからXのAPIに接続する方法を見ていきます。

Pythonの環境準備

今回は、PythonからXのAPIを扱うために、専用のライブラリを利用します。Pythonには標準機能だけでも多くのことができますが、API連携では認証処理や通信部分を簡単に書けるライブラリを使うのが一般的です。

ここでは、XのAPIをPythonから扱う際によく使われているtweepyというライブラリを使用します。tweepyは、XのAPI仕様に沿った機能があらかじめ用意されており、複雑になりがちな認証処理やAPIリクエストを、比較的少ないコードで記述できるのが特徴です。

まずは、Pythonがインストールされていることを確認した上で、以下のコマンドを実行してtweepyをインストールします。

pip install tweepy

このコマンドを実行すると、tweepy本体と、API通信に必要な関連ライブラリが自動的にインストールされます。インストールが完了すれば、Pythonのスクリプトからimport tweepyと書くだけで利用できるようになります。

 tweepyを使うことで、XのAPIに対する認証設定、ポストの投稿や取得、検索処理などをシンプルに実装できます。そのため、API連携が初めての方でも、比較的スムーズにXのAPIを扱い始めることができます。

次の章では、インストールしたtweepyを使って、実際にXのAPIへ接続する方法を紹介していきます。

APIに接続してみる

まずは、XのAPIに接続するための基本的なコードを見てみましょう。

このステップでは、先ほど取得したAPIキーやアクセストークンを使って、PythonからXのAPIへ認証・接続を行います。

import tweepy

API_KEY = "APIキー"
API_SECRET = "APIシークレット"
ACCESS_TOKEN = "アクセストークン"
ACCESS_TOKEN_SECRET = "アクセストークンシークレット"

auth = tweepy.OAuth1UserHandler(
    API_KEY,
    API_SECRET,
    ACCESS_TOKEN,
    ACCESS_TOKEN_SECRET
)

api = tweepy.API(auth)

print("接続成功")

まず、import tweepy によって、先ほどインストールしたtweepyライブラリを読み込みます。その後、開発者ポータルで発行された API Key や Access Token などの認証情報を変数に代入します。ここには実際に自分のアカウント用のキーを設定してください。

次に、OAuth1UserHandlerを使って認証情報をまとめ、XのAPIにアクセスするための認証オブジェクトを作成します。これは、「このプログラムは正しい開発者である」ということをX側に伝えるための重要な処理です。

最後に、tweepy.API(auth) によってAPIクライアントを作成します。このAPIオブジェクトを通して、ポストの投稿や取得など、さまざまなAPI操作を行うことができるようになります。

このコードを実行してエラーが表示されず、接続成功 と出力されれば、PythonからXのAPIへの接続が正しく行えている状態です。もしエラーが出た場合は、APIキーの入力ミスや、アプリの権限設定(Read / Write)が正しいかを確認してみてください。

次の章では、このAPIオブジェクトを使って、実際にポストを投稿する方法を紹介していきます。

ポストを投稿してみる

APIへの接続が確認できたら、次は 実際にポストを投稿してみましょう。
XのAPIを利用すると、Pythonのプログラムからテキストを指定して、自分のXアカウントにポストを投稿することができます。 以下のコードを実行すると、指定したテキストが自分のXアカウントに投稿されます。

client = tweepy.Client(
    API_KEY,
    API_SECRET,
    ACCESS_TOKEN,
    ACCESS_TOKEN_SECRET
)

client.create_tweet(text=’テスト投稿’)

ここでは、tweepy.Client を使ってAPIクライアントを作成しています。
このclientオブジェクトを通して、ポストの投稿や取得など、さまざまな操作を行うことができます。
create_tweetメソッドのtext 引数に、投稿したい内容を文字列で指定するだけで、簡単にポストを投稿できるのが特徴です。コードを実行後、実際にXの画面を確認してみると、指定したテキストが投稿されていることが分かるはずです。

このようにAPI経由で投稿できるようになると、手動で投稿するのとは違い、

  • 決まった時間に自動で投稿する
  • 条件に応じて通知や情報を発信する
  • 他の処理と組み合わせたボットを作成する

といった応用が可能になります。個人開発や学習用途としても、非常に便利な機能です。
ただし、API経由での投稿は、アプリの権限設定や契約しているプランによって制限される場合があります。コードを実行してエラーが出た場合は、開発者ポータルでアプリに「Write権限」が付与されているかを必ず確認してください。 また、連続投稿や過度な自動投稿は、利用規約に抵触する可能性もあるため、実運用ではルールを守った使い方を心がけることが重要です。

API利用時の注意点

XのAPIを利用する際には、便利な反面、いくつか事前に理解しておくべき注意点があります。これらを把握せずに使ってしまうと、突然APIが使えなくなったり、意図しない制限に引っかかったりすることがあるため注意が必要です。

まず重要なのが、利用回数制限(レートリミット)の存在です。XのAPIでは、一定時間内に実行できるリクエスト回数が制限されています。この制限を超えてしまうと、しばらくの間APIへのアクセスが拒否され、データの取得や投稿ができなくなります。そのため、頻繁にAPIを呼び出す処理を作成する場合は、リクエスト間隔を調整したり、一定時間待機する仕組みを組み込んだりすることが重要です。

次に、契約しているプランによって使える機能が異なる点にも注意が必要です。無料プランでは利用できるAPIの範囲や回数が限られており、一部の機能は有料プランでのみ提供されています。自分がやりたいことが、現在のプランで実現可能かどうかを、事前に公式ドキュメントで確認しておくことが大切です。

また、Xの利用規約や開発者ポリシーを必ず守ることも非常に重要です。取得したデータの扱い方や公開方法、ボットの挙動などには細かいルールが定められています。規約に違反した場合、アプリの停止やアカウントの制限といったペナルティを受ける可能性もあります。

特に実運用を想定したアプリケーションでは、レートリミット超過時のエラーメッセージを適切に処理し、再試行や待機を行うエラーハンドリングが欠かせません。こうした対策を行うことで、安定してAPIを利用できるようになります。

まとめ

PythonとXのAPIを組み合わせることで、これまで手作業では難しかったSNSデータの活用が、プログラムによって効率的に行えるようになります。具体的には、投稿内容を自動で収集して分析したり、条件に応じて情報を発信する自動化ツールを作成したりと、活用の幅は非常に広いものがあります。

たとえば、

  • SNSデータの収集によるトレンド分析
  • 定期的な情報発信を行う自動投稿ツールの作成
  • ポスト内容を活用したデータ分析や研究用途

など、アイデア次第でさまざまな用途に応用できます。Pythonはデータ処理や可視化のライブラリも充実しているため、XのAPIと組み合わせることで、より高度な分析や開発にも挑戦しやすくなります。

最初は、開発者アカウントの登録やAPIキーの管理など、準備が少し大変に感じるかもしれません。しかし、一度環境を整えてAPIに接続できてしまえば、その後の作業は比較的スムーズに進められるはずです。

本記事をきっかけに、ぜひPython経由でXのAPIを実際に触ってみてください。

The post PythonでXのAPIを使う方法 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
Pythonプラチナ認定インテグレーターの取材がありました。 https://gw-python.com/archives/1120 Wed, 04 Feb 2026 12:01:54 +0000 https://gw-python.com/?p=1120 株式会社グローバルウェイは、2004年に創業。「“人”と“技術”を新しい時代のために」という経営理念のもと人材サービスや技術サービスなどの様々なサービスを提供してきた企業です。

The post Pythonプラチナ認定インテグレーターの取材がありました。 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

株式会社グローバルウェイについて

企業情報

企業名:株式会社グローバルウェイ
URL:https://www.globalway.co.jp/
住所:東京都港区新橋6丁目19番13号 エンスイテ御成門5階(本社)

株式会社グローバルウェイは、2004年に創業。「“人”と“技術”を新しい時代のために」という経営理念のもと人材サービスや技術サービスなどの様々なサービスを提供してきた企業です。
創業当初から転職・就職のための情報プラットフォーム「キャリコネ」や企業が抱えるIT系の課題解決にも取り組んでおり、お客様一人ひとりと真摯に向き合い、対話と信頼を重ねながら柔軟かつ持続可能なビジネスモデルの実現に向け、デジタル技術の導入と人材の強化を両軸に、働く人と企業の可能性を広げてこられました。

インタビュー

プラットフォーム事業部 ディレクター 永井 謙史 様

会社で力を入れているビジネスを教えてください

永井氏)
システム開発には大きく、プロコード、ローコード、ノーコードの3つの開発手法がありますが、プラットフォーム事業部はプロコードを主としており、プラットフォーム構築支援サービスと運用サービスという2軸でサービスを展開しています。

プラットフォーム構築支援サービスは、まずお客様から要望や課題をヒアリングし、要件定義から対応しています。その中でアライアンス先のサービスと組み合わせ、お客様にとって最適なサービスを提案しています。具体的には、主にBtoB向けのWebポータルサイトの構築、またAPI開発やETL連携、インフラ構築などにも対応しており、ITに関わるサービスをトータルで提供しています。また、専属デザイナーがいるため、要件定義の段階からUIを意識した設計イメージを具体化することができます。

もう一つの運用サービスでは、当社が開発・納品した製品を対象に開発ノウハウをもった担当者が継続して保守対応実施しています。問い合わせに対しては、専用サイトでチケット管理を行い、業務時間範囲で対応しています。またマネージドサービスも提供しています。

これらのサービスは当社単独で行うのではなく、AWSやLinuxなどの技術や各種デジタルプラットフォームを活用し、企業の課題解決に取り組んでいます。

実は当社は営業部門がなく、提案から要件定義、開発・運用までエンジニアが一気通貫で担当します。これは当社の経営理念を実現するにあたりエンジニア全員が営業と要件定義、開発まで行えるフルスタックなエンジニアである必要があったためです。エンジニアが直接お客様からの幅広いニーズを素早くキャッチアップするこができるため、提案や課題解決をスピーディーに対応できます。

Pythonビジネスをご紹介ください

永井氏)
長らくJava中心で開発してきましたが、直近約10年はPythonを主軸に、DjangoによるWeb開発を中心に展開しています。

当社が、Pythonを導入するきっかけは、長年お付き合いのある通信系企業のお客様から頂いた案件の中に、もともとJavaで作られたシステムをPythonに置き換えるといったものがあったことでした。

ちょうどその頃、それまで扱ったことがあるJavaやRubyなどの言語以外で、構文がシンプルで書いていて楽しいと感じられる言語を探していました。Pythonが登場し、Djangoの存在を知ったことで、これならフルスタックで対応ができること、そして、セキュリティに厳しいお客様にも対応ができることが当社の事業に合っているのではないかと考え、メインで活用するようになりました。

その後、Python案件のお話を頂く機会が増えてき、例えば個別指導塾の社内イントラ上で稼働する業務システムの構築や、資材・機械のメーカーなどのWeb開発やデータ連携といったプロジェクトなどを経験しきました。

Djangoをビジネスで使用するにあたって感じたことを教えて下さい。

永井氏)
実際にDjangoを使用してみると、全体を知るにはやはり知識が必要になりますので、導入するまで結構ハードルが高いと感じました。

ただ、使い方を知ってしまえば、セキュリティ面を含めて、すべてDjangoで解決することができますし、ORM (Object-Relational Mapping)も非常に使いやすく、環境を堅牢に保ちたいというお客様に対しては適していると考えています。

Pythonエンジニアの育成方法を教えてください。

永井氏)
当社の社員はもちろん、協力会社の方たちを含め、Javaの経験者ではあるものの、PythonやDjangoの経験者はほぼいませんでした。そこで、ここ2、3年ほどで協力会社の方を含め、1週間程度の社内教育を実施し、その上で当社が費用を負担してPython3エンジニア認定試験を受けてもらう教育プログラムを立ち上げました。

基本的に常に傍にいて教えるという教育ではなく、社内のナレッジマネジメントツールにまとめたものやPowerPointの資料、動画を見ての自主学習です。その後、知識が定着しているかを確認するために社内試験を受けて、問題がなければ基礎試験を受験してもらうようにしています。

プロジェクトに入る前には必ずPython3エンジニア認定基礎試験には合格することを前提としていますので、事業部のメンバー35名と協力会社の10名は全員取得しています。私は、4年ほど前に入社したのですが、他部署も含め、この4年間で70~80人ほどが基礎試験に合格しています。

こうした取り組みを始めてから、安定した品質を保てるようになりました。また、入社時点ではPythonを知らなかったとしても、それまでに他の言語を扱ったメンバーばかりなので、教育プログラムを実施してから1~2か月経った頃にはPythonに慣れて、問題なく業務に就くことができています。

教育プログラムを外部にも提供していると伺いましたが、反応はいかがでしたか。

永井氏)
当社が実際に実施している教育プログラムをサービス化できないかと考え、2024年夏頃に無料トライアルを実施しました。この時は基礎試験の受験費用も当社が負担する形で進めました。

何かしらの言語を経験したことがある方を条件に募集しましたが、情報を公開して2日ほどで大量のお申し込みがあったため、すぐに締め切りました。応募者は医療系や教育系、昔IT業界で働いていた主婦の方など、本当にいろいろな経歴を持つ方たちばかりで、最終的に20名に受講いただき、13名が基礎試験に合格されました。 受講された方からは、「本当にこれで基礎試験に合格できるとは思っていなかった」、「無料なのにここまでやってもらえてよかった」という感想をいただいています。受講後に転職相談をされた方もいました。

今後の展開や、パートナー紹介コーナーを見ている人に一言

永井氏)
当社はこれまでPythonやDjangoを使ったWeb開発を主軸に行ってきましたが、Python自体はデータ分析やAI、IoTと言った分野にも強みがありますので、現場の見える化、予測・自動化、センサー連携まで一気通貫で支援したいと思っています。少子高齢化や人手不足などの様々な社会課題にも取り組んで行ければと考えていますが、それを実現するために、地方自治体や中小企業の方々と手を取り合い、一緒に検討しながら開発とサービスの提供をしていきたいと思っています。

また、最近はAIの活用が広がり自動化が加速する中、Python×AIのサービス可を検討しています。事業部内で新規事業検討チームを立ち上げて若手中心にいろいろな検討を進めています。

例えば、開発工程において、要件定義は人間がやりますが開発に関してはChatGPTやCopilot、Cursorを利用することが昨今増えています。AIを使えば、ある程度のレベル感のものを作成することはできますが、当然いろいろな課題は残りますので、最終的にコードをチェックする必要があります。この時のコードのチェックを自動化する、もしくは、我々が何かしらのサービスとして対応ができないかと検討しています。

その他、高齢化の時代に、誰もが安心して暮らせる仕組みを、IoTなどのITで、外出見守り・交通安全支援・在宅見守りといった“安心のインフラ”を形にし、将来の私たちが「これが欲しかった」と思えるプロダクトを開発していきたいと考えています。

こうしたことを一緒に考えてくれる企業だけでなく、一緒に作り出す仲間も積極的に募集しています。

当社は開発実績も豊富に持っていますし、メンバー全員が試験に合格していますので、安定した品質でご支援することが可能です。ぜひ安心して案件のご相談を頂ければと思います。

また、Python3エンジニア認定試験の取得にあたっての補助をはじめ、社内教育体制も充実していますので、エンジニアを目指される方はぜひ採用ページをのぞいてみてください。
https://www.globalway-recruit.com/

The post Pythonプラチナ認定インテグレーターの取材がありました。 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
PythonによるWebアプリケーション開発の最新動向と2025年のトレンド https://gw-python.com/archives/1135 Wed, 28 Jan 2026 02:00:00 +0000 https://gw-python.com/?p=1135 ※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。 日々の業務を自動化し、Web上に仕組みとして定着させる手段として 、PythonとDjangoを活用したWebアプリケーション開発への注目が高 […]

The post PythonによるWebアプリケーション開発の最新動向と2025年のトレンド first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。 日々の業務を自動化し、Web上に仕組みとして定着させる手段として 、PythonとDjangoを活用したWebアプリケーション開発への注目が高まっています。今回は、Python Web開発の最新トレンドと実践的な活用方法について解説します。

PythonによるWeb開発の動向

Python Software Foundation と JetBrains PyCharmが共同で実施している2025年に公開されたPython開発者アンケート(※1)によると、Python開発者の46%がWeb開発に、51%がデータの探索と処理にPythonを利用しており、pandasとNumPyといったライブラリを用いたデータ分析が代表的なユースケースです。更にAI分野にも強みを持つことも特徴ですので、Pythonを軸にWeb・データ・AIを横断して活用する流れは、今後ますます加速していくと考えられています。

そして、Pythonを使ったWeb開発の割合も着実に増えています。先程46%という数字を紹介しましたが、前年は42%でした。これはWeb開発の現場でPythonを選択するエンジニアが確実に増えてきていることが伺えます。 もう1つ注目したいのが、PythonのWebフレームワークです。現在、代表的な選択肢としてFastAPI、Django、Flaskとなどが挙げられます。この中で比較的新しく話題性があるがFastAPIで、Webフレームワークの利用率では第1位の38%という数字で勢いのあるフレームワークだと分かります。一方で、認証機能や管理画面、ORMなどを含んだフルスタックなWebアプリケーションを構築する場面では、機能の網羅性と柔軟性を備えたDjangoが依然として根強い支持を集めています。

別の側面から見みると、市場面でもDjangoエンジニアの価値は高い水準にあります。フリーランスボードが公表している「2025年10月のフリーランス案件の単価における市場動向」(※2)では、Djangoエンジニアの平均年収が約913万円(月収 約76.1万円)に達し、フレームワーク別年収ランキングで11位に位置するなど、Djangoエンジニアの市場価値の高さが伺えます。同調査では、RAGやAIエージェントの実装経験を持つ人材やAI関連職種の単価も高水準であるとされており、AI開発需要の拡大を背景に、Pythonエコシステム全体の成長がDjangoエンジニアの追い風となっています。

(※1)https://blog.jetbrains.com/ja/pycharm/2025/09/the-state-of-python/
(※2)https://freelance-board.com/journals/detail/965

Djangoが選ばれ続ける理由

WebフレームワークのDjangoは2005年の公開から2025年で20周年を迎えました。その持続的な人気には、いくつもの理由があります。

まず挙げられるのが、「Batteries included( バッテリー同梱)」の哲学です。

Djangoは管理画面、認証システム、ORM(Object-Relational Mapping)など、Webアプリケーション開発に必要な機能が標準搭載しています。追加のライブラリを探して入れる前から、実用的なアプリケーション基盤が手に入るため、開発者は核となるビジネスロジックの実装に集中でき、結果として開発効率を大きく高めることができます。

2つ目は、拡張性の高さです。

Djangoの各機能は独立性が高く、一部の改良や交換が全体に影響を与えにくい設計となっています。この特性により、企業の成長に合わせてシステムを段階的に拡張していくことが可能です。将来の拡張を前提としたシステム設計が当たり前になっている現在において、Djangoはその要件にしっかりと応えるフレームワークだと言えるでしょう。

そして3つ目はセキュリティ面での安心感です。

Djangoは、CSRFトークン、SQLインジェクション、XSS攻撃など、多くの脆弱性に対してデフォルトで対応しています。さらにミドルウェアを設定することで、キャッシュコントロールやCSP対策も共通的の仕組みとして一括で管理することができます。
Webアプリケーションでは、セキュリティの要素は欠かせません。どれだけ良いアプリケーションを構築してもセキュリティ側の対応が不十分では大きなリスクを抱えたまま運用をしていくことになります。
Djangoは、こうしたリスクを最小限に抑えるための仕組みを標準で備えている点でも、企業利用に適したフレームワークだと言えるでしょう。

2025年のWebアプリケーション開発トレンド

Python、Djangoに関しての開発トレンドも見ていきます。最新の技術動向を見ると、3つのキーワードが重要になっています。

1つ目は、非同期処理の普及です。

Django開発者の過半数が非同期テクノロジーを採用しており、これによりリアルタイム性が求められるチャットや通知、ストリーミングのようなアプリケーションでもPythonが選択されるようになってきました。Djangoは非同期処理に対応しているため、リアルタイム性が求められるアプリにも使いやすいフレームワークです。

2つ目は、AIとの統合が加速していることです。

Python の機械学習ライブラリとの親和性を活かし、WebアプリケーションにAI機能を組み込む事例が増えています。データ分析からレコメンデーション機能まで、幅広い AI 活用に対応できます。

3つ目は、マイクロサービス化の進展です。

大規模システムの開発において、Djangoの独立性の高さがマイクロサービスアーキテクチャとの相性の良さを発揮しています。その結果、機能ごとの分割や将来的な拡張にも柔軟に対応できます。

Python / Djangoを活用した Webアプリケーション開発やDX開発は経験と技術力のある会社と進めるのがおすすめ

自社で実現したいシステムや運用、その先にあるアウトプットを明確にした上で、どの技術を選定するかを慎重に見極める必要があります。その中でも汎用性や拡張性、将来性を考えるとPython / Django はとても有力な選択肢です。
ただし、自社にとって本当に適切なのかを判断するのが難しい場合は、Python/Djangoによる設計や開発を知見や実績がある会社に相談しながら最適なアーキテクチャや進め方を検討していくのが良いでしょう。

PythonやDjangoを使ったWebアプリケーション開発をご検討されている企業様は、株式会社グローバルウェイの約10年にわたり蓄積してきた経験と技術力がお役に立てます。

ご興味ある方は、 Webアプリケーション開発サービスの専用ページを御覧ください。
サービスの特徴や事例を掲載しています。

デジタルを活かしたWebアプリケーション開発ならグローバルウェイ

当社はPython/Djangoを活用し、お客様のデジタル化やDXを実現するためのWebアプリケーションに強みを持っています。実績、技術力、保守力ともに多くのお客様にご評価をい…

The post PythonによるWebアプリケーション開発の最新動向と2025年のトレンド first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
openpyxl:既存のExcelファイルにシートを追加して別ファイルからデータをコピペする https://gw-python.com/archives/1137 Wed, 28 Jan 2026 01:00:00 +0000 https://gw-python.com/?p=1137 ※社外のコラムニストによる記事です。Python関連の情報をお伝えします。 「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます […]

The post openpyxl:既存のExcelファイルにシートを追加して別ファイルからデータをコピペする first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる記事です。Python関連の情報をお伝えします。

「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます。

前回は、顧客一覧用のExcelファイルから、必要なデータをコピーして新しいExcelに貼り付ける、という2つのExcelブックを行き来してデータを操作する方法を学びました。 今回は、前回使用した顧客一覧から条件で抽出したデータを既にあるExcelの別のシートにコピペするという作業を学びます。

既存のExcelファイルにシートを作って、別のExcelから必要なデータを振分けコピペするまでを自動化

データを取り出す元となるExcelファイルは、前回と同じもの(all-customer.xlsx)を使用します。そして、取り出したデータを転記する先も、前回、新たに作成したExcelファイル(spilit_sheet.xlsx)を使用します。

前回と違う点は新しいExcelファイルを作成して転記するか、それとも既存のExcelファイルに別のシートを作って転記するかです。では早速コードを見ていきます。



P.80
購入プランごとに顧客を異なるシートに分けてみましょう。

これを実現する方法ですが、顧客一覧を上から読んでいって、プランごとのシートを開いてそこに情報を追記していく処理を行います。もし該当するシートがなければ新規作成して追記します。以下が、そのプログラムです。

このプログラムはall-customer.xlsx 内にある顧客名簿から、split_sheet.xlsxにプランの名前を付けたシートを追加し、そこに転記していくというものです。シートが重複してしまうと困るので、該当の名前の付いたシートがあるかを確認し、ある場合には該当のシートの最後尾に追記、なければ新たにシートを追加して書き込んでいくという形が取られています。

出来上がるのはこんな感じのファイルです。

openpyxlの.append()を使うという意味

基本的にほとんどのコードはこれまで出てきたようなものばかりなので詳細な説明は省略しますが、一点気になったところが。



P.81

6ではシートに情報を追記します。ワークシートのメソッドappendは今回、初めて使います。これは、ワークシートの末尾に値を追記します。



「ワークシートのメソッドappendは初めて」、という部分です。

append自体はリストに要素を追加するために使用されるメソッドで、前回も使用しています。なのに「初」とは何か、しかも「ワークシートの」とわざわざついています。

結論だけまずは書いておくと、appendが対象とするオブジェクトがこれまでとは違う、ということになります。まずは該当部分を比較してみます。



<前回>

→データを一旦Pythonのlist(ここではcustomers)にまとめた後にExcelに書き込んでいました。

<今回>


→条件で振り分けたデータを都度Excelのワークシートに書き込んでいました。

というわけで、前者はPythonのメソッドであるappendを使用していますが、後者はopenpyxlのメソッドであるappendを使い、都度Excelに直接書き込んでいました。つまり…別の機能に対してデータが追加されており、動作の対象が異なるということになります。

今回のコードもPythonのリストを使って処理することもできます。

ただ、前回の場合は一つのシートに対して条件に合うデータを追記していくものであったため、一度Pythonのリストにまとめてしまってから処理をした方が、Excelにアクセスする回数が少なくて済むため、効率的です。

一方、今回はデータをいくつかのシートに条件に応じて振り分ける形になるため、Excelに都度直接書き込んだ方が、複数のリストを作る必要がない上、リストを経由する必要もないので効率的です。

Pythonのリストを経由せず、Excelに直接書き込む場合の注意点としては、書き込み以前・書き込み中のソートや書式などの編集ができないこと、Excelシートに設定されたヘッダーの数と書き込みたい要素の数が合わない場合、対応する列に空白が入ってしまったり、余分な列が作られて値が入れられてしまったりということがあります。

例えば、ヘッダーが3つなのに書き込む要素が2つしかない場合、3列目のセルは空白のままになります。逆に、ヘッダーよりも多い要素をappendした場合は、余分なデータがヘッダー外の列(4列目以降など)に追加されてしまいます。作る前の確認が重要ですね。

今回もお付き合いいただき、ありがとうございました。

Pythonの自動化で業務の効率化を図りたい方は、グローバルウェイに依頼してみてはいかがでしょうか?興味がある方は以下をご覧の上、是非お問い合わせください。

Pythonによる業務の自動化ソリューション

このページではPythonを活用した業務の自動化ソリューションをご紹介します。 お客様の課題 以下のような課題をお持ちのお客様にお勧めのソリューションです。 上記の課題…

The post openpyxl:既存のExcelファイルにシートを追加して別ファイルからデータをコピペする first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
皆さんは「内向きDX」?「外向きDX」? 2025年DX動向から見る、企業DXに必要なWebアプリケーション開発とは https://gw-python.com/archives/1130 Wed, 21 Jan 2026 12:09:16 +0000 https://gw-python.com/?p=1130 ※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。 「DXに取り組んでいるのに、思うような成果が出ない」そんな悩みを抱えている企業は少なくありません。IPA(独立行政法人情報処理推進機構)が20 […]

The post 皆さんは「内向きDX」?「外向きDX」? 2025年DX動向から見る、企業DXに必要なWebアプリケーション開発とは first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる寄稿です。Pythonに関する情報をお届けします。

「DXに取り組んでいるのに、思うような成果が出ない」そんな悩みを抱えている企業は少なくありません。IPA(独立行政法人情報処理推進機構)が2025年6月に発表した「DX動向2025」(※1)というものがあります。DXに関する国内外の動向分析や比較分析が行われており、DXの現状を把握できます。

その中でも、「DXの成果」という項目ではDXの取り組みで掲げた目的がどの程度達成されているのかが示されています。これによると日本企業のDX成果率はわずか57.8%。一方、米国は87.0%、ドイツは81.7%という大きな差が浮き彫りになっています。

この格差の背景の1つには、日本企業の多くが「内向きDX」にとどまっているという現実があります。あなたの会社は社内完結の「内向きDX」でしょうか。それとも、顧客や市場を変えていく「外向きDX」のどちらでしょうか?

(※1) https://www.ipa.go.jp/digital/chousa/dx-trend/dx-trend-2025.html

「内向きDX」と「外向きDX」の決定的な違い

一口に「DX」といっても定義や捉え方は様々です。一般的には経済産業省の定義が引用されますが、要するに「デジタル技術を推進・活用することでビジネス変革を行い競争優位性を確立していくこと」と言えます。

そんなDXですが、大きく「内向きDX」と「外向きDX」と二つに分けて考えることができます。

「内向きDX」とは、主に社内業務の効率化やコスト削減を目的とした取り組みです。例えば、紙の申請書をデジタル化したり、Excelベースのデータをクラウドサービスに移行したりするケースが挙げられます。いずれも重要な取り組みですが、IPAの調査では「個別の業務プロセスの改善にとどまる、部分最適」と指摘されています。

一方、「外向きDX」は顧客価値の創出や新たな収益源の開発に焦点を当てた戦略的な取り組みです。こちらの方がDXの定義に近い姿と言えます。比較調査対象になっていた米国やドイツのDXはこの「外向きDX」に分類され、売上高や利益を上げる、市場シェア、顧客満足度の向上といったバリューアップを目的としています。

つまり、これからの日本のDXには「外向きDX」への転換が不可欠だと言えます。

「外向きDX」への転換を成功させるポイント

しかし、日本企業はどうやったら「外向きDX」に転換できるのでしょうか。ここでは、そのヒントとなる3つのポイントをお伝えします。

1つ目は、顧客起点への発想転換です。

「社内の都合」から「顧客の価値」を起点に考え、顧客が真に求めるデジタル体験をどう提供するかへ、視点を切り替えていくことが重要です。

2つ目は、いきなりではなく段階的に進めることです。

DXは、「一気に全部変える」プロジェクトにしてしまうと、多くの場合前に進みません。まずは小さな領域から始め、順番にスコープを広げていくことが大事です。

3つ目は、長期視点での技術選定です。

DXは短期で完結する取り組みではなく、長期的に変革を続けていくプロセスです。そのため、将来を見据えた技術選択や開発体制を整えておくことが重要です。「外向きDX」を支える技術としては、PythonやDjangoを用いたWebアプリケーション開発が有力な選択肢としておすすめです。汎用性が高くメンテナンス性に優れ、新しい技術も取り入れやすい言語・フレームワークであり、世界的に人気が高い点も大きなメリットと言えます。

Python / Djangoを活用した Webアプリケーション開発やDX開発は株式会社グローバルウェイ

自社で実現したいシステムや業務運用、アウトプットの姿を踏まえたうえで、どの技術を採用するかを見極めることが重要です。なかでも汎用性や拡張性、将来性を考えるとPython / Django はとても有力な選択肢の一つです。ただし、自社にとって本当に適切かどうかを社内だけで判断するのが難しい場合は、設計や開発を知見や実績がある会社に相談してみるのがいいでしょう。

株式会社グローバルウェイは、Python/Django を中心とした Webアプリケーション開発で約10年にわたり培ってきた経験と技術力をもとに、お客様の課題解決と新たな価値創出をご支援してきました。 詳細は、下記の「Webアプリケーション開発サービス」専用ページをご覧ください。サービスの特徴や具体的な事例をご紹介しています。
https://gw-python.com/service

The post 皆さんは「内向きDX」?「外向きDX」? 2025年DX動向から見る、企業DXに必要なWebアプリケーション開発とは first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
openpyxl:Excelファイルからデータを取り出して、別のExcelファイルに書き出してみよう https://gw-python.com/archives/1132 Tue, 20 Jan 2026 13:57:00 +0000 https://gw-python.com/?p=1132 ※社外のコラムニストによる記事です。Python関連の情報をお伝えします。 「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます […]

The post openpyxl:Excelファイルからデータを取り出して、別のExcelファイルに書き出してみよう first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

※社外のコラムニストによる記事です。Python関連の情報をお伝えします。

「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版)」を利用して、Pythonを使った自動化について学んでいきます。

今回は2つのExcelブックを行き来して、データをコピー&ペースト(コピペ)するというプログラムについて学びます。

条件に合うデータを取り出して、新しいExcelにデータを書き出そう

事務処理をしていると、2つのExcelを行き来して、データを持ってきて、何かしらの単純な処理をすることがあります。例えばデータをコピペしたり、参照したり…。簡単だし必要なのだけど、地味に面倒な作業です。自動化出来たら助かりますね。

今回はそうした2つのブックを行き来して、何度もコペペを繰り返すという処理をするプログラムです。

ここでは顧客情報の一覧データが保存されているExcelファイルから、指定条件「横浜」と「名古屋」にあう見込み客だけを別のファイルにコピペするという処理を例に学習します。以下はサンプルコードです。

これを実行すると、以下のExcelファイル(右/all-customer.xlsx)が生成されます。(左側は取り出し元の顧客名簿all-customer.xlsxです。)

ではここで、プログラムについて確認していきます。(1と2は割愛) 3は取り出したデータを保存する先のファイルのヘッダの設定です。

4はiter_rowsメソッドを利用して、Excelシートの行を順番に繰り返し処理してデータを取り出します。顧客名簿のExcelでは3行目以降に取得するべきデータが保存されているので、min_row=3となっています。最大行(max_row)は指定されていないので、データが入っている行まで取得されます。 ただ途中で空行があった場合、プログラムは停止してしまいます(プログラムでは先頭列が空欄だと処理が終了)。空行があっても進めたいときにはcontinueを使うこともできますが、continueにすると最後の空行の判定ができないので、Excelの終わり(104万行目)まで処理が続いてしまうことになります。なので、空行がないデータを用意するか、どうしても空行がある場合には行全体が空かどうかを判定するような条件を追加して終了判定をしてあげる必要があります。

5は横浜市か名古屋市という条件に当てはまる行かどうかを判定するのに利用されています。 Excelのインデックスは1からですが、Pythonのインデックスは0からスタートしますので、名前→0、住所→1、購入プラン→2というインデックス番号が振られます。そのため、住所を取り出すには values[1] を使い、それを area という変数に入れています。その後、変数名customersに対象となるデータを保存する役割を持つのが、[customers.append(values)]の部分で、後々新しいExcelに書き出すための準備が行われています。

6以降は新しいブックに対する処理で、7の部分で5で取り出した変数customersの値を書き込んでいく作業を行っています。

それではきりが良いのでこちらで終了です。次回はこのデータから、さらにプランごとに異なるシートに分けて保存する方法について学びます。

今回もお付き合いいただき、ありがとうございました。

Pythonの自動化で業務の効率化を図りたい方は、グローバルウェイに依頼してみてはいかがでしょうか?興味がある方は以下をご覧の上、是非お問い合わせください。

Pythonによる業務の自動化ソリューション

このページではPythonを活用した業務の自動化ソリューションをご紹介します。 お客様の課題 以下のような課題をお持ちのお客様にお勧めのソリューションです。 上記の課題…

The post openpyxl:Excelファイルからデータを取り出して、別のExcelファイルに書き出してみよう first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>
Pythonで住所APIを使用するケースのご紹介 https://gw-python.com/archives/1107 Wed, 22 Oct 2025 11:34:07 +0000 https://gw-python.com/?p=1107 皆さん、お疲れ様です。プラットフォーム事業部のNです。 業務や個人開発で「住所」を扱うケースは意外と多いかと思います。たとえば郵便番号から住所を検索したり、入力された住所を正規化して保存したり。 今回は Python を […]

The post Pythonで住所APIを使用するケースのご紹介 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>

皆さん、お疲れ様です。
プラットフォーム事業部のNです。

業務や個人開発で「住所」を扱うケースは意外と多いかと思います。
たとえば郵便番号から住所を検索したり、入力された住所を正規化して保存したり。 今回は Python を使って、住所APIを呼び出す簡単なサンプルを紹介します。
また、日本の住所の正規化といった点も少しだけお話しできたらと思いますので、
よろしくお願いします。

ご紹介するAPI

  1. 郵便番号から住所を取得(ZipCloud API)
  2. 住所から緯度経度を取得(Nominatim API)
  3. (Tips)住所正規化について

ZipCloud

ZipCloudは郵便番号から住所を取得するAPIです。
まずは、サンプルでコードを書いてみます。

## Pythonサンプルコード

```python
import requests

def get_address(zip_code: str):
    url = "https://zipcloud.ibsnet.co.jp/api/search"
    params = {"zipcode": zip_code}
    response = requests.get(url, params=params)

    if response.status_code != 200:
        raise Exception("APIリクエストに失敗しました")

    data = response.json()
    if data["results"] is None:
        return "該当する住所が見つかりませんでした"

    result = data["results"][0]
    return f"{result['address1']}{result['address2']}{result['address3']}"

if __name__ == "__main__":
    zipcode = "1000001"  # 東京都千代田区千代田
    address = get_address(zipcode)
    print(f"郵便番号 {zipcode} の住所は {address} です")

実行結果

郵便番号 1000001 の住所は 東京都千代田区千代田 です

上記のように、簡単に郵便番号から住所が特定できます。
特徴としては以下が挙げられます。
·  Python の requests モジュールを使えば、住所APIを簡単に呼び出せる。
·  郵便番号から住所を取得したいときに便利。
·  業務システムの入力チェックや自動補完にも応用できる。


Nominatim API

次にご紹介するのは住所から緯度経度を取得するNominatim APIです。
こちらも、まずはコードを書いてみます。

import requests

def get_latlon(address: str):
    url = "https://nominatim.openstreetmap.org/search"
    params = {
        "q": address,
        "format": "json",
        "limit": 1
    }
    headers = {"User-Agent": "python-sample-app"}  # 必須: API利用規約で指定あり

    response = requests.get(url, params=params, headers=headers)
    if response.status_code != 200:
        raise Exception("APIリクエストに失敗しました")

    data = response.json()
    if not data:
        return "緯度経度が見つかりませんでした"

    lat = data[0]["lat"]
    lon = data[0]["lon"]
    return (lat, lon)

if __name__ == "__main__":
    address = "東京都千代田区千代田1-1"
    latlon = get_latlon(address)
    print(f"{address} の緯度経度は {latlon} です")

実行結果:

東京都千代田区千代田1-1 の緯度経度は ('35.685175', '139.7528') です

特定の住所から緯度経度を割り出すことが出来ました。
「ZipCloud」が郵便番号から住所を特定するのに対し、「Nominatim API」は住所から緯度経度の特定になります。

「郵便番号から住所を特定することは使えるけども、緯度経度が分かっても使用用途が無いのではないか」と思われる方もいるかもしれません。
ですが、この情報は色々な場面で使用できます。

①地図上に表示できる
 Google Maps や Leaflet などの地図ライブラリにピンを立てられる。
②距離や所要時間の計算
 2地点間の距離計算や、移動経路のルート検索に利用できる。
③位置情報による検索・絞り込み
 例: 「現在地から半径 1km のレストランを探す」など、周辺検索が可能。
④データの可視化
 顧客分布や売上データを地図にプロットして、地域ごとの傾向を見える化できる。
⑤AR/IoT/位置連動サービス
 スマホアプリやIoT機器で「その場所にいると通知する」「近づくとイベントが発生する」といった機能に使える。

上記は例ですが、簡単にまとめると次のように言えます。
緯度・経度は、住所をデジタルで扱いやすい形式に変換したものです。地図表示、距離計算、周辺検索、データ分析などに幅広く活用できます!


(Tips)住所正規化について

日本の住所は「東京都千代田区丸の内1丁目1番1号」「東京都千代田区丸の内1-1-1」など、全角・半角や表記ゆれが多く、そのままでは検索やデータ分析に使いにくいことがあります。
そんなときに便利なのが、住所正規化ライブラリです。
今回は「normalize-japanese-addresses」というライブラリをご紹介します。

normalize-japanese-addressesとは?
Python でも簡単に使える住所正規化ライブラリで、都道府県・市区町村・町域などに分割してくれます。
さっそくコードを書いてみます。

from normalize_japanese_addresses import normalize

address = "東京都千代田区丸の内1-1-1"
result = normalize(address)

print(result)

実行結果:

{
    'pref': '東京都',        # 都道府県
    'city': '千代田区',      # 市区町村
    'town': '丸の内一丁目',  # 町域(丁目まで正規化)
    'addr': '1-1',           # 番地の数字部分(ハイフンで統一)
    'lat': 35.681236,        # 緯度(取得可能な場合)
    'lng': 139.767125        # 経度(取得可能な場合)
}

とてもお手軽に住所の正規化をしてくれます。
上記コードで「東京都千代田区丸の内1丁目1番1号」が入力データだったとしても同様の結果が得られます。

from normalize_japanese_addresses import normalize

address = "東京都千代田区丸の内1丁目1番1号"
result = normalize(address)

print(result)

実行結果:

{
    'pref': '東京都',        # 都道府県
    'city': '千代田区',      # 市区町村
    'town': '丸の内一丁目',  # 町域(丁目まで正規化)
    'addr': '1-1',           # 番地の数字部分(ハイフンで統一)
    'lat': 35.681236,        # 緯度(取得可能な場合)
    'lng': 139.767125        # 経度(取得可能な場合)
}

同じ住所であったとしても、日本の住所は「丁目、番地、号」といった情報で色々な書き方があるためとても管理が難しいです。
このような場面で、「normalize-japanese-addresses」といったライブラリを用いて正規化が出来るようになります。

まとめ

いかがだったでしょうか。
今回は Python を使って住所情報を扱う方法をご紹介しました。
1.郵便番号から住所を取得 → ZipCloud API で簡単に検索可能
2.住所から緯度経度を取得 → Nominatim API で地図表示や周辺検索に応用可能
3.住所の正規化 → normalize-japanese-addresses を使えば表記ゆれを統一してデータ分析や検索に便利

住所データはただの文字列に見えますが、APIや正規化を活用することで、
地図表示、距離計算、データ分析などさまざまな便利なサービスに活用できます。
Python と無料APIを使えば、ちょっとした住所関連の機能もすぐに試せますので、
ぜひご自身のサービスや開発に取り入れてみてください。

最後まで読んでいただきありがとうございました。

【公式サイト】
https://zipcloud.ibsnet.co.jp/doc/api
https://nominatim.org/release-docs/latest/api/Overview
https://github.com/geolonia/normalize-japanese-addresses

The post Pythonで住所APIを使用するケースのご紹介 first appeared on 株式会社グローバルウェイ ビジネスアプリケーション事業本部.

]]>