アプリの売上目標を立てるのをやめました

Imported-from-Medium

アプリの売上目標を立てるのをやめました

アプリの売上目標を立てるのをやめました お金は短期的なモチベにしかならない / 「より大きく」ではなく「より良く」を目指す / 足るを知る / 人生は一度きりだから開き直る English version is available here. どうもTAKUYAです。InkdropというMarkdownノートアプリを作って、今は運良くそれで生活が出来ています。1,300人の課金ユーザがおり、コンスタントに成長しています。つまり、僕は拙作アプリで食うという念願の目標を達成しました。総売上は1,000万円を既に超えました。1,000人の顧客を抱えていれば、生活費を賄うための心配をしなくて済みます。さらに、旅行に行ったり自己投資する余裕すらあります。とても幸せです。 しかしながら、それは僕がもう開発を頑張らなくていいという意味ではありません。アプリは引き続きメンテしていく必要があるからです。解決すべき問題や、改良すべき機能は常に山積みです。サーバが落ちていてはユーザは速やかに使うのをやめてしまうでしょう。ロードマップを公開して、僕が今後どんな改善に取り組むのかを宣言しました。顧客

By Takuya Matsuyama
Stripeで増税対応する方法

Imported-from-Medium

Stripeで増税対応する方法

Stripeで増税対応する方法 どうもTAKUYAです。2019年10月1日から日本の消費税が8%から10%に変更された。一般的なウェブサービスの利用料は軽減税率の適応外のため、消費税は10%となる。拙作アプリInkdropでは課金にStripeを使用している。このStripeではこの対応をどうやって行うのか、備忘録も兼ねて書いておく。 Tax Ratesオブジェクトの管理 Stripeでは最近tax ratesという項目が追加された。これまで tax_rates というフィールドを個別の請求やサブスクに指定していたが、今後はあらかじめ作成したTax RatesのIDを指定する。以下が移行に関するドキュメント。中の人のSamantha氏がわざわざメールで教えてくれた。 Migrating to TaxRate and TaxID | Stripe BillingMoving from tax_percent to Tax Rates, and tax_info, tax_info_verification, and business_vat_id to Customer Ta

By Takuya Matsuyama
外付けSSDを使ったらVMWareの動作速度が飛躍した

Imported-from-Medium

外付けSSDを使ったらVMWareの動作速度が飛躍した

外付けSSDを使ったらVMWareの動作速度が飛躍した Fusion DriveはVMを動かすのに向いていない。SSDを買おう。 どうもTAKUYAです。拙作のInkdropというノートアプリでは、Windows版・Linux版をビルドするためにmacOS上でVMWareを使用しています。しかし、特にWindowsのバーチャルマシンが死ぬほど重いという問題がありました。何かするたびにマウスポインタが砂時計になり、ほとんど使い物になりませんでした。 なのでこれまではAWSのEC2でWindowsインスタンス(m5.large)を利用してビルドしていました。でもこの方法だとビルドの際に毎回インスタンスを起動・終了する必要がありますし、たまに終了し忘れたりしました。EC2のコストは時間単位でかかる($0.124/h)ので、落ち着いて使用できないという問題もあり、とてもストレスフルでした。 VMWareのパフォーマンスを解決するために、ネットで見つかる様々な方法を試しましたが、微妙か全然効果が無いものばかりでした。設定をいじくるだけでは解決できないと諦めました。原因はI/Oの遅さという

By Takuya Matsuyama
よいDXに向けてRecomposeのHOCをReact Hooksに置き換える

Imported-from-Medium

よいDXに向けてRecomposeのHOCをReact Hooksに置き換える

よいDXに向けてRecomposeのHOCをReact Hooksに置き換える English version is here. どうもTAKUYAです。InkdropというMarkdownノートアプリを1人で作っています。そのモバイル版はReact Nativeで組まれています。最近コードベースをリファクタリングして、RecomposeからReact Hooksに乗り換えました。本稿ではその作業の際に発見したコツなどをシェアしたいと思います。 HOC多用はメンテナンス性が低くなる RecomposeとはHOC(Higher-order components)で効率よくStateless functional componentsベースのReactアプリを組むための便利関数ライブラリです。作者はAndrew Clarkです。例えるなら、React版Lodashみたいな感じです。このライブラリの開発は2018年12月4日を最後に止まっています。なぜなら彼がReactのチームに参加したからです。そしてReact HooksがReact v16.8にて導入されました。 彼らが言う

By Takuya Matsuyama
Inkdrop のロードマップ vol.4

Imported-from-Medium

Inkdrop のロードマップ vol.4

Inkdrop のロードマップ vol.4 エクスポート機能の強化、ノートブックのプロジェクトライクな動作、モバイル版のプラグイン対応など 更新: 新しいロードマップはこちら English version is available here. どうもTAKUYAです。 Inkdropはクロスプラットフォームで同期するMarkdown専用ノートアプリです。つい先日までvol.3のロードマップに取り組んでいましたが、ついに完走しました🎉 今僕らは、より永く続く開発に向けてモダンなライブラリを使ってイチから作り直したv4を手にしました。 (v4の新しい点についてもしまだご存じない方は、こちらを参照ください) この取り組みが本プロジェクトの継続性を高める大事なステップになると僕は信じています。このv4のローンチに併せてウェブサイトをリデザインしたのですが、この作業はアプリのコンセプトについて見つめ直すいい機会になりました。ですので、ロードマップの話に入る前に、まずは本アプリのコンセプトについて改めてお話したいと思います。どうぞお付き合いください。 Inkdropの課金ユーザが

By Takuya Matsuyama
1人でデスクトップとモバイル両方で動いて同期するアプリをどうやって作ったか

Imported-from-Medium

1人でデスクトップとモバイル両方で動いて同期するアプリをどうやって作ったか

1人でデスクトップとモバイル両対応でデータ同期するアプリをどうやって作ったか 5プラットフォームで動くSaaSを個人で開発するためにやったこと こんにちは、個人アプリ作家のTAKUYAです。InkdropというクロスプラットフォームなMarkdownノートアプリを1人で開発しています。このアプリはmacOS、Linux、Windows、Android、iOSで動作します。ご存知かもしれませんが、この5プラットフォームにアプリを対応させるのは簡単ではありません。しかしながらパワフルなフレームワークを活用すれば、それも不可能ではありません。それらに頼るだけでなく、プロジェクトを持続可能に保つための開発戦略も必要となります。本記事では、僕がこれまでどのようにして開発して来たのかシェアしたいと思います。 あなたは1人で開発しているのではない クロスプラットフォームなアプリの開発は、往々にして多くの予測不能かつ再現不能な問題を伴います。自分の環境では正しく動いていた機能が、他の環境では思うように動かない。例えば、最近僕もそういう問題を経験しましたが、それは起動直後にアプリの画面が空白に

By Takuya Matsuyama
Stripe外からアプリの支払いを受け取った時の対処手順

Imported-from-Medium

Stripe外からアプリの支払いを受け取った時の対処手順

Stripe外からアプリの支払いを受け取った時の対処手順 カード決済の失敗理由は基本的に分からない/信用コストは自分で払う必要がある/根本解決は事業者としての信用を高める事 どうも、個人アプリ作家のTAKUYAです。サブスク制のサービスを、カード決済プラットフォーム「Stripe」を使って組んでいます。基本的に支払いはクレジットカードとデビットカードのみ受け付けています。しかしながら、そのカード決済がどうしてもうまく行かないケースがごく稀にあります。その時、例外的にPayPal経由で支払ってもらうようにしています。本稿ではその際の管理手順について、自分用の備忘録も兼ねて解説したいと思います。 カード決済の失敗理由は基本的に分からない クレジットカード決済は様々な理由でdecline(拒否)されます。体感的には全体の10%ぐらいが失敗しているように見えます。declineされるポイントは2つです: * カード登録時 * 決済実行時 失敗理由は実に様々で、StripeのドキュメントにDecline Code一覧が記されています。 Bank Decline Codes |

By Takuya Matsuyama
tmuxとvimによる開発作業フロー (動画)

Imported-from-Medium

tmuxとvimによる開発作業フロー (動画)

tmuxとvimによる開発作業フロー (動画) どうもTAKUYAです。今回の動画では、僕は普段Inkdropをどのように開発しているのかを一部ご紹介したいと思います。あなたの開発ワークフロー改善の参考になれば幸いです。 以降は、動画内でご紹介した設定を掲載します。 tmuxの設定 プリフィックスをC-tに変更 set-option -g prefix C-t vimライクなペインの移動 bind -r k select-pane -U bind -r j select-pane -D bind -r h select-pane -L bind -r l select-pane -R 'ide'スクリプト #!/bin/bash tmux split-window -v -p 30 tmux split-window -h -p

By Takuya Matsuyama
アプリの新バージョンのローンチをどうやって成功させたか

Imported-from-Medium

アプリの新バージョンのローンチをどうやって成功させたか

アプリの新バージョンのローンチをどうやって成功させたか あらかじめ観衆を作り上げる、推薦文をお願いする、パワフルなランディングページを作る、Hacker Newsのコミュニティには自然体で正直に接しよう こんにちは、TAKUYAです。このブログは僕の個人開発の経験をシェアする場所です。最近、1人で開発しているInkdropというMarkdownノートアプリの新バージョンをリリースしました: Introducing Inkdrop 4End-to-end Encryption Support, Smart Scroll Sync for Side-by-side View, New Logo, and More.blog.inkdrop.info みなさんのお陰で、たくさんの人が記事を読みに来て、アプリに登録して頂くことが出来ました。こうして良い結果を残して、7ヶ月の取り組みに区切りを付けることが出来たのはとても嬉しいです。次の取り組みに移る前に、今回のローンチをどのようにして成功させたかシェアしたいと思います。何を考えて何を行ったか具体的に説明していきます。 アナウンスから

By Takuya Matsuyama
Inkdrop のロードマップ vol.3

Imported-from-Medium

Inkdrop のロードマップ vol.3

Inkdrop のロードマップ vol.3 今後予定している抜本的改善や新しい機能など この記事は “The Roadmap of Inkdrop vol.3” の日本語訳です。 こんにちは、TAKUYAです。MarkdownノートアプリInkdropを一人で開発運営しています。 最近、前回のロードマップのタスクをすべて完了しました。 モバイル版の再構築など、なかなかにハードな道のりでした。モバイル版はそのお陰でノートの閲覧や編集がとても快適に使えるようになりました。気に入って下さっているようでとても嬉しいです。ちなみに、その開発で得た知見はこちらの記事にまとめましたのでよろしければ御覧ください。React Nativeの開発に役立つと思います。 そして、ロードマップには無かったのですが、同期機能に関して重要なアップデートがありました。それはコンフリクトしたノートの自動コピーです。最も最悪なユーザ体験はノートのデータが失われることです。この改善によってより安心してアプリが使えるようになりました。この機能のバグ修正に熱心に協力してくださったOtawaraさんやMeoさんに感謝

By Takuya Matsuyama
Inkdrop v4 プライベートβ公開のお知らせ

Imported-from-Medium

Inkdrop v4 プライベートβ公開のお知らせ

Inkdrop v4 プライベートβ公開のお知らせ コア機能の大幅な改善: エンドツーエンド暗号化・より使いやすい検索UI・スマートスクロール同期機能など 英語の元記事はこちら こんにちは、TAKUYAです。 Inkdropは強力なMarkdownエディタと端末間データ同期機能を備えたノートアプリです。お陰様で1,000人近いユーザの方が購読してくださり、本プロジェクトは無事3年目を迎えました!🥳 そして本日、素敵なニュースがあります。 約半年前、ロードマップ(vol.3)で説明した通り、アプリに抜本的改善を施すために再構築することを決断しました。モバイル版の再構築には6ヶ月を要しましたが、今回も同じく7ヶ月かかりました。長い旅でした。多くの作業を経て、ようやくプライベートβの公開に漕ぎ着けました。まだ改善の余地はありますが、リリースしたいと思います。課金ユーザの皆様はこちらからテストに参加できます。正直言うと、長い期間アプリを更新しないことで多くのユーザ離脱が発生するのではないかと怖かったです。大変おまたせしました。ご意見お待ちしています。 では、Inkdrop v4の

By Takuya Matsuyama
一人でも出来る!ユーザを引き寄せるためのブログ術

Imported-from-Medium

一人でも出来る!ユーザを引き寄せるためのブログ術

一人でも出来る!ユーザを引き寄せるためのブログ術 ブログで人を喜ばせる。そのために工夫したこと。 元記事: My Blogging Tips to Attract Users for Your Niche Product こんにちは、TAKUYAです。個人で作っているMarkdownノートアプリInkdropの課金ユーザは、お陰さまでもうすぐ1,000人に到達しそうです。こちらは最近の売上の推移です: ほとんどのユーザは僕のブログでアプリの事を知っています。本稿では、僕がブログで集客のために工夫している点をシェアしたいと思います。もしあなたが丁度プロダクトを立ち上げようとしていたり、既にアプリを走らせているなら、きっと参考になると思います。 Inkdropはその集客をApp StoreやGoogle Play Storeなど特定のプラットフォームに依存していません。つまり自分で集客する必要がありました。でも広告は嫌いなので頼りたくありません。それがブログを書き始めた理由です。僕は今2つのブログを運営しています: 英語ブログ「Dev As Life」と本ブログ「週休7日で働きた

By Takuya Matsuyama