バスマップ制作で使える！Illustrator自作スクリプト紹介


バスマップAdventCalendar2日目の記事です🎉

- [バスマップAdventCalendar](https://adventar.org/calendars/5075)
    - まだ参加者募集しており、空き多数です。
    - バスマップに関係ない人でも大歓迎です！


# はじめに
こんにちは。ことづです。

今回のバスマップAdventCalendarでは、技術系の記事と、スクリプトの記事で参加します。
技術系の記事は間に合わなかったので……今日は、以下の自作スクリプトを紹介します👍

1. [illustrator-to-MapTiles](https://github.com/kotodu/illustrator-to-MapTiles)
2. [illustrator-Line-Offset](https://github.com/kotodu/illustrator-Line-Offset)
3. [illustrator-Path-Join(開発中)](https://github.com/kotodu/illustrator-Path-Join)

# (1) illustrator-to-MapTiles
## 制作背景

昨今の自作バスマップ界隈の大きな転換の1つに挙がるのが、
にしさんによる[シームレス路線図](https://westantenna.com/maps/)です。

GoogleMapなどのように、
バスマップを地図上に載せて自由に動かせるようにし、
縮尺によってデザインを変えるというもの。

シームレス路線図インスパイアなバスマップも増えつつあります(ことづ調べ)。

かくいう自分もその1人で、[自分も作ってみた](https://kotodu.io/ttrmap/)のですが、
制作時に最も困ったのは、実は完成したバスマップ地図タイルの出力でした。

GoogleMapなど、ベクターデータでプログラミング的に見せ方を変えていますが、
シームレス路線図では、ラスターデータ(png画像)で行っています。
その際、illustratorで作成したバスマップを、タイルデータとして多様なサイズを数千個も、
バージョンを差し替えるたびに用意する必要があり、かなり手間でした😔

そこで、illustratorスクリプトで作って楽をしよう！と制作したのが、illustrator-to-MapTilesでした。

- ↓設定項目イメージ

![設定項目](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/2ade5eed-4342-e135-f1ec-e68ef72975a8.png)


## 特徴
1. illustratorから、ZXY方式の地図タイル画像を直接出力できる
2. 適切なフォルダに分けて出力される
3. 出力タイルサイズは256px以外にも対応可能
4. 背景の透過ON/OFFも設定可能

- ↓フォルダ分け機能
![フォルダ分け機能](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/6c6d1a7f-3aa2-864f-3e7c-040e4e24a027.png)

- ↓実際のタイル
![出力タイル例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/c2fbf4a2-42d4-3d71-422e-70ebec6b8dd7.png)

## 今後の展開
このスクリプトは、バスマップを作る際にヘビーユースしていますが、今後の展開をあまり考えていません。
というのも、実はillustratorの仕様上、処理の高速化を望めないのです😔

もし要望があれば、Webアプリとして新たに何か作るかも……？

## リンク
- [illustrator-to-MapTiles](https://github.com/kotodu/illustrator-to-MapTiles)

# (2) illustrator-Line-Offset
## 概要
パスを複数本一気にオフセットする

## 制作背景
illustratorでバスマップを作る際、必ず問題になるのがオフセット。
illustratorは高機能なデザインソフトで、毎年のようにバージョンアップもあるのですが、
オフセットだけは未だに貧弱のまま変わりません。
線は2本ずつオフセットされ、端に余計な線も含まれてしまいます。毎回消すのも面倒です。

そこで、オフセットの拡張機能を作ってしまおう、と開発したのが、illustrator-Line-Offsetになります。

- ↓公式機能を使ったオフセット、端に余分な線が😔
![公式機能が使いにくい](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/2f330411-2a6e-a077-0b39-8f867990d2f8.png)

- ↓illustrator-Line-Offsetなら複数本一気に💪
![拡張機能を使うとスムースに](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/3998dacf-f63c-7828-f7fc-cce01304328a.png)


## 今後の展開
不均等にオフセットしたり、セーブしていない場合に実行しない今の挙動を改善するなど、機能の強化や改良を考えています。

道路中心線があれば、それをillustrator-Line-Offsetでオフセットし、
あとはillustratorにある「連結ツール」で地道に繋げば、それっぽいバスマップが短時間で完成できます。
これは相当便利なはずなので、バスマップ向けというより汎用的に開発したいです。
ぜひ活用して頂けると、モチベーションも上がります。

## リンク
- [illustrator-Line-Offset](https://github.com/kotodu/illustrator-Line-Offset)

# (3) illustrator-Path-Join(開発中)
## 概要
接しているかに関わらずパスを延長し、結合する

離れている線も……
![20201202ILO-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/2bc9e8e3-8a0b-4d15-fd14-371b39438123.png)

ボタン1つで結合
![20201202ILO-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/d86df715-6a24-a136-9950-72bec1e821a0.png)

## 制作背景
オフセットした線と線をつなぐのは、illustratorにある「連結ツール」が便利なのですが、
線と線がそもそも接していないと、連結判定が出ない/出にくい/誤判定されるといった悩みがあります。

そこで、結合する線同士を選択すれば、ボタン1つで結合する拡張機能を作ってしまおう、と今開発しています。

機能はシンプルながら、これと同等の作業を手作業で大量にこなすのは非常に大変です😔
拡張機能として提供すれば、作業時間が効率化されるはず……！

現在は、交点を算出し、そこまで既存の線を伸ばす、といったあたりまで出来ていますが、
「既存の線を交点に近い端点から伸ばす」といった処理が未実装で、拡張機能としてまだ提供できませんが、
この便利ツールは早めに出したいです💪

## リンク
- [illustrator-Path-Join(開発中)](https://github.com/kotodu/illustrator-Path-Join)

# おわりに
ここまでざっくりではありますが、スクリプトを紹介させていただきました。
ぜひ活用して頂けると、嬉しいです😊

要望などあれば、GitHubのissueや、Twitter、Qiitaなどでぜひお知らせください！