0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

非IT製造業のホムペ運用を「PDFとスプレッドシート」で自動化した話 ~XREAサーバーの罠と、1人部署のDX奮闘記~

0
Posted at
  1. はじめに:若手の努力の結晶(HTML)を守りたい
    はじめまして。関東地方の老舗金属加工メーカーで、1人部署の生産管理を担当しています。この春に派遣から正社員になり、QC検定3級も取得して意気込んでいるところですが、社内にはIT専任の担当者がいません。
    本来、システムの運用などは総務部の管轄なのですが、ITの知識不足ゆえに、少し知識がある私へたまに「お鉢が回ってくる」という立ち位置で働いています。

事の発端は、営業部長の主導で「高卒向けの求人ページ作成」を皮切りに、自社ホームページをリニューアルするプロジェクトが立ち上がったことでした。
優秀な若手社員が、一生懸命に現代的で綺麗なホームページ(HTML/CSS)を作り上げてくれたのですが、総務部だけでは技術的なフォローやインフラ周りの対応が難しかったため、いつものごとく私にお鉢が回り、若手のフォロー役として参画することになりました。

そこで「運用どうするの問題」が勃発します。
ニュース更新を担当する社員は、WordをPDFにすることはできても、HTMLを直接編集することはできません。タグを一つ消せば、若手が作ってくれた美しいレイアウトが崩壊してしまいます。

そこで、「担当者はPDFを上げてスプレッドシートに記入するだけ」という、生産管理の視点で極限までポカヨケ(エラー防止)を徹底した自動更新システムを構築しました。

  1. システムの全体像(超ローテク・ハイリターン)
    構成は非常にシンプルです。

運用担当者の作業

作成したニュースのPDFを、サーバーの所定フォルダにアップロード。

Googleスプレッドシートを開き、新しい行に「日付」「カテゴリ(プルダウン選択)」「URL」を入力する。

※URLは「上の行をコピペして、末尾のPDFファイル名だけ書き換える」運用ルールにし、入力ミスを防止。

バックエンド(GAS)

スプレッドシートのデータをGoogle Apps Script(GAS)でJSON形式の簡易APIとして出力。

フロントエンド(JavaScript)

若手が作ったHTML側でJavaScript(Fetch API)を動かし、GASからデータを非同期で取得して一覧を自動生成。

▼GAS側のサンプルコード(概要)

JavaScript
function doGet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  let newsList = [];
  // 1行目(ヘッダー)を飛ばして2行目からループ
  for (let i = 1; i < data.length; i++) {
    newsList.push({
      date: data[i][0],      // 日付
      category: data[i][1],  // カテゴリ
      url: data[i][2]        // PDFのURL
    });
  }
  
  return ContentService.createTextOutput(JSON.stringify(newsList))
    .setMimeType(ContentService.MimeType.JSON);
}

▼HTML側の読み込み処理(概要)

JavaScript
const gasUrl = "デプロイしたGASのURL";

fetch(gasUrl)
  .then(response => response.json())
  .then(data => {
    const listElement = document.getElementById('news-list');
    data.forEach(item => {
      listElement.innerHTML += `<li><span class="date">${item.date}</span><span class="category">${item.category}</span><a href="${item.url}" target="_blank">PDFを開く</a></li>`;
    });
  });
  1. 最大の壁:XREAサーバーの罠と、深夜のチャットサポート
    システム自体はすんなり出来たのですが、最大の障壁は今回利用したサーバー(XREA)の「常時SSL化(https)」設定でした。

コントロールパネルの「無料SSL」のラジオボタンを押しても一向に反映されません。
設定画面を彷徨った結果、XREA特有の「メインドメインとサブドメインの仕様」にぶち当たりました。「先にサブドメインに『同期化設定』を入れてからでないと、SSLのラジオボタンが機能しない」という初見殺しのトラップだったのです。

自力で解決する前に公式のチャットサポートにも問い合わせていたのですが、実際のレスポンスはメール並みのスピード。ようやく返ってきたと思ったら、見事なまでの定型文でした。文章の語尾が「〜設定が必要で」など、明らかに途中でぶった切れているコピペ返信を見たとき、「あ、これは現場の人間(自分)が汗をかいてなんとかするしかないやつだ」と腹を括ったのも、今となっては良い思い出です。

  1. 応用編:生産管理の基本「水平展開(ヨコテン)」
    生産管理や品質管理の世界には「水平展開(通称:ヨコテン)」という言葉があります。今回構築した「スプレッドシート × GAS」のアーキテクチャは非常に汎用性が高く、現在、社内の他の課題解決にもこの仕組みをヨコテンしています。

① 新人向け安全教育アプリ(〇×ゲーム)
うちの部署の部長が社内の「安全担当トップ」でもあるため、今期の改善活動のテーマとしてプロトタイプを開発し、係長まで報告を通しました。
社員番号・氏名・部署をプルダウンで選び、10問の〇×クイズに回答。回答後にJavaScriptで5項目のレーダーチャートを表示し、自身の弱点を可視化します。同時に、回答日時と結果がGAS経由でスプレッドシートに蓄積されます。

② 現場の出来高(日報)吸い上げシステム
自分自身の業務を簡略化するため、現場の作業実績を直接吸い上げる仕組みも構築中です。ライン作業には対応できそうですが、製造業特有の「小ロット(多品種少量)」になると途端に入力UIが使いづらくなるため、現場がストレスなく入力できる画面を絶賛改善中です。

  1. おわりに:技術は「共に働く仲間」のために
    ついでに若手が作ってくれた問い合わせフォームのHTMLもPHPに改造し、総務の運用担当者のメールアドレスに直接届くように設定して、新ホームページは無事に稼働を開始しました。

営業部長の号令で始まり、若手社員の頑張りで作られた今回のリニューアル。私はお鉢が回ってきてその裏側を少し手伝ったに過ぎません。まだシステムを完全に総務部へ引き継げたわけではなく、運用に乗せている過渡期であり、今後も1人部署からのサポートは続いていくでしょう。

高度なアーキテクチャを導入するのではなく、「現場のITリテラシーに合わせて、一番壊れにくい仕組みをそっと提供する」こと。まだまだ手探りですが、これこそが非IT企業における身の丈に合ったDXへの第一歩ではないかと、生産管理マンは思うのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?