できる犬さんMarkdownエディタを一人で作りながらフリーランスをしています。今月(11月)の売上は18万円を超えました。順調に伸びていて嬉しい。毎日楽しいです。 個人開発はスピードが全てです。残業代もがんばった賞も出ないからです。一人何役もこなさないといけないので、作業のスイッチングコストが常につきまといます。設計してコードを書いてユーザサポートをしてマーケティングして・・。ましてや本業などがあると、プロジェクト単位で脳を切り替える必要もあります。 プロになってから約8年、常に本業と並行して何かしらの個人開発を続けて来ました。そして、このスイッチングコストをどうすれば最小限に抑えられるかという課題と向き合ってきました。自分で言うのも何ですがかなり速いと思います。例えば、先日ユーザさんから機能要望を受けたのですが、書き込みを見て2時間で対応してリリースしました。そしたらユーザさんが「速す
Hi, I am Hao (👋): a coder, a woodworker, a blogger, and a father. Markdown apps like StackEdit and MacDown have a feature called sync-scroll. It means that when the user is scrolling the editor, the previewer will also be scrolled based on the position of the editor. It is a really useful function because I can always see how it looks like in the real web page, so I want this function in my own M
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 個人的に気に入っているboilerplateを紹介します。 それは、iam4x/isomorphic-flux-boilerplate: ES7 Isomorphic Flux/ReactJS Boilerplateです。 Boilerplateとは これはスターターキットと呼ばれたりするもので、必要な道具が一式揃った空っぽのプロジェクトのことです。 React.jsはRuby on Railsのような全部入りフレームワークではありませんので、適宜他のモジュールと組み合わせて使う必要があります。 「どれをどのように組み合わせればよいか」という悩みや失敗をあらかじめ解決しておきましたよ、というのがB
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. FinderやエクスプローラなどからElectronアプリケーションにファイルをドラッグ&ドロップする操作を実現する方法について説明する。 すごく簡単。 まず以下のようにデフォルトの挙動をキャンセルする。 document.ondragover = document.ondrop = function (e) { e.preventDefault() } 次に任意のDOMにdropイベントリスナを登録する。 document.body.addEventListener('drop', function (e) { console.log('file dropped:', e.dataTransfe
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 軽量でPluggableなJS製Markdownパーサ&レンダラのMarkdown-It。 例えばaタグは全てtarget="_blank"にしたいなどの要求を実現するにはレンダラの処理を一部変更する必要がある。 その変更方法について説明する。 md.renderer.rulesを書き換える 以下のようにlink_openという名前のルールを書き換えることで、target="_blank"をデフォルトに出来る。 const md = new MarkdownIt() // Remember old renderer, if overriden, or proxy to default render
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. Electronはデスクトップアプリであり、Cookieは使えない。 しかし認証情報をファイルに保存するわけにはいかない。 適切な保管場所は、macOSならKeychain、LinuxならKeyring、WindowsならCredential Vaultだろう。 これらプラットフォームに合わせた方法で保存できるモジュールを紹介する。 node-keytar node-keytarは、atom製のキーチェーン管理モジュール。 プラットフォームの違いを意識せずに機密情報を読み書きできる。 import keytar from 'keytar' keytar.addPassword('service',
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. この記事は前回のつづきで、「Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application」という本を紹介する。 著者は37signals社という、BasecampやRuby on Railsを開発した有名な会社。 無料で日本語訳版が読めるのでぜひ。 前回は次のような教訓について紹介した: 自分が欲しいと思ったものを作れ 「より少ない」ことは良いこと 機能要望は忘れろ 引き続き同著にて個人的に重要だと思った気付きを紹介していく。 ※引用項は、特に断りのない限り同著からのものとする。 リーダーを追
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 今回は「Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application」という本を紹介したい。 これは2011年に発売された、ウェブアプリを成功させるための方法論の本。 37signals社という、BasecampやRuby on Railsを開発した有名な会社が書いた。 5年前の本とはいえ、技術依存の話はほとんど無いので現在でも充分すぎるほど通用する内容。 この本を読んで、特に共感したり大事だと思った箇所を紹介する。 ※引用項は、特に断りのない限り同著からのものとする。 タダで手に入る 残念な
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. プログラマーの人に便利なツールを紹介します。 毎日のコーディング作業、実際どれぐらいの時間やったかなんてあやふやですよね? ミーティングの時間や休憩時間、ちょっとダラダラしてしまった時間などを差し引いて記録するのは結構大変です。 でもWakaTimeなら、自動で作業時間を記録してくれるのです! しかも、エディタや言語やプロジェクト別の内訳も分かっちゃいます。 僕はこのWakaTimeをもう数ヶ月使っていますが、たまーに見て「あーがんばってるな」とか自己満足しています。笑 こちらが僕の直近1週間のデータです。 Coding Activityが、日ごとの作業時間のグラフです。 なんか・・作業時間に波が
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 自分はOmniFocusっていうToDo管理ツールで進捗やタスクを管理しています。 でも最近PivotalTrackerが便利で、これに乗り換えてみようかなって思っているので紹介したいと思います。 OmniFocusはタスクを階層構造に整理出来るのが便利で使っています。 「Omni」の名のつく通り、これはToDoアプリとして網羅的に機能を備えています。 しかし、そんなOmniFocusにも実は不満があります。 ToDoアプリは「終わったタスク」の扱いが悪い 上記の添付画像のように、開発しているアプリをバージョンごとにプロジェクト(フォルダ)として分けています。通常、終わったタスクは非表示になります
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 本記事はElectron Advent Calendar 2016 5日目の記事です。 InkdropというElectron製ノートアプリを作っています。 このアプリにはプラグイン機構による拡張性を備えているのですが、これはatomからコードを拝借して実装しました。 atomはMITライセンスによるオープンソースのテキストエディタです。 その際に得た知見を共有したいと思います。 これをきっかけにあなたのElectronアプリ改善のお役に立てれば幸いです。 atomのパッケージを作ったことのある方ならすんなり理解できると思います。 event-kit 全体を通してイベント駆動の処理はevent-ki
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. 本記事は React Advent Calendar 2016 9日目の記事です。 本稿では、remarkというプラグインベースのMarkdownプロセッサを用いて、ReactのdangerouslySetInnerHTMLを使わずにMarkdownをレンダリングする方法をご紹介します。 InkdropというMarkdown専用ノートアプリを作っていて、その中でこのremarkを使っています。 XSSを回避してReact方式でDOM操作したい ReactでMarkdownをレンダリングしようと思うと、markedとかmarkdown-itを使ってHTMLの文字列に変換してからdangerously
Takuya Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984. Inkdropを正式リリースしてからちょうど1ヶ月が経った。 成果としては、正直言ってイマイチだ。プライベートβがHacker Newsでバズっただけに、想像してたのとは違う状況なのが実際のところ。マネタイズはやっぱり簡単では無い。しかしながらとても沢山の意見をもらえた。これは大きな収穫だと思う。 振り返ってみて、これからの戦略を検討する。 過去の関連記事はこちら: ハッカー向けノートアプリ「Inkdrop」をリリースしました なぜInkdropはEvernoteより値段が高いのか めっちゃ安くしろって言われてる tl;dr ユーザはいつまでも自分のノートにアクセスできることを重視している 継続課
EUの個人情報保護に関する新しい法律(General Data Protection Regulation)が2018年5月25日から施行される。EUの居住者に対してサービスを提供していて個人情報を取り扱っている業者は、たとえ個人であろうとも遵守義務が課せられる。 最近多くのサービスがプライバシーポリシーの改定を行っているのはそのためである。個人で作っている自分のサービスにもEUのユーザが沢山いるので、そろそろ対応しなければならない(遅い)。 今回はEUの法律によるものだが、内容は至極真っ当な、客観的に見れば当たり前のルールだ。将来的には事実上のデファクトとなり、アメリカや日本もこの法律に倣うのは時間の問題だろう。だから「日本人向けのサービスだから大丈夫」とほったらかしにしている業者は後々痛い目に遭うだろう。 Twitter社がパスワードをログに記録していた件は記憶に新しいが、今これが公に
本日8月23日、Inkdrop for Mobile v2.2.0をリリースしました。その際、iOS版の審査で一度Metadata Rejectedを食らいました。リジェクト理由は、「Inkdropの課金形態について詳しく教えろ」というもので、質問のリストが送られてきました。その時のやりとりをシェアしたいと思います。 Appleとの質疑応答まず、以下がAppleからの質問リストです: Is your app a mobile extension of an existing service?Does this existing service have a cost?What are the paid content or services, and what are the costs?Do individual customers pay for the content or serv
アプリを出すんだからやっぱり英語くらいには対応しておきたいですよね。 ってことで”delete”と”remove”何が違うの?って思って検索したことが事のきっかけです。 そしたら以下のサイトを見つけました。 ”delete”と”remove”の使い分けについて SDNA ローカライズチームブログ Sony Digital Network Applications, Inc.のローカライズチームのブログです。 他にも役に立ちそうな記事がいっぱいあって素晴らしいブログだなと思って紹介しようと思った次第です。 役に立ちそうな記事 アプリ開発に役に立ちそうな記事をまとめてみました。 適切な単語 似たような意味の単語をどちらを使ったほうが適切かという記事です。 インターネットアカウントへは ”log in”? ”sign in”? “previous”と“back”の違いについて “internal
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く