【OSS公開】JSのExcel風テーブルライブラリ「vanillajs-excelike-table」バージョンアップのお知らせ

今回の記事は JavaScriptエンジニア向け です。

私たちは、業務アプリケーションに必須となる「Excel風の高機能テーブルライブラリ」をOSSとして公開しています。
AIとバイブコーディングを活用することで、開発期間を大幅に短縮できました。

その恩恵を自社だけで囲うのではなく、利用者や社会全体の開発効率化に貢献するため、引き続き無料のOSSとして公開します。


今回の大きな改修点:条件付き書式に対応

今回のバージョンアップでは、条件付き書式 機能を追加しました。

これにより、例えば次のような実装が可能になります:

  • JS無料ライブラリではあまりない、基本的な条件付き書式機能を標準装備
  • 対象セルと行全体の適用範囲選択
  • 優先順位を書式設定一覧画面で調整

Excelライクな操作感を保ちながら、フロントエンドでのデータ可視化をさらに強化できます。

下のサンプルテーブルの右上歯車アイコンの設定から条件付き書式で操作可能です。


フレームワーク非依存、純粋なVanillaJS

このライブラリは VanillaJSで記述 されており、React / Vue / Angular などのフレームワークに依存しません。

つまり、

  • 純粋なJavaScript環境
  • 既存のフレームワークに組み込み
  • シンプルなWebページへの導入

どのケースでも利用可能です。

よく使う基本機能でフィルタやソート機能の充実した無料のJSライブラリがないことから作成しています。
DB連携やセル内編集、より高度な書式設定等は適宜実装なさってください。

npmで公開中ですので、外部依存を減らしたり、自分のテーマやプラグインにバンドルして使うならnpmからDLしてご使用ください。

https://www.npmjs.com/package/vanillajs-excelike-table

ExcelikeTable を JavaScript プロジェクトに導入する簡単手順

CDNからの読み込なら、インストールもなく下の記述だけで簡単に実装できます。

<!--テーブルを表示するコンテナ -->
<div id="excelike-table-container" style="height: 600px; margin: 20px 0;"></div>

<!--ライブラリのCSSを読み込み -->
<link rel="stylesheet" href="https://unpkg.com/vanillajs-excelike-table@1.5.3/dist/excelike-table.min.css">

<!-- ▼ ライブラリ本体のJSを読み込み -->
<script src="https://unpkg.com/vanillajs-excelike-table@1.5.3/dist/excelike-table.min.js"></script>

<script>
// ▼ ダミーの営業データを120件自動生成 データがある場合はこの部分は不要です。
document.addEventListener('DOMContentLoaded', function() {
  
  const sampleData = [];
  const staffList = ["佐藤","鈴木","高橋","田中","伊藤","渡辺","山本"];
  const customerList = ["株式会社A","株式会社B","株式会社C","株式会社D","株式会社E"];
  const productList = ["ノートPC","タブレット","モニター","プリンタ","スマホ"];

  for(let i=1; i<=120; i++){
    const staff = staffList[Math.floor(Math.random()*staffList.length)];
    const customer = customerList[Math.floor(Math.random()*customerList.length)];
    const product = productList[Math.floor(Math.random()*productList.length)];
    const qty = Math.floor(Math.random()*20)+1; // 1〜20個
    const price = Math.floor(Math.random()*50000)+10000; // 1万〜6万円
    const date = new Date();
    date.setDate(date.getDate()-Math.floor(Math.random()*60)); // 過去60日以内
    const formattedDate = date.toISOString().split("T")[0];

    sampleData.push({
      id: i,
      staff,
      customer,
      product,
      quantity: qty,
      unitPrice: price,
      total: qty*price,
      date: formattedDate
    });
  }
  //ここまではダミーデータ生成部分です

  // ▼ カラム定義(列の表示内容と機能設定)
  const columns = [
    ColumnHelpers.number('id', 'ID', { width:60, sortable:true, filterable:true }),
    ColumnHelpers.text('staff', '担当者', { width:120, sortable:true, filterable:true }),
    ColumnHelpers.text('customer', '顧客名', { width:120, sortable:true, filterable:true }),
    ColumnHelpers.text('product', '商品', { width:120, sortable:true, filterable:true }),
    ColumnHelpers.number('quantity', '数量', { width:80, sortable:true, filterable:true }),
    ColumnHelpers.number('unitPrice', '単価', { width:100, sortable:true, filterable:true, currency:'¥' }),
    ColumnHelpers.number('total', '売上合計', { width:120, sortable:true, filterable:true }),
    ColumnHelpers.date('date', '成約日', { width:120, sortable:true, filterable:true, filterType:'date-hierarchy' })
  ];

  // ▼ テーブルの初期化処理
  try {
    new ExceLikeTable('#excelike-table-container', {
      preset: 'excel',  // Excelライクな見た目・操作性
      data: sampleData, // データをバインド
      columns: columns, // カラム設定
      rowKey: 'id',     // 行識別キー

      // ▼ ページネーション設定
      pagination:{
        pageSize: 20,                      // 1ページの件数
        showSizeChanger: true,             // 件数変更ドロップダウンを表示
        pageSizeOptions: [10,20,50]        // 選択可能な件数
      },

      // ▼ 利用可能な機能のリスト
      features:[
        'sorting',           // 並び替え
        'filtering',         // フィルタリング
        'pagination',        // ページ分割
        'columnResizing',    // 列幅の変更
        'columnPinning',     // 列の固定
        'columnSettings',    // 設定ボタンを表示(右上ギアアイコン)
        'persistSettings'    // 設定を保存(リロードしても維持)
      ]
    });
  } catch(e){
    console.error('テーブル初期化失敗', e);
  }
});
</script>

OSS公開の背景

AIとバイブコーディングによって、私たちの開発サイクルはこれまでにないスピードに到達しました。
こうした開発資産を自社だけに閉じるのではなく、OSSとして公開することで:

  • 利用者の開発期間短縮
  • 低コスト開発の実現
  • 各社のDX推進への加速

に貢献できると考えています。


DX推進・業務アプリ開発をお考えの方へ

「vanillajs-excelike-table」を活用すれば、
短期間・ローコストでのシステム開発が可能になります。

もし、業務に即したカスタマイズやDX推進のご相談があれば、ぜひお気軽にお問い合わせください。
私たちは、OSS公開と併せて、実プロジェクトでのDX化を伴走するパートナーとしてもお手伝いします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA