ニッチな社内ツール、どう作る?
社内やチーム内でのみ行うニッチな作業を自動化したいという要望はないでしょうか?最近では様々なサービスがあり、各作業に特化したものもありますが、どうしてもやりたいことと完全にマッチしない場合があります。
そのような汎用サービスが提供していないことを効率的に行う方法として、社内ツールを作ってしまうという手があります。本記事では社内ツールを作るときに考えられる選択肢をいくつか紹介します。
前提
社内でのみ使うツールの開発が対象であり、想定使用ユーザーは社内のメンバーのみ(非エンジニアも含む)とします。よって、コマンドラインのツールではなくGUIを用意したいです。
以下の観点で評価していきます。
作りやすさ
配布や更新の手軽さ
できることの多さ
ノーコード・ローコードツールを使う
コードをできるだけ書かずにアプリを作ることができるノーコード・ローコードツールが近年普及しています。DXの文脈でよく出てくるワードですが、社内ツールの作成を主眼において提供されているという印象が強いです。
もともとチームでの共有を前提に作られているため、配布や更新はやりやすいですが、コードを書く場合と比べてやはり小回りは効かない場合が多いです。
具体的には以下のようなサービスがあります。
社内の資源がエクセル、Googleスプレッドシートなどで管理されている場合、それらをもとにアプリを作ることができます。そのような「社内の既存資源との連携」がハマればとても良いのもになるでしょう。AppSheetはGoogle Workspaceの「Enterprise Plus」プランに、Microsoft Power AppsはOffice 365の「E1」プランなどに含まれまれるため、Google WorkspaceやMicrosoft Officeの資源との連携ではこれらのツールを手軽に使い始めることができます。
また、モバイル端末への配布機能を持っているものも多いため、モバイル端末からツールを利用する場合は選択肢に入れるとよいでしょう。
Webアプリにして公開する
コードが書ける場合は、コードを書いてツールを作ってしまうという選択肢もあります。Webアプリの作成に慣れていれば、社内のサーバーでWebアプリを公開してメンバーに使ってもらうことができます。
Webアプリにするメリットは、社内LANからのみアクセスできる社内サーバーさえあれば配布や更新が楽であり、サーバー上で動作するWebアプリから社内の資源や別アプリのAPIにアクセスが可能という点です。
逆に、社内サーバーがない場合は一般公開することになるため、セキュリティを気にした運用にする必要があります。
デスクトップアプリを作る
デスクトップアプリにするメリットは、なんといってもOSの機能をフルに使えるため痒い所に手が届くことです。ローコードツールであればアプリ作成ツールの機能、Webアプリであればブラウザの機能によって制限がかかりますが、デスクトップアプリにすればそういった制限に困らされることがありません。
PCのストレージ上のファイルの操作はもちろん、画面のキャプチャ、他のアプリとの連携、クリップボードへのアクセスなどが可能です。
しかし、何でもできるからこそ複雑になりがちなのがデメリットです。やろうと思えばどんどん複雑にできてしまうため、極力アプリの機能はシンプルに保ちましょう。また、アプリを更新する場合は各ユーザーの手元にある実行ファイルを更新する必要があるため、更新のための仕組み作りも必要です。
デスクトップアプリ作成のためのライブラリは膨大に存在しますが、以下にいくつか紹介します。
OS: Windows/macOS/Linux
言語: C++
OS: Windows/macOS/Linux
言語: Python
※PySideはライブラリ(Pythonモジュール)の名前です。PyQtという似た名前ではぼ同じ機能のモジュールも存在しますが、公式に提供されているのはPySideの方になります。
OS: Windows/macOS/Linux
言語: HTML+CSS+JavaScript
WPF (Windows Presentation Foundation) または Windows Forms
OS: Windows
言語: C#
※手軽にexe化して配布するイメージのため、UWPをあえて省きました。
それぞれ特徴が違い、語り出すと1記事では収まりませんが、社内ツール作成という観点でおすすめを一つに絞るならQt for Pythonです。PythonでUIとロジックの両方をシンプルに記述でき、かつ、強力なデスクトップアプリ開発ライブラリであるQtの機能を利用できるため「手軽に小回りの利くツールを作る」という目的に適していると考えます。
社内のデータで機械学習を行う企業も多くなってきたと思いますが、学習データのアノテーションツールなどはQt for Python(またはPyQt)で作られているのをよく見かけます。
以上です!作りたいツールによって様々な選択肢があるため、選ぶ際の参考になればと思います。また「いや、私はこう作る!」というのがあればコメントを頂ければと思います!!
お問い合わせはこちら✨
社内ツール提案・作成・サポートをはじめ、情シスに関するお悩みの相談も承っております。少しでも興味をお持ちいただいた方は下記からお気軽にご連絡ください!
https://jousys-force.deepapex.com
積極採用中🙌🏻
また、情シスを一緒にサポートしてくれる方を募集しています!!! 興味のある方は以下のページから