#えむけーろぐ

間違った事を書いていたらやさしく教えてください

一度に試す新しいことはひとつまでにする。どうせひとつじゃ収まらないので。

ここ最近気をつけている事として、何か新しくモノを作る時に、そこで導入する新しい技術はひとつまでにするようにしている。例えば、初めてGrapeでWeb APIを作るとなった時、そういやDockerで環境構築するようにもした方が良いかな、あぁあとこないだなんかのイベントで聞きかじったアレも試してみようかなとか考えるのだけど、いやいや今回はGrapeの練習だからな、ということでそこ以外の部分はいつも通りの技術を使うようにしている。

偉そうに言ってるけど、これは単純に僕が一度に複数のことを覚えるのが苦手だからだ。どうせGrapeの練習のつもりで初めても、Grapeに関連してGrape::Entityだの、grape-swaggerだの、新しいことが必要になってくるし。

力のある人は一度に複数のことを覚えられるのかもしれないけど、少なくとも僕はあんまりそれが得意でなく、結局完成せず終いになることが多々あったので、あえて絞って、とりあえず世に出してみるところまで行くというのを最近は実践してみている。

今日は終日予定があって疲れたので、こんな感じで。あとあと、じゃあその新しい技術はひとつまでっていうけど、粒度はどんくらいなの?みたいなのとかも考えをまとめてみたい。

ブログを書くネタが無い時どうするか

今の所、他人が書いてくれたところ以外は自分アドベントカレンダーを自分で埋めることが出来ている。これはなかなか続かない僕のブログ人生にとって結構すごいことだ。

adventar.org

別に義務感に駆られてやってるわけでも無いので、例えば明日寝落ちして記録が止まってしまってもなんとも思わないのだけど、適当に文章を書いて公開して反応が得られたりするのは結構楽しい。とはいえ毎日毎日ブログに出来るほどの事が起こるわけでも無く、何か書くネタを探さなきゃいけないのだけど、そういう時自分はいつもどうやってネタを探しているのかなーと思ったのでまとめてみた。

自分のTwitterを眺める

まずは、今日1日の自分のツイートを眺めてみる。最近は高専1、2年生の時みたいに起こったこと全てをツイートしてるわけではないのであんまり記録に残っていないのだけど、自分のツイートはその日あったことを思い出す良いフックになる。1週間や1ヶ月、または1年のまとめみたいな記事を書くときには、TwilogというWebサービスが便利だ。Twitter公式の検索機能は結構あてにならないのだけど、こっちは日付ごとの検索やキーワード検索などが出来るので大変良い。

ブラウザの履歴を見る

Twitterを見てもどうでもいいことしかツイートしていなかったりする時は、Webブラウザの履歴を見てみる。自分の場合、ツイートしない日はあってもWebブラウジングをしない日は無い。履歴を見て自分のググりワードやニュース記事なんかを見て、そこからブログのネタを探してみる。

iPhoneのマルチタスク画面を見る

iPhoneのマルチタスク画面(正式名称はわからないけど、ホームボタンダブルクリックもしくはホームインジケータを上にくいってやったら出てくるアプリ一覧)を見てみる。最初の方にはTwitterやSafari、Facebook、LINEなんかの普段使うアプリしか出てこないけど、たまにしか使わないアプリやゲームなんかがあると、そこから話が膨らんだりする。最近はPPKPというゲームが楽しい。

PPKP

PPKP

  • SHIMADA TOSHIHIRO
  • ゲーム
  • 無料

本棚を眺める

本棚を眺める。最近読んだ本はもちろん、結構前に読んだ本だったとしても、ブログに感想を書くためにいろいろ読み直したり調べてみたりする過程で、「あぁこんな事書いてあったな」とか思い出せて結構楽しい。一昨日の記事はそんなノリで書いた気がする。

身の回りを眺める

いよいよ書くことが無いなぁとなったら、机の周りや部屋、ベッドの周りなど、普段自分が生息しているあたりを見回してみる。ぼくはQoL向上のために結構お金を使うほうだと自負しているので、何らかの商品レビューなんかも書けるはずだ。ちょうど今机の上を見渡してみたら買って便利に使っている商品が3つ、4つ、5つ……。

その他、定期ネタなど

その他、定期ネタがあればそっちを書いても良いかもしれない。僕の場合は、最近はあんまり書いてないけど「近況」というタイトルで数ヶ月〜半年くらいの出来事を書いていた時期があった。また、本やアニメが趣味なら「○月に読んだ本」「20XX年第何クールでおもしろかったアニメ」とか書くと良いだろう。また、「20XX年買ってよかったもの」とか書いてもいいよね。

 

まぁ、そんな感じで、今日は特にブログに書くことがなかったので、ブログに書くことがないことについて書いた。以上で、mktakuya Advent Calendar 2018 14日目の記事を終わります。

ビジネスカジュアルTシャツを作ったら2枚売れた

これは、先日行った内定イベントに参加するにあたって、どんな服を着ようかなと迷っていた時に作ったものだ。

人事は「カジュアルな服装で構いません。」と言うが、まぁいわゆるビジネスカジュアルってヤツが必要だろう、でもビジネスカジュアルって一体……?となった僕にとって、残された選択肢はTシャツを作ることだ。

作るだけ作ってふぁぼとRTを稼いで満足して、結局当日はチノパンと白シャツで行った*1のだけど、なんとこのビジネスカジュアルTシャツを買った人がいるというのだから驚きだ。

本当に適当に作ったので気づかなかったのだけど、このTシャツが購入されると僕に300円の利益が入るらしい。2枚売れたので、600円のもうけだ。600円があれば近所のラーメン屋の学生ラーメンが食える。最高。ありがとうございました。

*1:他の人達は普通にパーカーだった

『Webサービスのつくり方 ~「新しい」を生み出すための33のエッセイ』

※この記事はmktakuya Advent Calendar 2018 12日目の記事です。

今日は12日目ということで、自分アドベントカレンダーの折り返し地点となる。特に書くことも無いので、『Webサービスのつくり方 ――「新しい」を生み出すための33のエッセイ』という本について紹介しようと思う。 

Webサービスのつくり方 ~「新しい」を生み出すための33のエッセイ (Software Design plus)

Webサービスのつくり方 ~「新しい」を生み出すための33のエッセイ (Software Design plus)

 

ゆーすけべーさんという方が書いた、文字通り「Webサービスのつくり方」の本だ。プログラミングの話だけでなく、心構えの部分から、アイデアの出し方、企画と設計・開発、そして運用やプロモーションまで、Webサービスを作るのに必要な事を広く網羅してくれている。

僕がこの本に出会ったのは、後輩たちと北海道学生アプリコンテスト2018に出るための活動を始めた時だ。これまで(学生インターンを雇って給料を出せるくらいには)成長したWebサービスの開発しかしてこなかった僕が、設計や開発以前のアイデア出し、ゼロからアプリ作りを始めるにあたって、どうすれば良いかわからなかったのでこの本を買った。

もちろん、趣味でアプリを作ったりした経験から、なんとなくどうすればいいのかは感覚としてあったのだけど、仲間と一緒に作るにあたっては、そんなふわふわしたものではなく、ちゃんとうまく言葉として表されたやり方が必要だった。

そんな時に、この本がすごく役に立つ。特に、「実装までにつくる企画の全て」という項目と、「アイデアの発想法」という項目が役に立った。サービスをつくる時は、その原動力となる、個々人が持つ揺るがない気持ち「哲学」から、具体的な「アイデア」に落とし込んでいき、そして戦う領域「テーマ」を決め……といった具合にやっていくそうだ。また、「アイデアは新しい組み合わせ」といった、アイデア出ない地獄に陥ると忘れてしまいがちな教訓も書いてたりする。詳しくは本を買って読んでほしい。

書いている内容が広いぶん、ひとつひとつに関しては若干薄い部分があるかもしれないけど、それでも今すぐに実行可能な事を書いてあるし、何よりキーワードを提示してもらえているので、あとはググれば良い話だ。

古い本なので微妙に手に入りづらいかもしれないけど、KindleやiBooks版もあるので、これから何か作ろうという人にはぜひオススメしたい一冊である。

大乱闘スマッシュブラザーズ SPECIAL

スマブラSPを買った。

www.smashbros.com

ダウンロード版を予約していたので、12月7日(金)にはプレイできるはずだったのだけど、木曜夜の上京時にSwitchを家に忘れてきたので、千歳に帰ってきた日曜日が初プレイ。みんなより3日遅れの参戦でした。

僕のスマブラ歴は、N64スマブラ→ゲームキューブDX→今回のSPという感じ。間にWii向けのXと、3DS/Wii U向けのやつの2つがあったみたいだけど、その頃にはゲームしなくなってしまっていたので、未経験。

ゲームの基本的な部分は記憶にあるものと変わらないけど、なんかよくわからないXと書かれた丸い何かが浮いていて、殴ると必殺技を使えるようになったり、それを期待して殴ると今度は爆発して吹き飛ばされたりと、謎要素が追加されていた。また、ゲームを進めていくうちにキャラクターが追加されていくのだけど、出てくるキャラが知らないヤツばっかりで誰これってなるのもまた楽しい。

今の所のお気に入りキャラはマリオとこどもリンク。研究室に持っていったらスマブラだけして1日が終わりそうなので、そこは自主規制しておこう……。

内定者イベント

就職先の内定者イベントに行ってきた。

春から一緒に働く2人の同期と顔合わせしたり、会社や事業部についての説明や戦略の説明、どういうことを期待されているかを聞いたり、相互理解セッション、今後取り組みたいことの検討と共有などなど。

とても楽しかった。普段とはまた違う人達と接するのは良い刺激になる。自分があまり気にしない事について深く考えていたり、同じ考えるでも自分とはモノの見方が違ったり。そんなわけで、普段とは違う部分の頭を使ったので、結構疲れた。

あと今日は、どちらかというとあまり喋れない日だった気がする。「今日静かだね?」と何度も言われた。静かでいたというつもりは無いのだけど、熱が入ると話のバトンを持ちっぱなしになってしまう悪いクセがあるという事を指摘されたのが忘れられなくて、その反動であまり喋らなくなったというのはあるかもしれない。たくさん喋れる時もあるので、その辺の発動条件はよくわかっていない。

まぁ何はともあれ、楽しい1日だった。来年の4月からいよいよ社会人なるんだなぁという気持ち。今後も楽しくやっていきたい。

実はこの記事はmktakuyaアドベントカレンダー2018 7日目の記事でした。明日の担当は僕のことが大好きな @rasyosu くんです。

ミスドの店内BGM情報を返すWeb APIを作った

RailsによるWeb API開発、SwaggerによるAPIドキュメンテーション作成の練習として、ミスタードーナツの店内BGM情報を返すAPIを作った。

Misdo BGM API

ミスドの店内BGM

ミスタードーナツの店内で流れているBGMは、USENなんかの音楽番組を流しているのではなく、独自に選曲しているようだ。

月ごとのプレイリストの内容は、以下のWebページから確認することが出来る。

店内BGM情報|ショップ情報|ミスタードーナツ

1時間毎に組まれたプレイリストには、それぞれテーマがある。例えば10時、14時、18時からの時間帯には、「ALL-TIME HITS(1)」という様々な時代のヒット曲のプレイリストが流れていたり、11時、15時、19時には「Now Hit Parade」というタイトルで最新ヒット曲が流れている。

f:id:mktakuyax:20181204130718j:plain

ドーナツを食べながら無限コーヒーを楽しむだけで、懐かしの洋楽から最新ヒット曲まで様々な曲に触れる事ができるのだ。

Web APIにしてみた

ここ最近はバイトや部活等でずっとWeb APIを開発していて、練習用の趣味アプリとしても何かWeb APIや、それと通信するモバイルアプリケーションを作ってみたいなと思っていた。

題材は何が良いかなぁとミスドでドーナツを食べながら思いついたのが、このミスドBGM APIを開発することだ。

仕様

仕様は以下のURLで公開している。

https://misdo-bgm.apps.m6a.jp/v1/docs/

エンドポイント

https://misdo-bgm.apps.m6a.jp/v1

Playlists API

  • GET /playlists - 今月のプレイリスト一覧
  • GET /playlists/1 - プレイリストの詳細
  • GET /playlists/now - 現在放送中のプレイリスト

Songs API

  • GET /songs/now - 現在放送中の曲

現状だとまだまだレスポンスの情報が少なかったり、nullに対する意識が低かったりするけど、今後改善していく。

APIを作っただけで終わりではなく、クライアント側でもっとおもしろい事を出来そうなので試してみているところ。

技術

スクレイピング

BGM情報はPDFで配信されている。PDFは6ページあり、1ページがそのまま1つのプレイリストに対応している。

PDFの解析にはRuby製の pdf-reader というGemを利用している。このGemにPDFを食わせたあとに、テキストを抽出すると一定のルールに従って曲情報が出てくるので、あとは文字列操作を頑張るだけだ。

pdf-reader gemでググると上司の書いた記事が上位に出てきて吹いた。

qiita.com

API開発

APIの開発には、RailsとGrape、Grape::Entityを使用した。仕事で使ってる技術を趣味アプリでも使おうマインド。

RailsとGrape、Grape::EntityによるAPI開発の詳しい手順は先日Qiitaに書いたので自分も何か作ってみようという人は参照してほしい。

qiita.com

Misdo BGM APIでは、上記の記事で行った手順に加えて、APIドキュメントの生成のためgrape-swaggergrape-swagger-entityを利用している。これについても後々Qiitaに書いておきたい。

運用

デプロイ先としてConoHa VPS上に、ConoHa公式のDookuアプリケーションイメージを展開して利用している。

Dokkuとは、自分のサーバ上にHeroku的なモノを作ることが出来るOSSだ。業務として人からお金をもらってマジメに作るアプリケーションならHerokuやAWSを使うけど、趣味レベルなら十分戦える。

詳しくは、さっき書いたアドベントカレンダーの記事をどうぞ。

qiita.com

おわりに

そこそこの量のデータがあり、また止まっても別に困らないけど自分でも欲しいなと思える練習用の題材として、なかなか良いテーマだったと思う。

また、このAPIを作るにあたって、スクレイピングと著作権についても調べてみた。

it-bengosi.com

上の記事を読んだ感じだと、以下の項目を満たす限りは大丈夫そうだ。(法律に関する知識のない自分の解釈なので正確性は保証できず。)

  • 利用規約への同意を経た会員登録・ログイン等をせずに見られるコンテンツで、クローラに対する制限(robots.txtとか)が無いこと。
  • 情報の複製が情報解析目的であること。
  • 取得した情報をそのまま配信するのではなく、自分で分析して再構成したものを提供していること。

今後も楽しく便利な趣味アプリを作っていきたい。