みつのーと

頑張ってます・・・

SublimeText3用のかな/カナ変換するプラグイン書いた

たまたま平仮名と片仮名を色々とごにょごにょする必要があったのと、Sublimeをここ数年ずっと使ってる割にプラグインを一つも書いたことないなーっていうのがあったので、今更ながらプラグインを書いてみた。

KanaKana

かな/カナの変換するのでKanaKanaという名前にした。 かな/カナ変換に作業効率を落としてる稀有な方がいれば、パッケージコントロールを開いてKanaKanaと入力するとインストールできる。

プラグインのソースはここにある。

プラグインの作成

SublimeTextのプラグインは、手軽に作り始める事ができる仕組みが整っているので、取っ掛かりやすかった。 以下の記事を参考にさせて頂きました。

あとは公式のドキュメント見て使えそうな機能探す感じで作っていった。

プラグイン自体は平仮名と片仮名を変換するだけなので、作ろうと思い立って調べ始めてから大体完成ってところまで、1時間も掛からないくらいだった。 それぐらいお手軽だった。

ただ言語がPythonなので、(AtomやVSCodeのプラグインがJSで書けるのを考えると)そこはちょっと人選ぶのかもなーという感じがした。 Pythonに慣れてれば癖がなくてとっても良い感じ。

注意点としては、ST2のプラグインはpython2系で書く必要があるので、Sublime Textの2と3に対応したい!ってなると、Pythonのソースも2と3に対応して書かなきゃならないので、色々厳しそう。 今回は面倒だし、そもそもST2なんてもう使ってないので、ST3のみの対応にした。

プラグインの配布

SublimeTextのプラグインは「Command PaletteからPackage Controlを使ってインストール」という手順が主流だと思う。 作った時は配布まで考えて無かったんだけど、せっかくだし配布したいなーと思ってきたので、配布までやってみた。

Package Cntrolのサイトのドキュメントの、パッケージについて書かれてるページを参考に作業した。

GitHubを使うことで、配布もお手軽に出来た。

ざっくり手順を並べるとこんな感じになる。

  1. 既に似たようなのが無いか検索して確認
  2. プラグインのパッケージ名に気をつけてプラグインを作成
  3. GitHubに公開する
  4. 最新バージョンのコミットに、SemVerに則ったバージョン番号のタグ付けをする
  5. Package Control Channelをフォークする
  6. repositoryディレクトリに、0-9.json[a-z].jsonがあるので、自分の作成したプラグインの先頭文字に対応するjsonに、パッケージ情報を追加する
  7. SublimeTextのPackageControlからChannelRepositoryToolsをインストールする
  8. コマンドパレットからChannelRepositoryTools: Test Default Channel commandを実行し、テストにパスすることを確認する
  9. 変更をコミットしプルリクを投げる(プルリクは投げっぱなしで大丈夫っぽい。僕はDescriptionもタグ付けもしなかった)
  10. 問題が無ければマージされ、公開される

注意点もいくつか(全部先のページに書いてあることだけど)。

  • パッケージ名には"sublime"っていうワードは使えない
  • リポジトリ.pycファイルは含めない
  • パッケージ情報にversion,url,dateのサブフィールドを含めない

ちなみにパッケージ情報はこんな感じで追記した。

{
    "name": "KanaKana",
    "details": "https://github.com/mitsu-ksgr/KanaKana",
    "labels": ["japanese", "text manipulation"],
    "releases": [
        {
            "sublime_text": ">=3000",
            "tags": true
        }
    ]
}

ラベルは他のプラグインを参考にして適当に決めた。

プルリクを送ってからマージされるまで、6時間くらいしか掛からなかった。結構頻繁にチェックしてるみたい。


ポストする時気付いたけど、前回ブログ書いたのが丁度1年前だった。 「これブログに書こうかな」なんて思う事はよくあるんだけど、生来の筆不精がたたってか、結局今日まで何も更新してなかったみたい。

最近は色々追い詰められてて、今回のプラグインも現実逃避の一環として書いてる節が多少あるので、次は余裕のある事してブログ書きたい。

Goの関数オブジェクトで再帰呼び出しする

型宣言付きで関数オブジェクトの変数を前方宣言しておけば再帰呼び出しが出来る

package main

import "fmt"

func main() {
    var factorial func(n int) int
    factorial = func(n int) int {
        if n == 1 {
            return 1
        }
        return n * factorial(n-1)
    }

    fmt.Println(factorial(5))
}

Go、基本的に良い感じだけど、三項演算子無かったり定数配列宣言出来なかったり、ちょこちょこ鬱陶しい感じもしなくもない

おわり(*・ω・)ノシ

BitSummit 2015に行ってきた

京都で開催された BitSummit 2015 に行ってきた。 f:id:mitsu-ksgr:20150713200516j:plain

BitSummitは7/11, 7/12の2日間に渡って開催されてたんだけど、僕が行ったのは7/11の方だけ。

「インディーゲームの祭典」というだけあり、ゲームを紹介している人が実際の開発者だったりして、そういった方々と直接話せるのが凄く楽しかった。 開発者の方と話せたいくつかの作品について、個人的な記録として感想諸々を書いておこうと思う。

(イベントを楽しみすぎて、ブースの写真は全く撮ってない。ゲーム/開発者のページへリンクを張るので、ゲームの雰囲気はそっちで掴んで欲しい。)

DARUMA SOUL by Tengu Boys

f:id:mitsu-ksgr:20150713203317j:plain

vimeo紹介動画

Daruma Soul Trailer3 from Tengu Boys on Vimeo.

基本は縦スクロールのシューティングゲーム。 横フリックで敵弾を弾きながら進み、縦フリックで突進攻撃が出来る。

アニメーションに力を入れているらしく、実際キャラクターのドットアニメが凄く良く出来ていて、プレイしていて楽しかった。 エフェクト等の演出も派手さがあり、ボスを倒した時なんかも小気味良くて「もう一回プレイしたい!」ってなる。 また、ステージ中だけでなく、ステージを選択するワールド画面も作り込まれていて、それを見ているだけでも楽しい気分になる。

反面、フリック操作の反応が遅く、狙った通りにアクションが出来なくてストレスを感じた。 これに関してはアンケートに意見を書かせて頂いたので、調整されると嬉しい。 2015年秋にiOS向けにリリース予定だそう(Androidは未定だって、残念)。

Bad Smell Queue by xionchannel software

体験用 APKをダウンロード出来るURLが載ってるサイトはコチラ ---> Bad Smell Queue

f:id:mitsu-ksgr:20150713204415j:plain

YouTubeの紹介動画 www.youtube.com

スカンクを操作して、敵を倒していく3Dアクションゲー(Unity製)。

  1. 走り回って屁をチャージする
  2. チャージした屁をブチかまして敵を気絶させる
  3. 突進してダメージを与える

っていう流れで敵を倒していく。 屁のチャージ量に応じて、スカンクのケツが大きくなっていくのが見ていて面白い。 屁は(当然だけど)自分の後ろに出るので、敵の横を走り抜けながら放屁する必要がある。 開発者曰く「ドリフトしながら屁を当てると良い感じ」。これが中々難しい。

アイディアの面白さもさることながら、キャラの可愛さに引けを取らない程にゲーム性も高く、やり込めばやり込むだけ上達しそうな感じだった。 寝ないで難易度調整したそうだけど、中盤からすげー難しくなって無理ゲーと化していたので、しっかり寝てから再度調整して欲しい :)

ちなみに、貰ったチラシにテスト版APKのQRコードがあるんだけど、「背景黒字でQRコードが白」っていうパターンだったので、僕の端末のQRコードリーダーだと認識出来なかった(PCに取り込んで色反転させて認識させたけど)。 QRコードは「背景白地でコードは黒」が基本というか規格だった気がするので、みんな気をつけよう。

アトの跡 by ほしさらい

ゲームのサイト: アトの跡

YouTubeの紹介動画 www.youtube.com

主人公を操作して、女の子を守りながらステージを進んでいく2Dアクション。 基本アクションは、

  • 攻撃
  • バーンアクション(敵の攻撃とかを色々弾ける)
  • 吸い込み(よく覚えてない)

って感じだったと思うんだけど、このバーンアクションっていうのがとにかく気持ち良い。 敵本体や敵弾を弾けるので、ザコ敵をなぎ倒したり、拡散弾を一気に弾いたりと、いろんなシーンで活躍する。 バーンアクションの演出がとにかく気持ち良く調整されていて、これだけでもプレイする価値あり!って感じだった。

とはいえ、コレが万能過ぎて、他のアクションが活きてない感じがした。 この部分は作者の方も苦心してるようで、バーンアクションの気持ちよさを保ちつつ、アクション性を上げる方法を模索しているようだった。

個人が一人で絵もプログラムもこなしているようで、ただただすげーって思った。 BGMとかもやりたいらしい。エターナらないように頑張って欲しい。

Dreeps: Alarm Playing Game

f:id:mitsu-ksgr:20150713221850j:plain

YouTube紹介動画 www.youtube.com

ドットが可愛い完全自動で進むRPG。 「RPGを遊ぶ時間のなくなったあなたへ」っていうコンセプトのゲームだそう。

自分が寝る前に、朝起きる時間をアラームをセットすると、その時間に主人公も目覚めて冒険を始めるらしい。 昼間なんかにアプリを立ち上げると、冒険してる主人公の様子を楽しむ事が出来る。

主人公が冒険している間は、こちらからは指示などは何も出来ない。 見守るだけだけど、逆にそれがいい味を出してるなーって感じた。

主人公は、旅先で出会う人や仲間と会話をするんだけど、細かい内容までは分からない。 グラフィックも良く出来ていて、それも相まって想像を掻き立てられ、見てるだけで楽しい。

Android版の予定はあるんですか?と聞いたら、笑いながら「出してくれって結構言われるんですよねー」って答えてくれた。 予定があるのかどうか微妙な感じだったけど、楽しみに待ってようかな。

iOS版はここから購入出来る ---> dreeps: Alarm Playing Game on the App Store on iTunes

勇者ヤマダくん by Onion Games

f:id:mitsu-ksgr:20150713215836j:plain

YouTube紹介動画 www.youtube.com

5x5くらのパネルをナゾって敵を倒しつつステージをクリアしていくパズルRPGっぽい感じ(ジャンルよく分からん)。

ストーリーがアホっぽくて楽しいし、そのアホっぽい世界観に合わせて作られたBGMやSEが、かなり良い感じ。 全体的にアホっぽいんだけど、パズル部分はキチンと考えてプレイしないとあっさりやられたりするので、中々骨がある感じだった。

近日配信予定だそう。

PooPride by Dice Creative Inc.

BitSummitに応募したところ落選したらしく、開発者たち(社長含む)が会場前でウンチ被って宣伝してた。 なので、実質BitSummitとは関係ないんだけど、ここの社長の熱意が普通じゃなかったので、一応書いとく。

f:id:mitsu-ksgr:20150713224347j:plain 会場外で配ってたティッシュ。水に流せるので、もちろんケツも拭ける。

YouTube紹介動画 www.youtube.com

公式サイト。くさそう。 ----> http://poopride.net/ja/

現在KickStarterで出資を募ってるみたい。 $10,000で開発チームにジョイン出来るそうなので、興味ある人は出資するといいと思う。

ここの社長の下品っぷり熱意の凄さは、Twitterを見れば大体分かると思う。 代表取締役自らが身体を張って宣伝してるところに好感が持てた。

社長の熱意に押されて「応援します!」って言ってしまうと、ウンコを被らされた挙句に記念撮影をされ、それがTwitterを経由して全世界に公開される。 僕の写真も晒されているので、気になる人はPooPrideのTLを遡ると見つけることが出来る。

ゲームは、ウ◯コ同士がチキンレースするっていう内容。 なんでウ◯コがチキンレースするの?って聞いたら、「俺はウ◯コとチキンレースが好きなんだ」という解答を頂けた。良いと思う。

ゲーム自体はしっかり作られていて、チキンレース独特のドキドキ感はちゃんと表現されていた。 Unityで作ってるって言ってた。

ウ◯コなのでiOS向けは厳しそうなので、Androidで頑張るみたい。 ウ◯コ規制に負けずに、是非頑張って欲しい。

おわりに

他にも沢山の作品に触れられて、いい刺激を沢山得られた。 僕がここで書かせて頂いた作品はホントに一部なので、興味ある人は BitSummit 2015 で検索してみるといいと思う。

スマホやPC向けだけじゃなく、Oculus Rift向けの作品もあり、インディー界隈の活気の良さを感じた。

おわり(*・ω・)ノシ

GitHubページでプロフィールページ作った

会社外のアレコレで人と合う機会があったりして、最近個人名刺の必要性を感じてきた。 で、それに合わせて簡単なプロフィールサイトでも作ろうと思った。

GitHub Pages

以前からGitHub Pagesに興味があったので、それを使おうと思った。 ちょっと調べると参考になるサイトが色々ヒットする。

僕は以下のサイトを参考にさせて頂いた。

GitHub Pages テンプレートの使い方

上記のサイトにも書いてあるんだけど、GitHub Pagesのテンプレートを使うには、

  1. GitHub上でリポジトリを作成
  2. リポジトリページからSettingページを開く
  3. GitHub Pages > Automatic page generator から Launch automatic page generator を選択
  4. サイト内容の編集画面に移動するので、いろいろ入力し、Continue to layoutsを選択する。
  5. レイアウト・テンプレートを選ぶ画面に移動するので、そこでレイアウトを選択する。

という手順が必要。

当初はGitHub Pagesのテンプレートを利用しようと考えていたんだけど、個人的にどれもしっくり来なかったので、結局別のHTML/CSSテンプレート(CSSフレームワーク)を使うことにした。

Concise CSS

僕はHTML/CSSを書くのは面倒で嫌いなので、なるべくシンプルに扱えそうな構成のモノを探してみた。 探すに当たって以下のサイトが凄く参考になった。

色々見ていった結果、ConciseCSSが気に入ったので、それを利用させて貰うことにした。

ダウンロードリンクからCSSフレームワークを落としてきて、それを使うようにページを構成すればいいだけ……なんだけど、僕は面倒なので、ConciseCSSのテンプレートをそのまま使った。

Concise CSS テンプレートの使い方
  1. Concise CSSの公式ページのDownloadリンクから、CSSフレームワークをダウンロード。
  2. Get Started > Examples から、テンプレートを選ぶ。
  3. テンプレートサイトを開き、index.htmlとその他必要な追加分のcssを落とす。
    • 特にリンクは無いので、ソースを表示してコピペした。
  4. テンプレートの内容を必要に応じて変えていく

作った

最終的に、GitHub Pages + Concise CSS でプロフィールサイト作った。

テンプレートを利用したお陰で基本的な部分は直ぐ出来たんだけど、どういった内容を書くか、っていうのでかなり時間が掛かった。

おわり(*・ω・)ノシ

Chromeの拡張機能を書いてみた

先週何かブログ書こうと思ってたんだけど、胃腸風邪を患って死んでた。 下痢だけまだ治ってない。


先週くらいにドットインストールでChrome拡張機能の動画を見て勉強させて貰った。

Google Chrome拡張機能入門 (全20回) - プログラミングならドットインストール

結構簡単に出来るんだなーって思って、その日の内に1個作ってみた。

PWGen4ChromeExt

これは、パスワードに使える文字列をスパっと生成するやつ。

何かサービスに登録したりするとき、 いつもパスワード生成サイトのページに行ってランダムなパスワードを生成するんだけど、 毎度そのページ行くのが結構ダルいなーと感じてたので書いた。

結構雑に書いたので、近いうちにちゃんと書き直したい。

ちなみに、名前については、Password Generator for Chrome Extensionの略なんだけど、死ぬほど解りにくいし、今考えるとChromeExtって文字列は名前に含める必要無いし、その分文字削ってPasswordGeneratorとかシンプルな名前にしとけば良かったって、激しく後悔してる。


で、もう一個、東京アメッシュを確認するやつも書いた。

SimpleAmeshViewer

実はこれと同じ機能を提供する拡張機能は、既に何個かChromeウェブストアに出てて、 僕も同僚の方に教えて貰ったやつを使ってた。便利。

Amesh Extension

コレ↑を使わせて貰ってたんだけど、表示がちょっと小さいのが気になった。 そこで、自分でも書けそうだなーって思えたので、勉強も兼ねて自分でも書いてみた。

作りは至極単純で、アメッシュの画像をそのまま表示してるだけ。 オプション画面を作ってみたくてビューサイズを調整出来るようにしたけど、自分は使ってない(常に1倍)。

基本機能は1時間くらいでザザッと作れた。 でもその後、割りと時間掛けて綺麗に書き直してみたので、そこまで酷いコードじゃない……と自分では思ってる。

一点、アメッシュの画像を勝手に使っていいのか気になったけど、よく分からなかった。 どうなんだろう?と思ったけど、個人でちょっと使うだけだからいいかな?って感じで作ってしまった。 ダメそうなら削除しないとなぁ。


最初はChrome拡張機能作るときの簡単なまとめを書こうと思ったんだけど、うまく纏まる気がしない上に、ドットインストール見たほうが1000倍タメになる感じだったので、ただの日記になった。

Chrome拡張は手軽に作れて、それなりに実用的な感じに仕上がるので、初心者の教材とかにも良さそう。

おわり(*・ω・)ノシ

ブログ始めました

色々きっかけがあって、ブログ始めました。

もともと筆無精なので、いつまで続くか分からないけども。

この記事要るか?って思ったんだけど、「記事がありません」って出るのがなんかちょっとアレだったので。