2018年4月21日土曜日

Mac Book Air で Podcast 収録メモ

概要

とりあえず録音できる環境が整ったので紹介します
とりあえず忘れないようにメモしたいので詳細は省いています
あとでまとまったら清書しようと思います

環境

  • macOS 10.13.4
  • Skype 8.19.0.1
  • GarageBand 10.2.0
  • Ladiocast 000012004
  • Soundflower 2.0b2
  • ソニーコンデンサマイク ECM-PCV80U

マイク接続

今回使用した ECM-PCV80U は USB で使えるマイクです
Mac Book Air の場合マイク端子がないので USB マイクを使いました
podcast_setup0.jpg

Mac Book Air のサウンド設定

podcast_setup1.png

出力装置を Soundflower (2ch)
入力装置を接続したマイクにします UAB-80

また音量は MAX くらいにすることをおすすめします
あとで設定する Skype 側の音量が小さくなるのを防ぐためです

Ladiocast の設定

Ladio キャストはソフトウェアミキサです
マイクと後で紹介するスカイプの音をミックスして一つの出力にまとめます
podcast_setup2.png

入力1 を Soundflower (2ch) で「メイン」と「Aux1」のボタンを ON にします
入力2 をマイクの UAB-80 にしてこちらも「メイン」と「Aux1」のボタンを ON にします
出力のメインを Soundflower (64bit) にします
この出力を GarageBand で録音します
出力 Aux1 は UAB-80 にします
ECM-PCV80U にはヘッドホンの出力端子がありそこでマイクと Skype の音を聞くために Aux1 に設定します

Skype の設定

podcast_setup3.png

オーディオとビデオの設定から

podcast_setup4.png

マイクを USB-80
スピーカーを Sounfflower (2ch) にします
要するに Skype の音を Soundflower に出力することで音をミックスします

GarageBand の設定

あとは Ladiocast のメイン出力である Soundflower (64ch) を GarageBand で録音します

環境設定から出力を Soundflower (64ch) にします
podcast_setup6.png

プロジェクトを適当に作成します

podcast_setup5.png

マイクのプロジェクトを作成すると良いと思います
トラックを選択して入力の部分を Soundflower (64ch) にしましょう
これで Skype とマイクの音をミックスした音を録音することができます

ノイズゲートは ON にして -50db くらいにすると良いと思います

録音開始

Skype で相手に電話しましょう
繋がって相手の声が問題なく聞こえたら準備 OK です
あとは GarageBand で録音ボタンを押せば Skype を通じて複数人の相手と自分の声を録音することができます

最後に

おそらく今回紹介した方法は Mac で収録するときの王道かなと思います
このページに来た人は環境で紹介しているツールでググれば今回の方法と同じ収録方法を紹介しているページが見つかると思います

この収録方法も「一例」でしかないです
他にもお互いのローカルにお互いの声だけを収録して後から音を合成する方法もあります
またツールも今回紹介したもの以外にもあるので自分なりの録音環境を是非見つけてみてください

2018年4月4日水曜日

Hulu で配信しているジャイアンツライブを通知してくれるボットを作成しました

hulu_giants_icon.jpg

概要

作りましたというか 1 年前に作っていたのですがググってもボットが検索に引っかからないのでググラビリティを上げるために記事にしておきます
作成したのは Twitter ボットです

ボットの動き

以下の 2 パターンでボットはつぶやきます

  1. 配信がある場合にその日の AM 9:00 につぶやきます
  2. 配信開始の 5 分前くらいに再度つぶやきます

なので 1 日 2 回つぶやいてくれます

使い方

https://twitter.com/hulu_giants

このアカウントをフォローするだけでも自分のタイムラインに出てくるので、それで問題なければフォローだけしてください

メンション等はしていないので基本プッシュ通知などは来ません
なので通知がほしい場合は IFTTT などを使ってください
自分は

これで Slack に通知しています

これを使えば LINE にも通知してくれます
ちなみにこれらの Applet は自分で作成したものではございません
公開されている Applet をありがたく利用させてもらっています

その他

たまーにメンテなどをしているので人間がつぶやくこともあるのでご了承ください
フォロー返しなどは特にしていないので、興味があればフォローして好きに使ってください

Hulu をずっと使っていてライブの通知をしてほしいなーと思っていたのですがなかったので作りました
が、実は自分はもう hulu を解約してしまってボットも使っていないのでよくわからない感じになっています

2018年3月24日土曜日

「小さなチーム、大きな仕事」を読みました

概要

DHH 先生の Rework を読みました

メモがてら書き留めていたことを紹介しようと思います
「うーんまぁその通りだね」という点については特に触れていません
大きく共感した点や自分はこう思うという点についてのみ記載しています
書籍の内容を細かく説明しているわけではないので既に同書籍読んだ人向けの内容になっています

Remote も過去に読んでいます

環境

  • Kindle App on iPhone

見直す

「失敗から学ぶこと」は過大評価されている

失敗しても成功しても何を得てそれを今後にどう活かすか考えることが重要だと思う
得られるものが結局一緒であれば成功し続けることに越したことはない
失敗しても何も得ず活かさない人は次もまた結局失敗するだけだと思う
自分の経験値になるのであれば失敗でも成功でもどっちでも良いのだと思う (もちろん成功のほうがいいが)

会社の規模なんて気にしない

日本でということになるが大きな会社が悪いということは決して無いと思う
単純に安定した生活を送りたいという人には大きな会社で働くほうが安定はすると思う (福利厚生や保険など)
ただ、小さな会社というか小さな組織であればあるほど単純にフットワークは軽くなるだろう
多くの日本企業では業務にフローがあり申請や承認がないと先に進めないことが多いと思う
小さな組織であればそのあたりのフローが極めて最低限で構成されており、無駄な時間やコストを消費しないで済むと思う
そういった意味で気にしたくはないんだけど、気にしないと前に進めないケースが存在してしまっている、そういう文化があるというのが問題だと思う

先に進む

あなたに必要なものをつくる

非常に大事な考えだと思う
特に技術力がありパッと作って試せるのであれば尚更だと思う
そしてそれがビジネスにつながれば最高だ
ただ、一歩引いて考えるのもいいと思う
自分がほしいと思っているものをいきなり作らないで探してみると良いと思う
なぜなら大抵な場合はすでに誰かが作ってくれている時代だからだ
そしてそのアプリやツールを触ってみよう
サードパーティのアプリやツールを触ることはエンジニアにとって非常に大事なことだと思う
新しい発見やアイデアの発見につながると自分は考えている
なので、開発する以上とは言わないが既存のサービスやツールを試す機会も非常に大事だと思うので探すクセをつけておくと良いと思う
数分探してもないなら諦めて開発する方向にしよう

必要なものは思ったより少ない

書籍内ではお金に関わる項目を上げていたがそれ以外にも単純に「業務」や「会議」などもあると思う
そしてそれらの不必要だと判断したものたちを捨てるという行動こそが本当に重要だと思う

売却するつもりのビジネスは廃却されることになる

これは個人的にはありかなーと思う
最初から売却目的で行くというのは良くないと思うが最終的にもしくは成り行きで売却の方向に行くのはビジネス的にはありだと思う
ただ、自分が愛したサービスであれば話は別で売却の方向には持っていかないほうが良いと思う
逆にまた次に新しく初めたいアイデアなどがある状態であれば売ってしまって綺麗さっぱりゼロにしてから再スタートするというはありだと思う

進展

制約を受け入れる

ここは全体的なコンテキストからは少し矛盾を感じた
自分たちをあえて制約下に置くことが良い方向になるという主張だと思うが自分は制約は少なければ少ないほうが良いと思う
もしかしたら自分の「制約」の捉え方が若干違っていたのかもしれないが

副産物を売る

個人的にこの考え方は非常に好きな考え方である
何をやるにも無駄なことはないと思うことができる考え方だと思っている
人生無駄なことや辛いことは非常に多いと思うが何か副産物が生まれていると考えるだけで個人的には何とかやっていける
辛いことや無駄なことの「体験」だけでも副産物になると思う
少しポジティブすぎるかもしれないがこの考えを持つことは個人的にもおすすめしたい

生産性

邪魔が入る環境では生産性は上がらない

ひとりきりモードは時間で制約するのもいいが個人的には「行動」というか「儀式」を決めると良いと思う
要するにやる気スイッチ的なものを作るようにする
これをやったら、これを付けたら、これが終わったら必ずひとりきりモードになり集中して作業を進めるという感じ
というのも個人的な問題で時間だとどうしても決められた時間を設けることが難しいというケースが多いかなーと思っているだけです

会議は有害

「Outlook で 7 分の会議を設定した人は見たことがない」確かにと思った
ということは会議が有害に思われているのは Outlook などスケジュール管理ツールが 15 or 30 分単位でしか会議を入れられないことが原因だったりするのだろうか
たぶんそんなことは全くないと思うが
「会議」という言い方も良くないのだと思う
「会議」はダラダラとお話するイメージがそもそも付いてしまっている、なので会議ではなく「決断の場」として決めることだけ決めて解散する場にすれば少しは有意義になるかもしれない
まぁそれにしたとしても人を集めてお話する必要はまったくないと思いますが

小さな勝利を手に入れる

これも好きな考えです
ちょびちょび出して小さな成果が毎日得られるほうが最終的には良いものに繋がると考えています

あなたの見積もりは最悪だ

この次で多すぎる TODO について言及しているが、細かくタスクを分割して見積もると多すぎる TODO 問題に繋がってしまうのではと感じた
あとその後で述べている長いリストは終わらないという話にも繋がるが TODO はできるだけ細かく残したほうが良いと思う
長すぎると終わらないと指摘している点には同意だが終わらない場合は一定期間などで見直しをしてフラグなどを付与して一度クローズするようにすれば良いと思う
その場で長くなることを恐れてリストにしないと後で思い出せないこともあると思う (思い出せないくらいの重要さならやらなくても良いことだとは思うが)

競合相手

ケンカを売る

気持ちはわからなくはないがやりすぎは良くないと思うw
そしてこの後で「相手は気にしない」という結論になっているので結果ケンカも売らなくて良いんだと思う

競合相手以下のことしかしない

たぶん意味合いとしては「何事も上を目指していろいろと機能を追加すれば良いというわけではない、シンプルに行く路線もある」ということだと思う

進化

基本的に「ノー」と言おう

この章の中で「自分たちのサービスに顧客が満足しなければ競合他社を薦める」という説明がある
自分はその意見には賛成なのだが、実際営業の世界でその表現を聞いたことはほとんどない
思い返してみるとなぜだろうという気持ちになるが自分たちの製品ではなく他社の製品を薦めるということ自体冷静に考えればおかしなことである

プロモーション

特になし

人を雇う

まずは自分自身から

まず先に自分でやってみる習慣をつけることは非常に大事だと思う
コーディングするにもインフラを構築するにも結果的には一番始めにやっていた人が詳しくなる
詳しくなるし結局それがビジネスを進める上でも一番貴重な情報となると思う

経験年数は意味がない

「どれくらい質の高いことをしていたか」を定量的に計れる指標があると良いと思った
たとえば OSS の Contribute 数や公開しているアプリの数などだろうか

ダメージ・コントロール

文句は放っておく

当然だが障害レベルの文句はしっかりと対応するべき

文化

特になし

総括

Remote とのときもそうでしたが全体的には肯定する意見が多いです
というか Rework と Remote で内容が結構被っているなーと再認識しました

「こうするべきだ」「こうしたほうがいい」という言い回しがほとんどで、そこまでのやり方や道標がないのが少し残念な点かなと思います
まぁやり方なんて無いんだと思いますが、、、
大事なのはやり方ではなく現場一人一人の意識が変わらないと難しいと思います

2018年3月10日土曜日

The support page for "99Taps" Game App

common_icon.png

About this page

This page is supporting for “99Taps” game app.
If you have questions or found a bug, please contact me using Twitter or below the comment.

App URL

iOS 版・・・https://apple.co/2oXupSN

How to play

  1. Create new a room.
  2. Share room ID to other players.
  3. When you are ready tap the Ready button.
  4. Start the multiplayer’s game.

You try to tap enemies 99 times as quickly as anyone else.
By tapping the player’s number you can bother other player (8 times) !

Release Note

v1.4

I improved UXs in game.

  1. Target color changes when tapping.
  2. I increased the font of score and time.

v1.3

A new feature.

  1. You can join the random room from “Join” button.

v1.2

Three new features.

  1. You can receive push notifications when Random match starts.
  2. You can also toggle ON/OFF whether received push notifications.
  3. Sounds when the player joins the room.

v1.1

Five new features.

  1. Random match now available.
  2. Modified a logic of room creation.
  3. You can’t join a room during playing the game.
  4. During the game, the name label color will be changed according to the score.
  5. You can show the game history in chronological order.

v1.0

Released App !

2018年1月30日火曜日

2段階認証を設定した端末が破損したせいで Google アカウントがロックアウトされてしまった

概要

予期せぬことでメインで使っていた iPhone5 がぶっ壊れてしまい別のスマホに乗り換えようとしました
Google アカウントは 2 段階認証を設定しており 2 段階認証に Authenticator アプリを使っていました
iPhone5 が壊れてしまったせいで Authenticator アプリが起動できず 2 段階認証用のコードが取得できずログインできない状態になってしまいました
いろいろと試して何とか Google さんに 2 段階認証の機能を無効にしてもらえたのでその方法を紹介したいと思います

環境

  • iPhone5 + Google Authenticator アプリ

Google の設定

Google の 2 段階認証の設定はメインが Authenticator アプリにしていました
Google の場合 2 段階目の要素はいろいろとあり他には電話番号による SMS 認証やバックアップコードによる認証があります

自分の場合有効にしていたのが

  • Authenticator アプリによる認証
  • バックアップコードによる認証

の 2 つだけでした
しかもバックアップコードをちゃんとメモしておらず今回の状況に陥りました
なので本来であればバックアップコードをちゃんと取得しておけば問題なく 2 段階認証を通過できていたことになります

また、2 段階認証では使っていませんでしたが「電話番号」と「予備のメールアドレス」は設定している状態でした
結果的にこれが 2 段階認証を解除できた決めてになったかもしれません

どうやって 2 段階認証を解除したか

パスワード再設定リクエストを Google に送る

2 段階認証ができないのでログイン画面をいろいろと探していたら「その他の方法」というのがあり、そこから Google のサポートに問い合わせをしてログインできるようになる方法があったのでそれを使いました

内容としてはいろいろと本人確認するための質問をされます
それら質問に答えた後、数営業日後に Google から連絡がきて本人確認できれば無事解除という流れになります
質問される内容は人それぞれのようですが自分の場合以下の 3 つの質問をされました

  • セキュリティ保護用の質問の回答は?
  • Google のアカウント作成日は?
  • 再設定用のメールアドレスに送られた PIN コードは?

1 つ目は Google アカウントに謎の秘密のキーワードを設定していたようでカンで入れたら正解しました
2 つ目のアカウント作成日はまだ Gmail にログインできるセッションが残ったマシンあったので Gmail の一番初めのメールが届いた日付を入力しました
そして 3 つ目は Google アカウントに紐付いた予備のアドレスに 6 桁の PIN コードが送られそこに記載されているコードを入力しました

この 3 つの質問に答えて Google に問い合わせたのが 2018/1/28 で問い合わせが完了すると Gmail に「Google アカウントのパスワード再設定リクエスト」というメールが届きました
google_2auth1.png

当然ですがこの段階ではまだ 2 段階認証は解除されていません

連絡が届いてパスワードを再設定する

自分の場合 2 営業日後の夕方 2018/01/30 に以下のようなメールが Google から届きました
google_2auth2.png

ここのログインを選択するとパスワードを再設定する画面に遷移するので再設定しましょう
どうやらパスワードは必ず再設定しなければいけないようです
ここで注意が必要なのですがパスワードが変わるので Chrome など Google ログインしていたものが一度ログアウト状態になります
再度認証しないと使えないので注意してください

無事 2 段階認証解除

パスワードの変更に成功すると以下の画面になり 2 段階認証も解除されます
google_2auth3.png

最後に

メイン端末が壊れてしまい Authenticator アプリが起動できず Google でロックアウト状態になってしまいましたが何とかアカウントが復旧できたのでよかったです

Google の Authenticator アプリは 1 台の端末でしか有効にできないのが辛いなと思いました
別の iPhone がありそっちにも Authenticator アプリはインストールされていたのですがそっちに表示される PIN コードは使えない状態になっていました
メインを iPhone5 に変えそのときに Authenticator アプリもインストールしたのですがその段階で有効な Authenticator アプリは iPhone5 だけになってしまったようです

今回一番の失敗だったのはバックアップコードをメモしておかなかったことでした
これあればロックアウトにもならず問い合わせする必要もなかったと思います
あとは 2 段階認証の要素を SMS や予備アドレスでの認証も追加しておくべきかなと思いました
ただ、今回の場合、電話番号を持っている iPhone5 で SMS の受信もできない状態だったので SMS での 2 段階認証を有効にしていてもダメだったと思います

不幸中の幸いだったのは「セキュリティ保護用の質問」と「再設定用のメールアドレス」を設定していたことでした
前者は覚えていたのも幸いでした
おそらく今回の解除の決めては後者の方だと思います
ここに送られた PIN コードを問題なく入れらたので個人の特定ができ解除に至ったんだと思います

それにしても解除できて本当によかったです
皆様も 2 段階認証を使う場合は要注意です

2018年1月5日金曜日

「ぶたスラッシュ」アプリサポートページ

icon

概要

このページは「ぶたスラッシュ」アプリのサポートページです
機能改善、バグ報告、各種問い合わせはこちらのコメントまたは Twitter にてご連絡お願いします

アプリ

iOS 版・・・https://apple.co/2CHhVb4
Android 版・・・提供なし

リリースノート

v1.3

デフォルトでは音が出ないようにしました

v1.2

スプラッシュ画面がうまく表示されないバグを修正しました

v1.1

効果音を追加しました
ON/OFF できるのでアプリが思い場合は OFF にしてお楽しみください

v1.0

リリースしました

2017年12月16日土曜日

LINE スタンプを家族 Slack でも使えるようにしたお話

概要

先日「むすめちゃんスタンプス」という LINE スタンプを公開しました



せっかくスタンプを作成したのですが、前回の記事で紹介したように家族の連絡に LINE を使うのをやめてしまいました
これはもったいないと思い Slack でもスタンプが使えないかなと調べたところ微妙なやり方ですができそうだったのでそのやり方を紹介したいと思います

仕組み

やり方は正直たくさんあると思います
ググってみると同じような内容の記事がいろいろと出てくると思います

今回紹介するのはボットを使う方法です
と言っても大元の機能は Slack にある画像の URL を投稿するとその画像を取得してチャネルに流してくれるという機能を使います
察しの言い方はもうだいたい仕組みがわかると思います

今回の構成は以下の通りです
line_stickers_to_slack1.png

ボットをコマンド形式にする場合 @bot help みたいな感じでボットを呼び出しますが、それだとスタンプを呼ぶのに少し面倒なのである特定の自然言語でコメントするとそのコメントにあった画像のスタンプを投稿する感じにしています
Slack の API はイベント API を使いメッセージの受信のイベントをハンドリングします

ボットは今回 Ruby で作成しました
Slack には Hubot Apps があるので Hubot を使って簡単に作成することもできますが、Ruby が好きなので Ruby で作成しました
あとはそれを Heroku 上で動かします

スタンプ画像をどうやって公開するか

これが一番悩んだかもしれません
Slack に画像の URL を投稿する場合はその URL はパブリックな URL でなければなりません
なので認証がかかっていたり、アクセスできないネットワーク上にある画像では Slack 上に表示することができません

とは言えば自分でサーバを立ててスタンプ画像だけを配信するのも大げさかな、、、
ボットを Heroku 上で動かすのでそのボット上で画像の配信を行ってもよかったのですがボットと画像配信用の Web アプリを同居させるのが面倒くさそうでやめました

で、最終的な結論は imgur にしました
無料で使えて画像への直リンクも取得可能です
また、URL が短いのも魅力でした
Slack に画像の URL をボットが投稿したときに異様に長いとスタンプっぽさがなくなってしまいます

imgur にはアルバムレベルで限定公開できる機能もあるの今回はそれを使って画像をホスティングしてます

ボットを作成する

あとは imgur でホスティングした画像の URL を Slack にポストするボットを作成すれば OK です
今回はコマンドベースではなく自然言語を特定してマッチした場合に imgur の画像 URL を Slack 上にポストします
なので、イベント API を使って message イベントに反応するボットを作成します

一から API をコールしても良いですが Ruby で Slack ボットを作成するための slack-ruby-bot というライブラリがあるのでこれを素直に使います

コードは以下の通りです

  • vim bot.rb
require 'slack-ruby-bot'
require 'json'
SlackRubyBot::Client.logger.level = Logger::WARN

class Bot
  def initialize
    @answer = JSON.parse(File.read('./answer.json'))
  end
  def call(client, data)
    client.say(text: @answer.keys.join(", "), channel: data.channel) if data.text == "へるぷ"
    client.say(text: @answer[data.text], channel: data.channel) if @answer.has_key?(data.text)
  end
end

server = SlackRubyBot::Server.new(
  token: ENV["TOKEN"],
  hook_handlers: {
    message: Bot.new
  }
)
server.run

非常にシンプルに書けるのがうれしいです
別途 answer.json という自然言語と画像の URL を紐付ける設定ファイルを用意しましょう

  • vim answer.json
{
  "えっへん": "https://i.imgur.com/I5OjXAn.png"
}

こんな感じです
これをスタンプ 40 個分追加していきます
エイリアス的なの張りたいのであれば同じ URL に対して別のキーワードを紐付けてあげれば OK です
今回はおまけで「へるぷ」という文字列が来たときには json に記載されているキーワードの一覧を表示するようにしてみました

あとは Procfile なり、Dockerfile なりを準備して Heroku への push or container:push をすれば OK です
Procfile の場合は Web アプリではないので push 後に heroku ps:scale bot=1 的なことをしてあげましょう

ボットが起動したら忘れずに環境変数でトークンを設定してあげましょう

  • heroku config set TOKEN=xoxb-222222222222-xxxxxxxxxxxxxxxxxxxxxxxx

動作確認

Heroku 上にデプロイできたらボットと会話してみましょう
こんな感じで画像 (スタンプ) が表示されれば OK です
line_stickers_to_slack2.gif

問題点

実は今回の方法には大きな欠点があります
それは同じ画像 URL が連投されると Slack さんがその画像を展開してくれないという点です

今回、画像のホスティングに imgur を使ったので URL を変更するのは結構大変なので回避する方法はありません
適当に文字をコメントしてから再度ボットから画像を取得するようにしてください

うーん、やってしまった、、、ごめんなさい

最後に

自作 LINE スタンプを作ったので Slack 上でも使えるようにしてみました
欠点ありですが、個人で使う分にはこのレベルで十分かなと思います
無料ですし簡単な技術しか使っていないので

ついでに宣伝ですが LINE スタンプ出してるのでよろしくお願いします