SPICY SPACE BLOG

愛犬家WEBエンジニアの日常。

todo-txtでゆるゆるタスク管理

この記事はVisual Studio Code Advent Calendar 2019 - Qiita9日目の記事です。

タスク管理ツールについて

私は個人的なタスク管理にはTickTickTodoist等、WEBサービス/アプリを利用しています。

これらのツールはスマホアプリもあり、デバイス間で連携できたり、通知が飛んで来たり、便利な面も多いのですが、

期日を設定したり、並び替えたり、UI操作を伴う入力が冗長であるというデメリットもあります。

 

todo.txtでののタスク管理

todo.txtは、プレーンテキスト1ファイルでタスク管理するために整備されたフォーマットです。

todotxt.org

todo.txtのフォーマットが具体的にどういうものかは下記記事にて分かりやすく説明されているので、省略。

qiita.com

各種テキストエディタで、todo.txtを利用するためのプラグインが提供されています。

VSCodeでは以下。

marketplace.visualstudio.com

 

"todo-txt"プラグインの使い方

todo.txtのフォーマットに従って入力すると、カラーリングして見やすく表示してくれます。

こんな感じ。

f:id:sp_ice:20191209020350p:plain

 

以下のコマンドが用意されています。ショートカットを設定しておけば、便利に使えます。

並び替え

  • todo-txt: Sort By Project: Sort the entire file by project
  • todo-txt: Sort By Priority: Sort the entire file by task priority
  • todo-txt: Sort By Due Date: Sort the entire file by due date
  • todo-txt: Sort By Context: Sort the entire file by context

タスクの完了

  • todo-txt: Toggle Task Completion: Toggle the completion state of the current task line 

行頭に"x"を入力し、タスクの完了/未完了を切り替えます。

  •  todo-txt: Archive Completed Tasks: Migrate all completed tasks to a done.txt file in the current directory

 完了済みタスクをdone.txtに転記して、行を削除します。

 

スニペットを作っておくとさらに便利

こんな感じで作っておけば 

{
"task": {
"prefix": "task",
"body": [
"(${1:A}) ${2:タスク名} due:${CURRENT_YEAR}-${CURRENT_MONTH}-${3:$CURRENT_DATE}"
]
}
}

必要箇所のみ入力していけるので、さらに便利です

f:id:sp_ice:20191209022428p:plain

 

まとめ

テキストで箇条書きにしてタスク管理しているという方には、todo-txt使うと捗るのでオススメです。

 

ニュースタイトルから575を抽出して、川柳を作れるアプリを作った話

クソアプリ Advent Calendar 2019 2日目の記事です。

https://qiita.com/advent-calendar/2019/kuso-app

Advent Calendar参加欲が急にわいたので、急遽エントリー。

アプリ概要

ニュース川柳(βです)

newsenryu.spicy-space.xyz

 

  • ニュース記事から川柳を作るサービス。
  • ニュースサイトのRSS形態素解析し、5文字・7文字の単語を抽出しています。
  • ユーザーは抽出された単語を選んで、川柳として投稿できます。
  • 投稿された川柳からは、元のニュース記事に飛べるので、眺めていると、直近で話題になっているニュースが分かる予定。

 

背景 

  • コラージュ川柳(新聞の見出しの切り抜きで作る川柳)から着想。

dailyportalz.jp

  •  機械学習の勉強をしてみたかったが、教師データが無い→言語解析系の教師データを集めるためのWebサービス作ればいいんじゃ?→川柳いいかも
  • 本業でWebのお仕事できていないので、新しめのフレームワークを触って、時代に置いて行かれないようにしたい


使用した技術

SPAではじめて作りました。

バックエンド

形態素解析

  • kuromoji.js

github.com

 php-mecabのインストールに挫折した(笑)ので、簡単に使えそうだったこちらを使用させて頂いた。

 

フロントエンド

  • Ionic(v3) + Angular

 

ionicframework.com

IonicはアプリライクなUIコンポーネントが多数用意されている、Angularベースのフレームワークです。

普通に作ればPWAにデフォルトで対応しているのもメリット。

ちんたら作っている間にv4がリリースされてしまいましたが、v4ではReactやVueにも対応した様子。

SPAを初めて作る僕にとって、どう作るべきなのか迷うことが多々あったが、下記

公式のチュートリアルアプリがかなり参考になった。

https://github.com/ionic-team/ionic-starter-super

 

 インフラ

  • Laradock

laradock.io

 

DockerでLaravelを使うためのツール群。全部入り。

docker-composeをベースに、アプリケーションサーバ、WEBサーバ、DBサーバと、それぞれ別コンテナとして作ってくれる。

もしサービスがスケールしたらコンテナをまるっとAWS上にデプロイ…等つぶしがきくかな、と思って選定。

 

工夫した点

575を抽出するロジック

単純に5文字・7文字を抽出するだけでは単語の羅列になってしまい川柳にならないので、「年内」+「の」のように前後で合計5文字・7文字となるものを1ワードとして抽出した。

超ざっくりロジックだが、ある程度うまく拾えている。

あと「山口達也」など、意識せず話題のニュースからワードが抽出されてて面白かった。

 

反省点

構想から形にするまで、めちゃめちゃ時間がかかった

  • イデア自体は4年前くらいのもの
  • 開発着手したが、残業続きでモチベーションが完全になくなったり、気が向いたら再開したり、を繰り返し、気付けば未完成のままここまで来ちゃった。
  • 新しいこと(Laravel、Ionic、SPA、Docker)を盛り込みすぎた。躓いてはモチベーションが下がった。

SPAなので本来トークンで認証すべきだが、横着してセッションでやってしまった

  • SPAならステートレスなAPIで実現すべきだが、めんどこれ以上新しいことやらない方が良いという判断のもと、従来のページ遷移前提の認証の仕組みで実装した。
  • 次何か作るときは、トークンで作りたい。

下記、参考にさせて頂きました。

qiita.com

 

まとめ・感想

個人開発について

  • 個人開発はモチベーション維持が大変
  • 新しいことは、盛り込みすぎない方が良い
  • 誰かと一緒に作ったら良いかも

Ionic(Angular)について

  • エラーメッセージ、どこが悪いのか直感的に分かりにくい
  • でもTypeScriptでカッチリ型指定して書けるのは好み
  • 良くも悪くも全部入りなので、ファイル構成・デプロイの仕組み、周辺ライブラリの選定に迷うことはないのは良い

 川柳、投稿してみてもらえると、嬉しいです!

 

 

格安でスケールアップ可能なインフラ選定

WEBサービス開発にあたり、まずはインフラのこと書きます。

結論から言うと、GMOのConohaを使うことに決めたので、選定の過程を残しておきます。

 

選定基準

  1. 1000円/月 以下で使える
  2. スケールアップが容易
  3. rootを使えて、好き勝手インストールできる

今回作る川柳投稿サービスでは形態素解析のライブラリを使いたいので、PaaSよりもVPSの方がインストール作業時に潰しがきくだろうと判断しました。

 

候補

  1. Conoha
  2. さくらのVPS

 

決め手

  • さくらのVPSはスケールアップのみでスケールダウンできないのに対し、Conohaは両方可能(1GBプラン〜)
  • 初期費用がかからない
  • 月額も安め

f:id:sp_ice:20180523183347j:image

 

Conohaにして良かった点

  • SSHの鍵が自動で作られるので楽。(自分ならとりあえず平文にしてしまうし…←よくない)

 

Conohaにして悪かった点

  • FWで任意のポートを開けることができない

f:id:sp_ice:20180523182905j:image

管理画面が上記のようなチェックボックスになっていて、指定のポート、もしくは全開放しかできません。

nodeのexpressで適当なポート使って簡易WEBサーバ立てるのをよくやるのですが、全開放するしかないので、抵抗があります。

まぁ本番用サーバで不要なポート開けるなという話ではありますが…

 

まとめ

1GBプランの「スモールスタートできる開発環境」っていうキャッチコピーが、今回の要件にどんぴしゃでした。

ずぼらWEBサービス開発の記録

WEBサービス作りたい

前々から、個人でtoCWEBサービス開発をやりたいと思っています。

が、1日で作りました!的なことができるポテンシャルもなく、仕事やプライベートが忙しくなると、なかなかモチベーションが保てず、作りかけのまま挫折してばかり…

今回はなんとか完成させたいので、ここできちんと公言して、作る過程をブログでアウトプットしていこうと思います。

 

つくるもの

サービス名:ニュース川柳(仮)

サービス概要:

  • 川柳投稿SNS
  • コラージュ川柳の要領で、Webメディアの記事タイトルから川柳を作って投稿できる
  • 投稿された川柳を見れば、今話題のニュースで使われている単語が並ぶので、ライトなWebメディアみたいに機能するはず

 

コラージュ川柳とは何か? コラセン倶楽部に潜入してきた! - デイリーポータルZ

 

実現方法

  • Webメディアの記事を形態素解析し、5、7、5の候補ワードを抽出する

 

開発方針

とにかく手間をかけずに作る!

ライブラリに任せて、なるべく作らない

 

関連記事

随時更新していきます。

 

 

 

外でiPadを持ち歩くなら、強化ガラス「nuglass」必須!

節約のため、ガラケーiPad miniの2台持ちしていますが、

先日いつものようにiPadでIngressをプレイしていたとき(←危険)

うっかり手を滑らしてアスファルトの上にiPadを落としてしまいました。。。

 

 

いつかは落とすと思っていたので、どれほど効果があるのか分からないけど一応貼っていた、この強化ガラス。

無残にひび割れた画面を、おそるおそるガラスを剥がしてみると...

 

https://instagram.com/p/9xpnzbPvZL/

 

うおー!!!!!無傷!!!!!

表面の強化ガラスはバキバキでしたが、本体の画面は無傷でした。

ほぼ諦めていたんですが、強化ガラス様様です。

これは、もう一回これ買うしかない。

 

 

せめてもの恩返しに、もう一回購入リンク貼っておきますw

Googleフォトバックアップが動かなくなった2

再びGoogleフォトバックアップが動かなくなってしまいました。

出ていたのは下記のメッセージ

#!0 photos backed up

 

写真.appで管理している写真をバックアップ対象にするのに、

下記ページを参考に、「写真 Library.photoslibrary」内の「Masters」フォルダをバックアップ対象にしていたことが原因でした。

www.danshihack.com

 

Googleフォトバックアップ側で正式に対応されたようなので、

対策として、設定画面から「Masters」を削除して、「x)Apple Photos Library」にチェックを入れてOKを押すと、正常にバックアップ可能になりました。

f:id:sp_ice:20151125003422p:plain

 

以上!

はてなブログへもGoogleフォトから直接画像が持ってこれるので、はかどりますね。

Googleフォトバックアップが動かなくなった

PC(iMac)のGoogleフォトバックアップが立ち上がらなくなった話です。

 

新たにデジカメからPCに写真を取り込んだあと、Googleフォトバックアップを立ち上げようと思ったら、こんなエラーが出て、アプリが立ち上がらなくなっていました。

「破損しているか不完全であるため開けません。」

f:id:sp_ice:20150727234654p:plain

ディスクの検証&アクセス権の修正などやっても症状は変わらず、

再インストールしたら問題なく動きましたとさ。

上書きしたのでアプリの設定も残ったままでしたよ。

 

以上!ググっても出てこなかったので、困っている人がいればご参考までに。