アイドルマスターシンデレラガールズ ドット絵 2017新年Ver
あけましておめでとうございます。
今年も当ブログをよろしくお願いいたします。
今年は2017年ということで、
昨年描いたデレマスドット絵をアレンジしてみました。
2017年にちなんで、17の形になっています。
【アイドルマスターシンデレラガールズ】「アイドルマスターシンデレラガールズ ドット絵 2017新年Ver」イラスト/yu3mars [pixiv]
デレマスのドット絵・ドット絵ができるまで
この記事は KMCお絵かき アドベントカレンダー 9日目の記事です。
8日目の記事は、id:kebusKMC さんの 【KMCお絵かきAdventCalendar】 楽園の守り手たる巫女 - kebusKMC’s diary でした。
今日のテーマ
アイドルマスターシンデレラガールズのドット絵を描きました。
【アイドルマスターシンデレラガールズ】「アイドルマスターシンデレラガールズ ドット絵」イラスト/yu3mars [pixiv]
例によってポケモンGBA風。
シンデレラプロジェクトのアイドル+木村夏樹です。
衣装はアニメ2nd OP「Shine!!」のクリスタルナイトパーティです。
これだけで終わってもよいのですが、せっかくなので、ドット絵ができるまでを紹介します。
制作環境
OS | Windows 10 |
使用ツール(ドット絵制作) | EDGE |
使用ツール(ドット絵加工) | ImageMagick |
まず、EDGEというお絵かきソフトでキャラクターを一人一人描きます。
描き終わったら、ImageMagickという画像編集ソフトを使い、公開に適した形に整えます。
EDGE
ドット絵を描くのに便利なソフトです。
今回は、衣装と顔は全キャラで使いまわしました。
髪型と色(一部キャラは目と肌の色も)を変えることで、キャラクターの個性を表現しています。
1ドット変えるだけで、大きく印象が変わります。
そのため、試行錯誤して一番しっくりくる形を見つけます。
スクリーンショットです。
ImageMagick
画像の連結や拡大に便利なソフトです。
複数のドット絵をまとめて一枚の画像にすると、公開の時に取り扱いが楽になります。
小さいドット絵をそのままアップロードすると、ぼやけて拡大表示されてしまう場合があるので、
拡大してからアップロードしています。
今回ドット絵を加工する際に利用したコマンドを紹介します。
シェルあるいはコマンドプロンプトから利用できます。
縦に結合 (例は3つの画像を連結)
convert -append [入力ファイル1] [入力ファイル2] [入力ファイル3] [出力ファイル] convert -append uzuki.gif rin.gif mio.gif newGenerations_tate.gif
横に結合 (例は3つの画像を連結)
convert +append [入力ファイル1] [入力ファイル2] [入力ファイル3] [出力ファイル] convert +append uzuki.gif rin.gif mio.gif newGenerations_yoko.gif
ぼやけさせずに拡大する (例は2倍に拡大)
convert -filter box -resize [倍率]% [入力ファイル] [出力ファイル] convert -filter box -resize 200% newGenerations.gif newGenerations_zoom.gif
ImageMagick 7 以降ではconvertコマンドはmagickに名称変更されているので注意してください。
ImageMagick に関する技術的情報として、以下のサイトが参考になるかもしれません。
[Resolved] convert.exe missing from 7.0.1-Q16? - ImageMagick
終わりに
ImageMagickの利用はプログラマっぽい感じですが、慣れると怖くないです(エラーが出ると戸惑いますが…)。
イラスト制作方法は、人それぞれだと思いますが、何かの参考になれば幸いです。
皆さんも、ドット絵イラストレータを始めてはいかがでしょうか?
明日のKMCアドベントカレンダーは、KapTamBnS さんです。
アニメ系新番組や単発番組の情報をカレンダーにするプログラム「しょぼかるフィルター」を作った
この記事は KMC アドベントカレンダー 7日目の記事です。
6日目の記事は、id:dnek さんの 運ゲー排除マインスイーパーをiOSにも対応させた話とか - dnekblog でした。
今日のテーマ
新番組や単発番組の情報をカレンダーにするプログラムを書きました。
「しょぼかるフィルター」と呼んでいます。
ソースコードはGitHubで公開しています。
手元で試してみたい、自分の地域の情報を出力したい、という方は、readmeを参考にして動かしてみてください。
github.com
こちらで、KMCの所在地である京都向けの.icsファイルを試験公開中です。
当面は運用を続ける予定ですが、予告なく終了する可能性があります。
あらかじめご了承ください。
以下、何をやったのかを簡単に紹介します。
しょぼいカレンダーとは
アニメ関連番組の番組表。
「しょぼい」という名前とは裏腹に高機能。
例えば、rssbuilder機能というものがあり、.icsファイルを生成できます。
今回はこの機能を利用します。
http://cal.syoboi.jp/util/rssbuilder
しょぼいカレンダーの不満点
デフォルトで出力される.icsでは、番組数が多すぎるため、欲しい情報が埋没します。
私は、録画予約を失敗しないように、新番組や単発番組の情報が欲しいと考えました。
継続して毎週放送されている番組の情報はいらないので、出てこないようにしたいです。
デフォルトの.icsをGoogleカレンダーに読み込ませたときの様子です。
情報が多すぎます……。
作ったプログラムでやっていること
しょぼいカレンダーが発行する.icsを読み込んでフィルタリングします。
"【新】"、"【注】"、"【!】"が含まれるものだけを含んだ.icsを出力します。
新番組や単発番組の情報を失うことなく、不要な情報の大部分を除去することができます。
放送時間が変更された番組も引っかかってしまいますが、数が少ないので目を瞑ることにします。
実装が軽いことはよいことです。
フィルタリングした後の.icsをGoogleカレンダーに読み込ませたときの様子です。
だいぶスッキリしました。
実運用では、Linuxサーバー上でcronを使って定期実行しています。
webサーバの公開ディレクトリに.icsを出力することで、カレンダーの配信を実現しています。
終わりに
自分でプログラムを書くことで、新番組や単発番組の情報をカレンダーにすることができました。
もし、これよりいい方法があるという方は、ぜひお知らせください。
プルリクも歓迎です。
明日のKMCアドベントカレンダーは、id:asRagiさんです。
はてなブログ5周年ありがとうキャンペーンお題第1弾「はてなブロガーに5つの質問」
AOJ 2717 Where is the Boundary
問題
Where is the Boundary | Aizu Online Judge
直線状にn個の県が並んだ国がある。
m種類の分類法があり、これによって各県は、'E'または'W'に分類することができる。
今、この国を'E'と'W'に分ける境界を決める。
m種類の分類法に対する誤差が最小になるような境界位置を求めよ。
解法
全探索する。
境界線を決めたとき、境界の左側にあるEの数と、境界の右側にあるWの数の和を求める。
この和が最小になる境界線が答えとなる。
ソースコード(C#)
using System; using System.Collections.Generic; using System.Linq; namespace _2717 { class Program { static void Main(string[] args) { int[] nm = Console.ReadLine().Split().Select(int.Parse).ToArray(); int n = nm[0]; int m = nm[1]; string[] d = new string[m]; for (int i = 0; i < m; i++) { d[i] = Console.ReadLine(); } int[,] e = new int[m, n + 1]; int[,] w = new int[m, n + 1]; for (int y = 0; y < m; y++) { for (int x = 0; x < n; x++) { e[y, x + 1] = e[y, x]; if (d[y][x] == 'E') e[y, x + 1]++; } } for (int y = 0; y < m; y++) { for (int x = n - 1; x >= 0; x--) { w[y, x] = w[y, x + 1]; if (d[y][x] == 'W') w[y, x]++; } } int ans = int.MaxValue; int bound = 0; for (int x = 0; x < n + 1; x++) { int tmp = 0; for (int y = 0; y < m; y++) { tmp += e[y, x] + w[y, x]; } if (tmp < ans) { ans = tmp; bound = x; } } Console.WriteLine("{0} {1}", bound, bound + 1); } } }
ISUCON6本戦で昨年来の夢を叶えた #isucon
ISUCON6本戦で昨年来の夢が叶いました。
これです。
isuconの名刺、格好良さそうだから欲しい
— ゆー (@yu3mars) 2015年10月31日
かっこいいですからね。
ISUCONとは
いい感じスピードアップコンテスト。 webサービスが与えられるので頑張って高速化します。 詳しくは公式サイトを読んでください。
今回のお題は、pixiv Sketch。
チーム
チーム「:innocent:」として参加しました。
順位表での表示は😇になっていました。まさか本当に置換されるとは思っていませんでした。
運営の方がわざわざ対応してくださいました。ありがとうございました。
画像は1位を獲得した瞬間です。
私を本選に連れて行ってくれた素敵なチームメイトの記事はこちら。
やったこと
- rack-lineprofileを使うもログが残らず失敗
- Azureでポートを開く
- nginxでHTTP2対応
- nginxで静的ファイル配信を試みるも失敗
- Redisでキャッシュを試みるも型エラーを起こし失敗
- DBの構成をSlackに張り付けて眺める
- N+1問題を解消するためクエリを改造する
結果
23位 3177点
当初の目標である正の点数を取ることに成功しました。
初期点数 3907点 を一度も超えることができなくて残念……
前日の様子
- nginx実践入門を購入
- ヒカリエ侵入訓練
- 当日集合時間決定ミーティング
- 例によってruby実装をベースに頑張ることを確認
当日の様子
- 8:50に到着。名札を獲得。会場は半分くらい席が埋まっていた。
- 会場のレゴを撮影する。
- 持参したルービックキューブで遊ぶ。
- 競技開始。PVにざわつく。
- 参加チームがことごとくデプロイに失敗する。4コア*5台でAzureの制限に引っかかった?
- 2コア*5台に構成が変更される。
- 高速にデプロイ。ベンチを回し暫定1位を獲得(最初にベンチを回したので自明)。
- nginxの設定をする。
- アプリをDockerから出すことを検討するも、Docker爆破コストを考え、そのままにする判断をする(結果的には引き摺り下ろしたほうが良かった)。
- rack-lineprofileを使うもログが残らず、眼力でボトルネックを調査し始める。
- 方針が立たなさ過ぎてDBの構成をSlackに張り付けて眺める。
- get_ほげほげ がN+1問題を引き起こしていることが分かっていたので、改善に取り組む。点数が初期実装を超えられなくて謎。
- nginxで静的ファイル配信を試みるもfail。原因究明に失敗したため、切り戻し。
- Redisでキャッシュを試みるも、キャッシュが返す型がキャッシュでないものと変わっており、型エラーを起こしfail。終了直前まで粘るも解決できず。
- 絶対に正の点数を取りたかったので終了10分前に切り戻し。再起動実験は時間がないのでしなかった。
- 😇 ←この顔になった。
- 懇親会で他チームの方針を聞いて知見を深め、交流した。
感想
自分の実力不足を改めて痛感しました。
次回があれば、本選で名札を獲得して、有意な貢献ができるようになりたい。
Webサービスに関して、ある程度全体の雰囲気が分かるようになった(気がする)のは収穫。
運営の皆様、参加者の皆様、そしてチームメイトの2人に感謝です。
おまけ
Iikanji Syokuba-sagasU CONtest 個人的に開催中です。 いい感じの職場情報があればお知らせください。