Qadiff’s diary

合同会社カディフは多くの人にとって "試験的" か、"実践的" なサービスを提供します。

合同会社カディフが運営するサービスや技術情報、さらにはおもしろかったものについてお届けします。

合同会社カディフ公式サイトはこちら

Laradock で複数環境を作る

PHP の Docker 環境だと、Laradock が使いやすいと考えています。

自分でDocker ファイルを作らなくても、たいていの必要な環境は揃っているためです。私が使っているときに問題を感じるのは、MySQL のデフォルトの設定が古いことです。

 

ここから先は開発者向けの文章です。

続きを読む

Git で GPG を使ってコミットにサインしてみよう

GPG とは

暗号化ソフト
GnuPG WikiPedia

嬉しいこと

  1. 署名すると特定の人が作成したことを示せる
  2. 暗号化すると特定の人しか解読できないファイルが作成できる

GitHub で求められているのは上の項目

なぜ特定の人が作成したことを示せると嬉しいの?

Git の特性として「名前とEmail アドレスを好きに設定できる」というのがある。 そのため本人確認が性善説によっている。だから、本人確認ができていないといえばできていない。

GitHub などに Push できないから大丈夫ではないか?と考えるかもしれない。
例えば悪意あるユーザーを X さんとする。 あなたになりすまして "悪意のあるコード" があるコミットを作成し、X のブランチに変更を取り込む。 そして、X は "悪意のあるコード" を Push する。 もしコミットに GPG を設定していない場合、このコードがあなたの書いたコードではないと証明することはできない。 めでたくあなたはプロジェクトから追放される。

GPG を使うと、コミットに本人が作成したことのサインを設定できるので、本人確認の問題をクリアできます。

GPG の設定

インストールの確認

gpg --version

Mac でのインストール

brew install gpg pinentry-mac

Mac 用の設定を行う

touch ~/.gnupg/gpg-agent.conf
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

GPG の鍵の生成

ここを読んで生成すればよい

# あんちょこ
gpg --full-generate-key
gpg --list-secret-keys --keyid-format LONG
gpg --armor --export <keyid>

Github に GPG の鍵を設定

https://github.com/settings/keys

ローカルの Git への設定

git config --global gpg.program gpg
git config --global user.signingkey <keyid>
# 全てのコミットで GPG を有効化する
git config --global commit.gpgsign true
# 署名付きコミットコマンド(.gitconfig に設定したほうがよい)
# git commit -S 

感想

やー、去年からの宿題を提出した感じです。

「クソアプリ2 Advent Calendar 2018」 24日目

こんにちは

合同会社カディフの海江田です。

 

この記事は「クソアプリ2 Advent Calendar 2018」の24日目の記事です。

 

「クソアプリ2 Advent Calendar 2018」について知りたい方は、私の説明を前の記事に記載しました( 「クソアプリ2 Advent Calendar 2018」とは? )。

 

【目次】

・今回のアプリ

・技術的な話

・感想

 

 

【今回のアプリ】

https://recipe.qadiff.com です。

https://recipe.qadiff.com の thumbnail

https://recipe.qadiff.com

 

作られたのは、ちょっと前なので一部の方はご存知かと思います。

プロの料理レシピを中心に検索するサイトです。

 

もともと料理をするときに、私も妻もよく検索をします。

ただ、素人の記事の中にはびっくりするようなものもあり、時短レシピは大して時短ではないのに味がまずくなるだけだったりするのもあり、正直なところ邪魔でしかなかったのです。

そこで、それらを検索結果から除いてしまえばいいや!という発想で作成されました。

 

 

【技術的な話】

・入力について

もっとも必要なのは「入力が簡単でなければいけない」という思いでした。

入力が簡単なのは音声入力ですが、費用対効果で採用を見送りました。

そこで、UI をいくつか考えましたが、実装が簡単な Google 風の UI を選択しました。

 

実際、Google のトップページの HTML を見たのですが、設定時間内に読みきれませんでした。とくに「音声ボタン」の位置の設定の仕方とか……。

 

・表示する内容について

表示する内容は、料理レシピの画像が一覧として並んでいてほしいと思いました。

「画像をクリックすれば、そのレシピが表示される」という仕様を考えました。

 

・データについて

最初は「対象データをクロールして……」という実装を考えました。

ただ、クロールは費用対効果に合いませんでした。

 

3サイトあれば、3サイト分のHTMLを分析して、必要なデータを抽出して保存するということが必要です。HTML がきれいなら分析しやすいでしょうが、歴史あるサイトたちは、だいたいそんなことはないんです。

 

・簡単に作成したい

実用性を重視するシンプルなサイトで、「お金を取る必要はないな」と考えていました。つまり、そこまでお金をかけたくないとも思っていました。サーバー代に、通信費とかは使いたくありませんでした。

 

Google の検索結果を眺めると、たいていやりたいことは実現していました。Google と同じことをして、果たして未来はあるのか?判断は3秒でした。

 

Google に遷移だけさせよう。

 

・簡単に作成できるのか?

最初にGoogle の規約を読み問題がないかを確認しました。

つぎに Google が作成するアプリのリクエストを受け取ってくれるかが、肝でした。そこで簡単なテストをして実現可能性をテストします。

 

テストは成功で、Google はリクエストを受け取ってくれました。

 

・実装

最後に、実装です。

だいたい仕様は決まっているので、それにあわせて実装するだけです。

javascript で少しハマるのですが、テクニックの問題で Javascript のドキュメントを読んで解決方法は見つかったので問題ありませんでした。

 

 

【感想】

仕様の決定とか、調整とか、流れについて大まかに説明しました。

こういうのも専門家ができる技術だと思ってます。

 

こんなことができると東京ではフリーの常駐で、たいてい単価50万円/月以上で売れることになります。

アオリ業者のいう年収600万円の達成ですね。

中小の会社員だと、必要経費などを引かれて 約 22万円/月以上くらいになるとおもいます。

 

 

技術的な話の細かい部分を補足しようと思ったのですが、子供が起きてきたので今日はココまで!

 

 

しかし、娘よ。

この風の中で、朝食も食べずに砂場に行きたいって、すごいな……。

「クソアプリ2 Advent Calendar 2018」とは?

こんにちは。

合同会社カディフの海江田です。

 

「クソアプリ2 Advent Calendar 2018」についての記事です。

本題は、次のページに記載されています。

 

【目次】

「クソアプリ2 Advent Calendar 2018」とは

「なぜ参加したのか?(私から見たクソアプリとは)」

「参加した作品は……」

 

 

【クソアプリ2 Advent Calendar 2018】

Advent Calendar は、アドベントカレンダーと読みます。

「クリスマスまでの期間に日数を数えるために使用されるカレンダー (Wikipedia より)」のことです。

 

Qiita というサイトでは「xx についてのアドベントカレンダー」という企画が毎年開催されています。

 

つまり「クソアプリ」についての「アドベントカレンダー」に参加しました。

 

 

【なぜ参加したのか?(私から見たクソアプリとは)】

「クソアプリ」という名称ですが、何らかの技術を使った「完成品」について書かれています。この「完成品」について書かれているというのは、すごいことなのですが、あまり書くと遠回しに自画自賛につながることに気づきました。気になる人は、ちょろっと聞いてみてください。

 

完成品を本業とは異なる時間を使って、遊び心をもって完成させるというところに参加してみようと思いました。

 

 

【参加した作品は……】

ちょっと前の作品ですが、大手のユーザー投稿型サイトを除いて料理レシピを検索できるサイトを紹介しました。

 

recipe.qadiff.com

 

もうそろそろバージョンアップが必要な機運ですね(忘れてた……)。

 

 

この文章は、本記事を書いていたら必要と思い立って書かれた記事です。

いろいろとツッコみたい所があれば、雑談がてら話をしていただけると嬉しいです。

音声入力サービスについて 2018/10/13版

昨日 ( 2018/10/12 ) は、舞浜のヒルトン東京ベイに行ってきました。

 f:id:Qadiff:20181013064524j:plain

 

Alexa dev days に参加するためです。
Alexa は、Amazon が開発した音声サービスです。Google だと Google Assistant, Microsoft だと Cortana, Apple だと Siri が同様のサービスです。

 

Amazon Alexa https://developer.amazon.com/ja/alexa-skills-kit/
Actions on Google https://developers.google.com/actions/
Cortana Skills https://www.microsoft.com/en-us/cortana/skills
SiriKit https://developer.apple.com/sirikit/

 

これらの音声入力機能の目指すところは、StarTrek の世界です。

それは、キーボードよりも声で命令する世界です。ただし、すべての入力が音声になるわけではありません。つまり、キーボードのような入力装置がなくなるわけではありません。必要に応じて使い分けています。

 

個人的な見解では、Siri のエコシステムが、一歩劣っています。他の音声入力システムは、様々なデバイス上で使われるようになってきていますが、Siri はまだまだです。

 

そして Cortana の意外なほどの提携量に驚くことでしょう。日本マイクロソフトは、立ち位置が特殊なので世界とは少し違って見えているだけかもしれません。

 

昨日の開発者セッションでは、Amazon は量より質の戦略を取ると明言していました。ユーザーに最も使われるのは Alexa ということになるかもしれません。

 

開発面からみた違い

 

ハードウェアの設計は、大きな変更はないようです。
今までの録音技術をそのまま使い、インターネットに接続できるようにする、LAN に接続できるようにする、というだけのようです。
ハードウェア部分は、私なら知人の会社を通して台湾に発注する方法を選択します。

 

音声入力システムのインターフェイスは Voice User Interface 略して VUI と言います。
UI設計の手順の最初は Web と変わりませんが、応答部分(インタラクティブな部分)の設計が大きく異なります。
この部分は大きな違いで、使いやすさに影響を与えると思います。
詳しくは、別の記事に譲ります。

 

内部仕様は、各製品ごとに大きく異なります。
つまり「すべての製品に対応!」なんてことを考えると、絶対にお金がかかりすぎるということになります。
また、ユーザーの一元管理もできません。今はまだ Web や、アプリに比べてできないことも多い状態です。

 

あなたが発注側の場合、「やりたいことをやる」というよりも「できることをやる」という消極的な戦略をとる必要があります。
社内調整が大変な会社の場合、本当にやる必要があるのかを真剣に考えたほうが良いでしょう。

合同会社カディフは多くの人にとって "試験的" か、"実践的" なサービスを提供します。

合同会社カディフ公式サイトはこちら