キノコの自省録

日々適当クリエイト

自サイトをAngularJSで書き直し

WebページのライブラリにAngularJS + Bootstrap3を導入して、全面的に差し替えました。ずっと変えたかったのですが、なかなか作業が捗らず、ずるずると来てしまいましたが、漸く終わりました。

kinokorori softworks

AngularJS入れたので、コピペコードを大幅に削ることが出来ました。もう少し削れそうなんですが、一旦はこれでいいや、といったところ。画面上部のNavbarと、左ペインのソフトウェア一覧を部品化して、各ページでそれらの部品をロードする構成になっています。

5年くらい前までは、こういったテンプレート部品的なコードをJavaScript上で実装すると問題が多いため、大抵の人はサーバの助けを借りて実現していました。ただ、サーバを使うとなるとランニングコストが跳ね上がるわけで、それはやだなーと思ってやってませんでした。月600円でも年間にすると7200円ですからね。貧乏人としては馬鹿にできない金額です。

という貧乏性を発揮したことで、ナビゲーションバーとソフトウェアリストを含んだhtmlを、全ページにわたってコピペして作っていました。当然、どれが選択されているかを示すハイライトなども全部手修正です。馬鹿みたいです。レイアウトを変更すると、全ページやり直しです。コピペということはバグも混入します。最悪です。

jQueryAjaxを使って動的ロードという方法もやろうと思えばできましたが、これをやると、クローラーからは真っ白なページ扱いされてしまい、検索に引っかからなくなります。それはイヤだったので、全部手書きしました。

同じような悩みを抱えていた人は、この機にAngularJSに乗り換えてみてはいかがでしょうか。AngularJSはかなりとっつきにくい上に更新が異様に速く、2年前のコードがすぐに陳腐化するという辛さもありますが、コピペよりはマシです。似たようなライブラリにReact.jsがありますが、今の流行り具合を見ると、Angularを覚えていた方が、メインストリームに乗れると思います。

※ちなみに、AngularJSと書くとAngular1.x系、ただのAngularと書くと、Angular2.x~を指します。AngularはコードがJavaScriptに限らないためです。

※Angular1.xを使うのであれば、Angular1.5以降に適合するようにしましょう。1.4以前はAngular2/4との整合性が低く、後々苦労することが予想されます。

Krita現バージョン(3.3.2)はMacOSXでG'MICが動きません

直前のエントリでも書きましたが、Kritaの現バージョン(3.3.2)では、MacOSXでG'MICが動作しません。正確には、KritaとG'MICが繋がっていません。リリースノートにひっそりと書かれています。

Krita 3.3.2リリース | Krita

Kritaでの着色にG'MICを紹介しているブログがいくつかあって、よーしやってみようと思ったら上記の通りで、のっけから躓くことになりました。「MacOS版でG'MICが現在非対応」という情報もなかなか出てこなくて、色々格闘していました。ということで、G'MICを使用したい場合、大人しくWindowsLinux版を使用しましょう。

なにがダメなのか

Krita技術的な話。

窓の杜の記事ではこう書かれています。

また、Mac版はコンパイルに問題があり、「gmic-qt」プラグインが含まれていない。

フリーのペイントソフト「Krita」v3.2.0、不要な被写体をなぞって除去する機能を導入 - 窓の杜

うーん、なんだかよくわかりませんね。ということで、gmic-qtをMac上でビルドして動かしてみました。ビルド手順を書いておきます。ちなみにHomeBrewがインストールされていることが前提です。

まずはQtのインストールから。

$ brew install qt
$ echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

次に、XQuartzが必要っぽいのでインストール。以下からdmgファイルをダウンロードして入れるだけ。

https://www.xquartz.org

ビルドはqmakeで行う方法と、cmakeからMakefileを生成する方法があります。今回はcmakeでやる方法を紹介。

$ brew install cmake
$ git clone https://github.com/dtschump/gmic.git
$ git clone https://github.com/c-koi/gmic-qt.git

$ cd gmic-qt
$ mkdir build
$ cd build
$ cmake .. -DGMIC_QT_HOST=none -DGMIC_PATH=../gmic/src -DCMAKE_BUILD_TYPE=Release
# DGMIC_PATHはgmic.cppのある場所を指定すること

$ make

-DGMIC_QT_HOST=kritaとすると、krita用gmic_qtが出来上がりますが、Krita側が非対応なので、何もできないバイナリになってしまいます。

※DGMIC_PATHの指定は、gmic.cppの有無で判断するので、指定場所に注意してください。

結構かかります。気長に待ちましょう。終了すると、作業ディレクトリ(build)にgmic_qtという実行ファイルができています。そう、スタンドアロンの実行ファイルです。

起動するとファイル指定ダイアログが立ち上がりますが、なんか様子が変なので、コマンドラインからファイルを引数指定して起動することをお勧めします。

$ ./gmic_qt hoge.png

とりあえず立ち上がりはしました。うーん、コンパイルの問題ではない気がしますね。

f:id:kinokorori:20180105230816p:plain:w300

いくつかのフィルタはちゃんと動作するようです。実際に試してみると、保存まで完璧に終わります。ただ、肝心の色塗りで使われるcolorize[interactive]が動きません。選択してOKすると、ノード指定画面に行かずにクラッシュします。

どうもKritaではなく、gmic-qtの方にトラブルがあるっぽいですね。なにしろ別プロセスでGUI付き動作をするので、Kritaはあまり複雑なことをする必要がないですから。

また、G'MICは、アルゴリズムサイドのgmicと、gmicをGUIラップしたgmic-qtでできているようですが、まだ対応が完全でないのはgmic-qtの方ではないかと思います。ちなみに、$ brew install gmicを実行すると、ちゃんとインストールされます。

結論

ということで、確かにMacだと今のところgmic-qtの対応が不完全のようです。オープンソースなので、自ら開発に参加、というのも全然アリだと思います。

Macに仮想環境突っ込んでLinuxという手もないではないですが……。

UGEE液晶タブレットが邪魔してKritaが起動しない (Windows)

あけましておめでとうございます。今年もよろしくお願いします。

去年は10月くらいから仕事が忙しくなり、家でほとんど何にもできない状態が続いてました。今年はもっと暇をください。

f:id:kinokorori:20180105213926j:plain:w300

UGEE液晶ペンタブレット

先日、UGEEという中国の深センにある会社の液タブ買いました。


Ugee UG-2150 21.5" ペン タブレットモニター ペンディスプレイ Pergearクリーンキット付属 IPSパネル HD解像度 (21.5" IPS Monitor+2 Pens+2 USB Cables)

この機会に、Kritaを覚えようと思い、Krita + 液タブを年始にちょっと弄ってました。 最初Macで遊んでいたのですが、G'MicがKrita for Macで動かないということで、Windowsに乗り換え。

※ちなみに、上の絵は従来通りのマウス絵です。

Kritaが起動しなくなる

Windowsで先にKritaの起動を確認してから液タブ繋いだのですが、Kritaが立ち上がらなくなりました。

色々ガチャガチャやっているうちに、どうも液タブドライバーの具合が悪そうということが判明。液タブドライバーをアンインストールすると起動するようになりました。

ただ、ドライバーアンインストールしちゃうと、そもそも液タブがまともに動かなくなります。それじゃ困るので、別のドライバーを入れたら、何事もなかったかのように起動しました……。

とりあえず、今回動かなかったのは、1709Beta(20171207)というドライバーです。もしKritaが立ち上がらなかったら、ドライバーを入れ替えてみましょう。

なんとなく感想

KritaはUGEEの液タブ対応を謳っていないこともありますが、ペンの動きが少し変です。液タブからペンを離した状態で移動しても、ペン位置が付いてきません。その状態で、強くインプットすると、停止していたペン位置からタッチした位置まで、直線が引かれてしまいます。超ソフトにタッチすれば一応回避は可能……。

ただ、Windowsではこんな感じで変なんですが、Macだとちゃんと動きます。直ぐに動作がおかしくなるWindowsよりMacの方がいいんですけど、まだKritaのMac対応が途上っぽいところがあります。

シャウトアラームver2.1.0をリリース

シャウトアラームver2.1.0をリリースしました。

シャウトアラーム

シャウトアラーム

  • MASAAKI MAKINO
  • ユーティリティ
  • 無料

単体アラームのアラーム音が正常に設定できない不具合の修正と、アラーム音(3個)の追加です。

追加したアラーム音は、以下の通りです。

  • アラーム4: 電話の着信音(プルルルルル)
  • アラーム5: 警告メッセージ感のある音(チャチャチャチャ)
  • アラーム6: ちょっと元気系な女の子の声で「おはようございます!」

一応、海外にもローカライズしているのに「おはようございます」はどうなんだという気もしないでもないですが。個人的にはアラーム6を結構使っています。くどくなり過ぎないよう、発声の間隔は、ちょっと広めにしています。

シャウトアラームver2.0.2が大阪ほんわかテレビにて紹介されました+アプリ更新について

シャウトアラームver2.0.2を、10月27日放送の大阪ほんわかテレビにて紹介していただきました。

大阪ほんわかテレビ|放送内容|読売テレビ

シャウトアラームを App Store で

残念ながら私は関東民のため、読売テレビは見ることができませんでしたが……

なお、シャウトアラームver2.0.1 → ver2.0.2では、スヌーズを声で止めたのに、解除できずに鳴り続けるバグを修正しました。割と致命的なバグなので、ver2.0.1をご使用の方は、ver2.0.2をご利用ください。

デザイン比率計算機 ver2.1.0

デザイン比率計算機も更新しました。iOS11向けのビルドと、規格表にApple製品の縦横サイズを記載しています。以前のApple製品は4:3ばかりでしたが、最近はもう解像度も比率もバリエーションが増え過ぎて、整理しないとよくわからなくなりました。

ウィッチクライド

レビューを拝見しました。実は、封印のメッセージがバグっているのは気づいていましたが、ちょっと放置していました。良くないですね。更新します。iPadのアイコンについては、以前も友人より指摘があったのですが、自分の環境では再現せず、まあいいや大丈夫なんだろうと思ってリリースしました。やっぱり駄目なようですね。アセットを最新にして再確認しようと思います。

機能的な更新も入れたいところですが、時間との相談という感じです。

黒猫の単語帳ver2.5.0

やはり動いていません。そのうち公開停止します。

全国バス経路マップ

iOS11対応予定はありません。残念ながら、更新するだけの余裕が自分にありません。このまま自然公開終了予定です。

Seraph Flight

iOS11向けに更新するかもしれません。実際のところあまり考えていませんが、取り下げる理由もないので。

黒猫の単語帳2nd公開停止のお知らせ

黒猫の単語帳2ndですが、現在動作していません。辞書提供元のiKnowAPIの公開を停止している模様です。元々、iKnow APIは5年以上前に公開停止されていましたが、「保証はしないものの、動いているなら利用しても構わない」とのことで、そのまま黒猫の単語帳も公開を継続していました。

今現在、APIが完全に止まったわけではなく、JSONでエラーが返ってきています。そのため、もしかすると復帰する可能性も0ではないですが、限りなく低いと思われます。

近日中にVectorなどからも公開取り消しを行います。

代替辞書

代替辞書も検討したいところですが、iKnowレベルを求めると、無料では存在しないと言って良いところです。これはiKnow API公開停止通告があってから探してはいましたが、未だに状況は変わっていません。

iKnowに直接掛け合うことも策の1つですが、無料は流石に無理でしょう。月額いくらになると思いますが、黒猫の単語帳を有料化しない限り公開は難しいと思います。

Google TranslateやBing Translateも有料で、さらにアカウント辺りいくらの利用になるため、自分でサーバを立てて一元管理しなければなりません。サーバ代とAPI利用料がかかってくるので、これまた頭の痛いところです。

随分前にどこかで書きましたが、無料のWebAPIを利用するというのは、切られても文句の言えない弱い立場に置かれてしまいます。利益を出す仕組みを考えるというのは、安定的なサービスを提供する上で非常に大事なことで、お金が二の次になりがちなエンジニアであっても、そのことをよく念頭に置かなければならないと、ここ数年、特に強く思っています。

RaspberryPi ZeroでGPIOを使って音声出力するお話

RaspberryPi Zero(W)は3.5φジャックがないので、音声出力はHDMIかGPIOを利用して頑張るしかありません。GPIOを使って音声出力するお話は、既にいくつかの方々がまとめられています。

Raspberry Pi Zero のGPIOを利用した音声出力 – Roguer

https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio

が、外部ソースについて説明がなかったりリンク切れしてたりしたので、ちょっと補足しておきます。

最も簡単な方法

dtoverlayを使用します。/boot/config.txtに、以下を追加します。ちなみに/boot/config.txtは、ラズパイSDをPCに挿すと見えます。

# GPIO18とGPIO13の組み合わせ
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

あるいは、

# GPIO12とGPIO13の組み合わせ
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
既にdtoverlayが別に定義されている場合はどうすればいいの?

ただ下に書き足してください。こんな感じで。

dtoverlay=dwc2
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

gpio_altを利用して実行時に書き換える方法

WiringPiとgpio_altを使ってPWMが利用可能になるよう動的に変更します。詳しい手順は冒頭のリンク先を参照してください。下記はWiringPiとgpio_altのインストール方法補足です。

WiringPi

drogon氏のプロジェクトの1つです。Adafruitのページではtar.gzをbootの下に入れようみたいな説明を書いていますが、普通にgit cloneしても構わないと思います。

Drogon Projects | Git

このページのトップに書いてある通り、git clone git://git.drogon.net/ + project name.なので、

git clone git://git.drogon.net/wiringPi

でcloneできます。tar.gzで欲しい場合はsnapshotをクリックするとダウンロードできます。

2018. 2. 28追記

wiring-piは、apt-getでもインストールできるようです。

$ sudo apt-get install wiringpi

gpio_alt

konsuktaner氏のプロジェクトの1つです。githubに置いてあります。

GitHub - konsultaner/word-clock-raspberry-pi-zero-neopixels: This is a project to construct and build a word clock using a raspberry pi zero and the adafruid neopixels.

README.mdに書いてある通り、gccでビルドすると、gpio_altのバイナリが生成できます。WiringPiについても書いてあるので、実はここを紹介すれば終わりとも言えなくもない。

gccを利用するので、動かない場合はsudo apt-get install build-essentialを実行しましょう。

何をしてるのかの解説

ちょっとした解説を書きました。PWMとALTの話です。

RaspberryPi ZeroでGPIOを使って音声出力をするお話(2) - キノコの自省録