開発 2026.02.20

FAXはなくならない——
ブラウザだけで送れる
FAX送信サービスを作った話

はじめに

仕事の中で、たまにFAXで資料を送るよう求められることがある。

そのたびにコンビニへ行くか、既存のアプリを使うかで対応していたが、どれも使い勝手が悪かった。「もっとシンプルに送れないか」とずっと思っていた。

ある時、中小企業の社長が「FAXを確認するためだけに会社へ行っている」という話を聞いた。FAXさえWebで扱えれば、わざわざ出社する必要がなくなる。それは小さいようで、働き方に直結する課題だと感じた。

FAXは古い技術に見られがちだが、業種によっては今後もなくならないインフラだと思っている。むしろそこをWebと繋ぐことが、中小企業のDX推進の入り口になると考え、技術的な興味と学習を兼ねて開発をスタートした。


サービスの概要

PDFをアップロードして、送信先のFAX番号を指定するだけで送信できるWebサービス。

デモを見る →

データの流れ

このサービスがどう動いているか、流れを整理するとこうなる。

① ユーザーがPDFをアップロード・FAX番号を入力して送信ボタンを押す
       ↓
② サーバー(Express)がPDFを受け取り、/pdfsフォルダに保存する
       ↓
③ 保存したPDFの公開URL(Render上のURL)を動的に生成する
       ↓
④ Telnyx APIに「この番号へ、このURLのPDFをFAX送信して」とリクエストを送る
       ↓
⑤ TelnyxがそのURLにアクセスしてPDFを取得し、FAX回線へ送信する
       ↓
⑥ 送信結果(ID・ステータス)をhistory.jsonに保存し、画面に返す

ポイントはステップ③④で、TelnyxはPDFファイルを直接受け取るのではなく、PDFが置いてある公開URLを指定する仕組みになっている。そのため、RenderのサーバーにPDFを置いて外部から取得できる状態にしておく必要があった。

// Render上の公開URLを環境変数から動的に取得
const baseUrl = process.env.RENDER_EXTERNAL_URL || `http://localhost:${PORT}`;
const media_url = `${baseUrl}/pdfs/${req.file.filename}`;

// TelnyxにURLを渡してFAX送信を依頼
const fax = await telnyx.faxes.create({
  connection_id: process.env.TELNYX_CONNECTION_ID,
  to,
  from: process.env.TELNYX_PHONE_NUMBER,
  media_url: media_url,
  quality: "high",
});

TwilioからTelnyxへ——苦労した点

当初はTwilio(有名なAPI通信サービス)でFAX送信を実装しようとしていた。しかしTwilioはFAXサービスをすでに終了していた。

代替サービスをいくつか調査した結果、TelnyxがFAX送信に対応しており、ドキュメントも整っていると判断して採用した。同じように「TwilioでFAXをやりたかったけどできない」と困っている人は、Telnyxを試してみると良いと思う。


使用技術

技術 用途
Node.js / Express サーバーサイド
multer PDFファイルのアップロード処理
Telnyx API FAX送信
express-session ログイン認証・セッション管理
Render クラウドホスティング・公開

おわりに

作ってみて改めて思ったのは、FAXという枯れた技術でも、Webと繋ぐことで十分に現役になれるということだ。

「古いから使えない」ではなく、「どう繋ぐか」を考えることが、中小企業のデジタル化において大事なことだと感じている。このサービスが、出社しなくてもFAXを扱える仕組みの一例になれば良いと思っている。

← ブログ一覧へ戻る