見出し画像

[エンジニア向け記事] Djangoの勧め

こんにちは!
メディフォンのCTO(技術責任者)の田畑です。

メディフォンでは事業の一つとして企業内の健康管理業務をサポートするウェブサービス(SaaS)であるmediment(メディメント)の開発と運営を行なっています。

medimentのサーバー側の実装にはPythonで利用できるウェブ開発フレームワークのDjangoを使っているのですが、この記事ではDjangoを採用して良かった点をいくつか紹介します。

Djangoの勧めというよりはPythonを推す理由も多いですが、技術選択や仕事探しの参考にしていただければと思います。
また、本記事ではDjangoを勧めていますが、メディフォンのもう一つの事業である医療通訳の事業ではGo言語でサーバーを作っていますし、フロントエンドはTypeScript/JavaScript、スマホアプリはSwiftやKotlinといった言語を使っており、開発の内容やチームの構成によって適切な選択を行なうのは大事だと考えています。

公式のSDKやライブラリが充実している

例えば、最近注目を集めているChatGPT(OpenAI社)の機能を組み込んで使おうとした場合、公式のライブラリのページ https://platform.openai.com/docs/libraries から自分が選択した言語に対応したものを選んで設定するのですが、これを執筆した時点ではPythonとTypeScriptが提供されています。(Azure経由だと .NET, Java, JavaScript, Goも追加)
ここにはその他の言語向けのライブラリも「Community Libraries」として掲載されていますが、本家のものと比べて新機能への追随やバグへの対応、開発の継続性といったリスクをかかえてしまいます。
別の例として、B2Bのシステムを開発する場合は顧客の利用する認証基盤との連携が重要になりますが、Entra ID(Microsoft社。旧Azure AD)用に提供されているライブラリMSAL(https://learn.microsoft.com/ja-jp/entra/identity-platform/msal-overview)やOkta(Okta社)のSDK(https://developer.okta.com/code/)の対応言語に入っているので一安心です。
また、B2Bのサービスにありがちですが、ExcelやCSV、PDF、XMLなど様々なファイルを受け取ったり生成することが多いのですが、Pythonで使えるライブラリの完成度と多様さは非常に安心できるものです。
これらの例は現在存在するサービスやAPIについてですが、近い将来に登場するであろうクールな技術やプラットフォーマーの技術に簡単にアクセスできると考えられる点は大きなメリットと考えられます。
公式のライブラリがない場合には非公式のもの(場合によっては内製)を使う他、サポート対象の技術スタックでマイクロサービスを作るといった手段も考えられますがいずれにしても将来にわたってメンテナンスの負荷が心配になります。

Rails使いの方にも参画してもらえる

ウェブサービスをゼロから開発してビジネス的に成立するところまで成長させるにはチームの立ち上げが非常に重要ですが、会社が有名になってないうちは幅広い候補者が応募可能と考えて頂けるような技術を選択することが一つの戦略となります。
DjangoはRails(Ruby on Rails)との共通点が非常に大きいため、medimentのチームにもRailsを使ったり学んだ方にも参画して頂き、特に言語の切り替えで苦労することなくチームの一員として活躍して頂いています。
ウェブエンジニア以外の経験がメインである応募者の方(例えばSIerでの経験のある方)もPythonは多少は触れていることが多いため、仕事の想像が付きやすい様子でした。
今の日本の転職・就職市場ではRailsを利用する開発者は多い一方でPython使いのウェブエンジニアは希少なのですが、採用活動の進め方によっては、幅広い範囲から応募して頂きつつこの記事に挙げた他のメリットも得ることができるようです。

ウェブアプリ開発業界以外ともつながっている

ソフトウェア開発の業界でウェブアプリ開発の存在感は非常に大きいものですが、ウェブアプリ開発であってもウェブエンジニア以外も使っている技術を採用することで、他の業界の文化やノウハウやコードを取り込んだりすることができます。
Pythonを使う業界としてはディープラーニング関連が有名ですが、医療データの分析にもPythonは多用されています。
例えばウェブエンジニアではなく、データサイエンティストのメンバーが書いたコードをimportして使ったり、場合によってはデータサイエンティストの方もウェブエンジニアのアドバイスを得つつ無理のない範囲でウェブアプリの画面に自分の成果を扱う機能を実装したりといったことができます。
その他にウェブ業界から遠い業界の例として、ロボット業界で広く使われているROS (https://wiki.ros.org/)という共通基盤がありますが、現時点ではC++に並んでPythonが広く使われています。あるいは、バイオインフォマティクスの世界ではBiopython(https://biopython.org/)等のツールで遺伝子のシーケンスを扱うことが幅広く行なわれています。


最後に

Pythonを用いたウェブ開発について語られることが意外と少ないと思ったのでこの記事を書いてみました。
Pythonを用いたウェブ開発のフレームワークとしてはDjangoが一番有名なようですが、FlaskやFastAPIといったフレームワークも人気があるようですので、技術選択の際には眺めてみてください。
お仕事をお探しの方は宜しければ弊社の募集も眺めて頂いてご検討くだされば幸いです。

メディフォン株式会社 エンジニア募集要項
エンジニア募集要項|メディフォン株式会社 (mediphone.jp)


この記事が気に入ったらサポートをしてみませんか?