人生初のメカニカルキーボードを買いました

人生初のメカニカルキーボードを買いました(1ヶ月前に)。 ずっとブログに書こう書こうと思っていたんですが、 書きなれていないものでなかなか書き始められずにこんなに間が空いてしまいました。 今後はこういう日記みたいなのも少し書いていけたらなと思っています。

きっかけは今のアルバイト先の先輩方が皆さんいろんなキーボードを使っていて、 自分は会社で支給されたMacbookのキーボードを使っているなかで、 「自分も良いキーボード使ってみたいなー」ってぼんやり思っていたときに隣の席の先輩が使っていないキーボードを貸してくださったことでした。 少し使っただけで今までに感じたことがないくらい「キーボードに触るのが楽しい」気持ちになったのでそのままの勢いでマイキーボードを購入しました。

買ったのは先輩に貸していただいたものと同じ「Majestouch MINILA Air」の「黒軸」です。 f:id:andooown:20180720000607j:plain いろいろキーボードについて調べた今でこそFnキーの配置とかが特殊なキーボードなんだとわかりますが、 そこまで違和感もなく使えています。 これを買ったのとほぼ同時に、家で使う用に別の先輩からMINILAの有線モデルを安く譲っていただきました。 こちらも今家で活躍しています。

一つキーボードを買うと色々欲しくなってくるもので、 今はキーキャップをいろいろ調べて見た目が気に入ったものをAliExpressで注文して届くのを今か今かと楽しみにしています。 まあ実際明日届くのですが.....(ブログに書くのが遅すぎた)

キーボードに対する出費のペースが少し心配ですが、いろいろ楽しんでいきたいです。 今はPockerクローンなどの自作の60%キーボードをいろいろ調べています (流石に作るのは社会人になってお金の余裕ができてから......のハズ)

zshの環境をoh-my-zshからPreztoに乗り換える

今までzshの環境構築には導入したときに何気なく入れたoh-my-zshを使っていました。しかし、最近になってなんとなく動作がもっさりしてきたので、oh-my-zshをアンインストールし、oh-my-zshに比べシンプルだというPreztoを導入してみます。

oh-my-zshのアンインストール

oh-my-zshリポジトリのREADMEに書いてある通りにコマンドを実行します。

$ uninstall_oh_my_zsh

ターミナルを再起動すると、zshではなく標準のシェル(Macではbash)が立ち上がるようになっていると思います。

そしたら、zshの設定ファイル(~/.zshrcなど)からoh-my-zshに関する項目を削除します。

ここは人によって異なると思いますが、自分の環境だとexport ZSH=$HOME/.oh-my-zshとかsource $ZSH/oh-my-zsh.shあたりを削除しました。ここらへんしっかりやりたい人は一から設定ファイルを書いてもいいと思います。自分はめんどくさかったので使いまわしました。

Preztoのインストール

これもPreztoのリポジトリのREADMEに従ってやっていきます。

まず現在はbashあたりが起動していると思うので、zshを起動します。

$ zsh

次にPreztoのリポジトリをクローンします。

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

これでホームディレクトリの~/.zpreztoにクローンされました。

次に設定ファイルを作成するのですが、その前に既存の設定ファイルをバックアップしたい方は以下のコマンドでzsh-backupディレクトリにバックアップできます。自分は念のためバックアップしました。

$ mkdir zsh-backup
$ mv zshmv .zlogin .zlogout .zprofile .zshenv .zshrc zsh-backup/

そもそも存在しないファイルがある場合はエラーが出ますが当たり前なので気にしなくて大丈夫です。

そしたら、以下のコマンドで設定ファイルを作成します。

$ setopt EXTENDED_GLOB
$ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
    ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
  done

すると以下のようにホームディレクトリ幾つかの設定ファイルのリンクが貼られていると思います。

$ ls -al
lrwxr-xr-x     1 user  staff      35  2 20 15:20 .zlogin -> /Users/user/.zprezto/runcoms/zlogin
lrwxr-xr-x     1 user  staff      36  2 20 15:20 .zlogout -> /Users/user/.zprezto/runcoms/zlogout
lrwxr-xr-x     1 user  staff      38  2 20 15:20 .zpreztorc -> /Users/user/.zprezto/runcoms/zpreztorc
lrwxr-xr-x     1 user  staff      37  2 20 15:20 .zprofile -> /Users/user/.zprezto/runcoms/zprofile
lrwxr-xr-x     1 user  staff      35  2 20 15:20 .zshenv -> /Users/user/.zprezto/runcoms/zshenv
lrwxr-xr-x     1 user  staff      34  2 20 15:20 .zshrc -> /Users/user/.zprezto/runcoms/zshrc

最後にデフォルトのシェルをzshにします。

$ chsh -s /bin/zsh

これでターミナルを再起動するとテーマが適用されたzshが起動すると思います。 f:id:andooown:20180220170853p:plain

Preztoのアップデート

インストールしたときは最新のPreztoが導入されますが、この先のアップデートは手動で行う必要があります。 アップデートは以下のコマンドで行うことができます。

$ cd $ZPREZTODIR
$ git pull
$ git submodule update --init --recursive

追記(2018/2/20)

zshのテーマをPowerlineにしようとしたらフォントの導入でハマったので追記します。

Preztoのテーマの一覧

Preztoではprompt -pでテーマの一覧を見ることができます。 f:id:andooown:20180221001041p:plain

Preztoのテーマの変更

そしてテーマを変更するときは~/.zpreztorcに以下のように書きます。 (デフォルトの設定ファイルではすでにテーマが指定されてるのでそれを書き換える)

zstyle ':prezto:module:prompt' theme 'テーマ名'
# 例
# zstyle ':prezto:module:prompt' theme 'powerline'

その後テーマファイルを~/.zprezto/modules/prompt/functions/に配置します。

$ curl https://raw.github.com/davidjrice/prezto_powerline/master/prompt_powerline_setup > ~/.zprezto/modules/prompt/functions/prompt_powerline_setup

しかし、上記の例のようにPowerlineのテーマを適用して、ターミナルを再起動すると、フォントがうまく表示されず画像のようになると思います。 f:id:andooown:20180221000541p:plain これはPowerline用のフォントがインストール・適用されていないのが原因です。

フォントのインストール・適用

Powerline fontsをクローンなりダウンロードなりして、その中のinstall.shを実行してください。 これでフォントがインストールされます。

その後、ターミナルの設定のフォントをPowerline用のフォントに変更すると、Powerlineテーマが使えるようになります。 (自分はAnonymice Powerlineを選択しました) f:id:andooown:20180221002140p:plain

参考

機械学習を使ってTwitterのアイコンから陽キャ・陰キャを診断するWebサービスを制作しました

今流行の機械学習を使ってTwitterのアイコンなどから陽キャ・陰キャを診断するWebサービスtwitter-icon-classifier」を制作しました。

https://twitter-icon-classifier.andooown.com/

ぜひご利用ください。

使い方

TwitterのIDでアイコン画像を検索するか、直接画像をアップロードして診断ができます。

f:id:andooown:20171107151303p:plain

機械学習について

現在使用しているモデルは6層の畳み込み層を持ったCNNで、プログラム自体はKerasで作成しました。

f:id:andooown:20171107150410p:plain

学習用の画像はTwitterから取得し、陽キャ・陰キャともに40000枚の合計80000枚を用意しました。 それを訓練用に64000枚、テスト用に16000枚使用しています。

なお、陽キャ・陰キャの分類については完全に個人的なものなので、このWebサービスは実質「(私の価値観で)Twitterのアイコンから陽キャ・陰キャを診断するWebサービス」になっていますが、ご了承ください。

今のところ精度はあまり高くありませんが、今後は

  • 学習データのノイズ除去
  • モデルの改善
  • ハイパーパラメータの改善

を考えています。 精度が向上し次第、逐次サービスに反映していきたいと思います。

「診断ビューアー」をアップデートしました

自作アプリ「診断ビューアー」をバージョン2.0.5にアップデートしました。

アップデート内容

2.0.5

  • 診断が読み込めない不具合の修正

ダウンロード

「診断ビューアー」をアップデートしました

自作アプリ「診断ビューアー」をバージョン2.0.4にアップデートしました。

アップデート内容

2.0.4

  • 診断が読み込めない不具合の修正

ダウンロード

「診断ビューアー」をアップデートしました

自作アプリ「診断ビューアー」をバージョン2.0.3にアップデートしました。

アップデート内容

2.0.3

  • 読み込み速度の改善
  • チャート系診断の結果が表示されない不具合の修正
  • 設定が適切に保存されない問題の修正

ダウンロード

個人でアプリ開発をして初めての収益を得てみて

Qiitaに投稿したものと内容は同じです。

個人でアプリ開発をして初めての収益を得てみて - Qiita

初めての収益

私は個人で開発しているアプリには広告としてGoogleAdsense(Admob)を利用しています。 先日、そのAdsenseの累計の収益が初めて支払い基準額である¥8,000を超えました。

f:id:andooown:20170320223805p:plain

Adsenseのヘルプによると、来月には収益が振り込まれるようです。

これまでの収支

私はUnityXamarinを利用して、iOSAndroid両対応のクロスプラットフォームアプリを開発してきました。 そのため、アプリの配布のためにそれぞれのプラットフォームのアプリストア(App StoreGoogle Play Store)の開発者登録を行っています。

Google Play Storeの開発者登録は$25(当時のレートで¥2,908でした)で永久に有効でしたが、 App Storeの開発者登録は¥11,800[税別]で1年間のみ有効**なのです。

開発者登録以外には、何本かサーバと連携するアプリを開発する際に、VPSを利用したため、VPSの利用料金が今までで¥3,000ほどかかっています。

Unityの有料アセット等は利用せずに開発を行ってきたため、支出としてはこれくらいだと思います。

それぞれの開発者登録を行ったのが2016年の3月なので、2017年3月現在の収支をまとめると以下のようになります。

内容 金額
開発者登録(App Store) -¥12,744
開発者登録(Google Play Store) -¥2,908
VPSの利用料金 -¥3,000
Adsenseの収益 ¥8,000
合計 -¥10,652

…..はい。¥10,652の赤字となりました。

しかし、この部分だけを見て「個人でのアプリ開発は儲からない」とは思わないで下さい。 私がこれだけの赤字になったのには理由があると思っています。 それを以下で書いていきます。

※なお、以下は収益のみを考えた場合の話です。 個人開発で得られる経験はお金に変えがたいものなので、 儲からないという理由だけでやめるべきではないと思います。

考察

1. リリースしたアプリの本数が少ない

私がこの1年間でリリースしたアプリの数はたったの3本でした。 これは個人開発者の中でも非常に少ないと思います。

ちなみに内訳はゲーム1本とツール的なアプリが2本で、 主な収益はツール的なアプリ1本です。今までの収益の半分以上がこの1本のアプリによるものです。

このことから思うに、個人開発者においてはとりあえず沢山のアプリを作り、 少しでも伸びそうな兆候があったアプリに時間をかけ、育てていくのがいいと思いました。

2. アップデートは収益増加のチャンス

上であげたメインの収益となっているアプリについてですが、 3月に入り大学が春休みになったため、時間をかけてUIの大幅な改善やバグ修正等のアップデートを3回行いました。 その結果、普段はひと月に¥300〜500ほどの収益のところ、3月は現時点までで普段の2倍以上の収益を得ることができました。

これについては、ストアのアプリを起動し、アップデートにアプリが表示されることでユーザーの目に触れ、起動回数が増えることが主な原因だと思われます。 一般的なアプリの広告形式であるバナー広告については、やはり起動回数(表示回数)が命となります。 緊急のバグ修正等でない限り、定期的に(ある程度期間を空けることも重要)アップデートを行うことで、収益の増加につなげることができそうです。

3. 個人レベルではVPSは不向き

これは私の場合のみかもしれませんが、個人レベルのアプリではVPSを使ってバックエンドを用意するのは不向きだと感じました。 理由は単純に利用料金が収益に釣り合わないからです。

私の場合は、アプリのコンテンツをサーバから配信するためにVPSを利用しましたが、 個人レベルであればまずアプリにコンテンツを組み込み、バックエンドを利用しないことを考えるべきです。 また、リアルタイムにコンテンツの配信を行いたい等の理由でバックエンドを用意するのであれば、 毎月無料枠のあるAWSを利用したり、その他のmBaaSを利用したりするべきです。 無料枠のない(お試し期間があるものはあります)VPSでは時間課金となってしまうため、アクセスの少ない個人のアプリでは赤字となってしまうことが多いでしょう。

実際に私の場合、1本のアプリはアプリ内にコンテンツを組み込み、もう1本のアプリはAWSやAzureのmBaasを利用する形に変更することでVPS利用をゼロにすることができました。 また、mBaaSについても、無料枠内で全部完結することができています。

個人レベルでは負荷を考えて予めリソースを用意するより、 最低限で運用して、足りなくなったところにリソースを増やすという運用の方が向いていると思います。 (個人レベルではダウンタイム0とかより改善のほうに時間をかけるべき)

最後に

宣伝の不足などまだまだ思い当たるところはありますが、とりあえずまとめると、

個人開発では

  1. たくさんのアプリを作るべし
  2. 伸びそうなものに時間をかけて、定期的にアップデートすべし
  3. 削ることができる支出はとことん削るべし
  4. 最低限で運用すべし。足りなくなってから考えるべし。

以上が簡単ではありますが、アプリの個人開発を続けてきて、 一段落した私の思うところです。

なお、これらのことは収益のみを考えた場合の話です。 私自身は実際には、お小遣いが稼げたらいいなとは思っていますが、 赤字になろうとも勉強のための個人開発なので、あまり気にしていません。 実際に個人開発をしてきた上で得た、XamarinやC#に関する経験や、Unityに触れることで得たゲーム開発の経験、 また作ったアプリを実際に配信することで得た経験は非常に大きかったです。 これからも個人開発が出来る限り、続けていこうと思います。