ku-sukeのブログ

Just another hatena blog

どう設計する?.orgみたいなのをやってみたい

  以前会社のブログで、「壁打ち」に関する記事を書きました。法人サイト更新してなくて恥ずかしいのですが。

www.uplucid.com

 

ひさしぶりに思い出す機会があり、壁打ちをもっと職種として体系的に扱えないのかと考えたところ、システムに限ればソリューションアーキテクトが近いのかなと思いました。

AWSが考え出した概念なんですかね。

https://zine.qiita.com/job-offer/aws-solutions-architect/

 

この記事ではいくつかに分類されているようですが、ようは顧客のビジネスをヒアリングし、その解決策(ソリューション)のアーキテクチャを作ってくれる人(設計者)とここでは扱います。(より込み入った技術アドバイスは除くものとします)

 

メルカリみたいなの作りたいんだけど

 

 ○○みたいなの作りたい!というのはいろんな現場で起こることです。しかし適切な壁打ちができなければいろんな意味で犠牲者がたくさん出てしまいます。ここはちゃんとした設計をしなければなりません。まずは予算を聞いてみましょう。

 

うーん 20万円くらいかなぁ。

 

 つぎに相手を張り倒しましょう。ではなく、20万円の原資でどのくらいのビジネスを考えているのか聞いてみたり、本当にやりたいことは何なのか聞いてみたり、メルカリと同じものを作ろうとしたら小規模でもこの高騰した東京のエンジニア相場だったら数千万はかかりますよと優しくお伝えしましょう。

 

 などと脳内シミュレーションで考えていたら、やはりこのような知識は形式知になっておらず、よくないなと感じました。

例えばおなじファイル共有システムを作るのでも、

  • さくらの共用レンタルサーバにありもののスクリプトを動かすのと
  • 高度な暗号化に対応し地理的に分散コピーされてるのにチョッパやでアクセスできて監査にも耐えうるやつをクラウド使わず自前構築

だと値段が4,5桁変わってくる可能性があるわけです。このように「言外にありそうな要件を過去のパターンマッチから補完する」「顧客が本当に欲しかった程度のものを過不足なく提案する」「運用のことまで考えられている」「そもそも作る必要あります?」「無理なものは無理という」みたいな知識は、なかなか教えることが難しいなと感じています。ビジネススクールケーススタディにも近い感じがしますね。

もし良い書籍があればおしえてください。

 

どう書く?orgの設計版みたいなやつをやってみたい

 

 ここからはめちゃくちゃ思いつきなんですが、特定の界隈で一世を風靡した「どう書く?org」というコードゴルフのサイトがあったのですが(今調べたら別の方がリニューアルしてた)それの設計版ができないかなと思ってます。

 

 たとえば「メモアプリが作りたい」というふわっとしたお題があった時に、シチュエーションを考えながらいろんなバリエーションをみんなで書くわけです。

 サーバは共用?クラウドコンテナ?サーバレス?アプリはWebのみ?フルネイティブ?Expoみたいなプラットフォーム?もしかするとエンプラ要件ならSalesForceで作るべき?とかとか・・

 

 自分が得意な領域が出ますよね。「ある程度パブリックにすることでSEO流入を期待できる設計にしよう」とかいうマーケが好きな人、いやいやパブリックにすると著作権の問題が出るから利用規約でしばってパトロールする管理画面が必要とかリーガル強い人みたいに。

 

 コードゴルフと違って?ものによっては結構な工数を回答に使うので、最初は仲間内でわいわいやってみるのも面白いかもしれない。 VPoEとかSAのみなさん、いかがでしょうか。

 

プロダクトの「使い始める」価値と、「使い続ける」価値

 プロダクトづくりの現場でふと昔のことを思い出して、ちょっとこれはブログに残しておこうと思ったのでメモ。おおむね自分用です。

 

○○の課題を解決するプロダクトづくり

リーンとかプロダクトづくりの手法が普及してきたことによって、プロダクトづくりの現場は「○○な顧客の課題を解決する~~」みたいな会話をすることが多くなりました。とても良いことですね。

プロダクトアウトとか自己中心的なプロダクトづくりからみると、それはもう大幅な進捗があってよいのですが、一方でSolution Problem Fitといいますか、課題に対する打ち手を考えるときには2つに分けて考えるといいんじゃないかという話です。

 

あまり使われなかったけど導入につながった機能

 一番思い出深いのが、某社で店舗向けサービスをやっていた時の頃です。B2B2C的なかんじで一般のお客さんが使うための店舗に設置する製品なのですが、営業さんが店舗にプレゼンに行くと、とある新機能がプレゼン受けがよかったと報告されました。

 確かに技術的に目新しいので他社にはないのですが、まぁそこまで便利かといわれると個人的には普通かなという機能でした。どちらかといえば「顧客の課題を解決する」機能としては集計やレポート機能が主だったのですが、そちらはあまりピンと来ていないようだというのです。

 しかし、一度使い始めると、受けの良かった機能の利用率は3割以下で「そこまで便利じゃないね。」という評価でしたが、メイン機能の方は満足されて利用を継続いただけていました。

 

本質的な価値にたどり着くための客寄せパンダ

 客寄せパンダ、と書いてしまうと身も蓋もないかもしれませんが、新規サービスを考えるときに本質的な価値をしっかり設計したら、そのあとで客寄せパンダ的な「目玉機能」についても考えてみるとよいと思いました。

 なぜなら、本質的な価値というものは継続して初めて分かることも多く、そこまでたどり着かないと価値を感じることができないのです。もちろん、そのために広告を打ったりすることもありますが、機能や体験設計の段階においても「使い始めるときに感じる価値」や「インストールして最初の15分で感じる価値」を定義してみるとよいでしょう。

 

関連して「IA的なデザイン」と「行動を引き出すデザイン」あるいは「気持ちを動かすデザイン」についてもどこかで考察したい。

 

OrangePi のNAS構築いったん完成(NextCloudPi)

あらすじ

自宅にAdBlockdnsサーバを立てたくなったku-sukeは、ついでに古くなったLinkStationのリプレースを検討する。いろいろ方式はあるがどうもNextCloudPiがよいようだ。ハードはOrangePiとWDのSSDを買ってさっそく構築してみた。

blog.ku-suke.jp

前回の記事の続きです。自宅の環境すべてで自動的にAdBlockされるのは意外といいものです。スマホゲーム内のインターステーシャル動画とかもほとんどでなくなりました。

 

さて、がんばって200GBくらいバックアップを取ったのですが、よくよく調べたところファイル名が日本語のところが見事にぶっ壊れており、躊躇なく初期化しました。やりなおしです。

調べてみるとLinkStationにはUSB接続の外部ストレージにバックアップする機能があり、ext3に対応していました。これ幸いとssdext3に変換し、標準機能を使ってバックアップしました。速度は遅いらしく4-5時間かかった気がします。

バックアップ済みのssdをorangepiにマウントし、ext4に変換します。

$ sudo umount /media/ssd
$ sudo tune2fs -O extents,uninit_bg,dir_index,extent,flex_bg,huge_file,dir_nlink,extra_isize /dev/sda1
$ e2fsck -fDC0 /dev/sda1

一部修復も行われ、無事読み書きが確認できたので、UUIDを調べてfstabに記載します。

UUID=dc33d819-3add-XXXX-XXXX-7a88712d8311 /media/ssd ext4 defaults 0 0

このバックアップデータは、普段使わないため、NextCloudとは別の領域に格納し、宅内環境でSMB経由でのみアクセスします。

 

NextCloudのフォルダ同期を試す

これでひとまず完成なので、実運用に耐えうるのかテストしてみたいと思います。使い方はやや特殊で、OneDriveみたいにDocumentsとDesktopを複数マシンで同期してみたいと思います。OneDriveの場合はDocumentsをクラウド同期にしてしまうとパワポとかが保存時にクラウド上に書き込むのを待ってしまうのですが、こちらならサードパーティ製なのでそのようなこともなさそうです。

 

f:id:ku-suke:20190601234618p:plain

Pixel 3aからもすぐに確認出来て、米国にサーバがありそうなクラウドストレージの10倍以上サクサクなので意外といいかもしれません。


f:id:ku-suke:20190601235133j:image

 

OrangePi / ASUS に接続したSSDのベンチマーク(SMB経由)

前回、OrangePiを構築したわけですが、いったんSSDASUSについているUSB3.0ポートに接続していました。こちらをいろいろと試しつつベンチマークをとってみたいと思います。

変更前:Buffalo LinkStation LS210D 

PC→WiFiASUSルータ→有線LAN→3.5inchHDD

f:id:ku-suke:20190519220807p:plain

こんなかんじです。普段使いはしてなくてほぼバックアップ用でした。

 

ASUS RT-AC87U のUSB3.0ポート

標準でついている機能を利用してみます。PC→WiFiASUSSSD

f:id:ku-suke:20190519220959p:plain

シーケンシャルリードは、ほぼ頭打ちです。WiFiの性能かもしれません。40MB/sとして、320Mbpsですかね。ランダムリードは全般的に伸びています。

 

OrangePiのUSB2.0接続

最後はOrange Piへの接続です。これもSMB経由になります。

PC→ASUSルータ→有線(1000base)→OrangePi→USB2.0SSD

f:id:ku-suke:20190519221542p:plain

なぜかSeq Readだけ性能が上がってしまったのですが、それ以外は微妙でした。こちらのメリットとして、ASUSルータNASでベンチを取るとCPUが張り付くのですが、OrangeNASだととくに問題ないため、家でガンガン動画を見ているときにルータが熱暴走とかしなさそうという安心感はあります。

ただし、NextCloudPiで使用するには、extでフォーマットしなおす必要があり、すでに旧NASからコピーした200GBのデータをどうするかが悩みどころです。自分しか使わないので、50GB分だけ切り出してextにして使っているのもよいかもしれません。

 

 

OrangePi One PlusでNASリプレースと家庭内AdBlock運用

f:id:ku-suke:20171226193634j:plain

OrangePi One Plus

無事構築できたので書いてみます。動機としてはぶっちゃけやってみたかっただけなんですが、NASが5年以上使用して老朽化してたり、AmazonやAndroidTVでTVerの広告が多すぎるっていうクレームが家族からきたりという点もあります。

 

使用機材

 

Orange Pi One Plusとは

Raspberry Piみたいなシングルボードコンピュータです。ラズパイほど安定していませんが、中華ガジェットでは有名なAllwiner H5を搭載し、メモリも1GBあるのでなかなかパワフルです。技適はありませんがWiFiがついていないので安心して(?)使うこともできます。

 

 電源とケースも買いましたがケースだけまだ届きません。

今回はこれでNASDNSフィルタリングを作ります。

 

OwnCloudのフォーク版NextCloudPiを使おう

とはいえ先人が多くのノウハウを公開していたので僕のは後追いになります。無事できたよという記事です。

 

OSはArmbianのStretchを使う

唯一のハマりポイントとしてはこれ。公式サイトにいくつかイメージが公開されているんですが、最新版は起動せず、古い奴はUSBにキーボードが刺さっていると起動しないといわれました。

また、そもそも使おうと思っていたNextCloudPiがDebian Stretchを公式にサポートしていたため、Armbianという有志がメンテしているイメージを使うことにしました。

https://qiita.com/masataka55/items/182ac6b2fdd0a984f641

NextCloudPi – Own your bits

 

Armbianインストール後、ユーザを追加・rootを無効化して、MACアドレスの固定化を行いました。ArmbianはまだTEST用で、起動ごとにRANDOM MAC ADDRESSになるのは不便なためです。

パスは違いますが、こちらの記事に従ってoneplusようのdtbを生成したところ、無事MACアドレスが固定されました。

https://gato.intaa.net/archives/8244

 

NextCloudPiをインストールします。ワンライナーでシェル実行するだけで30分ほどでインストールが完了しました。

 

ポートフォワーディングとLet's Encryptの実施

家の外からアクセスするため、ルーターの設定で80/443をあけ、DDNSをセットアップします。なんとNextCloudPiの管理画面からLet's Encryptが設定できるので、Web画面上で簡単に設定することができました。これで80番は閉じておいてもいいですね。

 

f:id:ku-suke:20190518170855p:plain

 

なぜかdnsmasqもすぐ使えた

なぜかわからないのですが各種DNSソフトウエアの導入も管理画面からできました。おそらくDDNSも運用できるようにという配慮かもしれません。

これでdnsmasqをいったん立ち上げて動作確認した後、この記事に沿ってDNSのBlacklistを埋め込むことにしました。

 

ohtorii.hatenadiary.jp

AdBlock用のconfを作成した後、dnsmasq.dの中に入れて読み込む形式で設置しました。いくつかネットサーフィンしてみて問題があればホワイトリストいりできるような運用体制を作ってみようと思います。

 

Mackerelのインストールと温度管理

さて、一通り動きましたがDNSサーバがたびたび止まるのはよくないので、死活監視することにしました。Mackerelをインストールします。※APIキーの取得が必要です

https://github.com/mackerelio/mackerel-agent

Releaseから最新版のlinux-armパッケージを落としてきます。/etc/ 配下に配置し、systemdとしてデーモン化します。

https://blog.adachin.me/archives/4007

 

通常の負荷だけでなく、温度も管理したいとおもいます。カスタムメトリクスを作ればいいようです。

Raspberry Piの温度をMackerelで監視し、アラートを飛ばす - Qiita

しかし、RasPiに含まれるvcgencmd がArmbianにはありません。そこでPythonで温度を取得することにしました。

#!/usr/bin/python2.7
import os

temp = 'cat /sys/class/thermal/thermal_zone0/temp'
temp = os.popen(temp).readline().strip()
temp = int(temp) / 1000
print( str(temp) )

 ちょっと雑なコードなので動かなかったらごめんなさい。こんなかんじで無事温度の管理をすることができました!

 

というわけで実際にNextCloudPiを使っていきたいのですが旧NASの整理が終わらないのでここまでで。姫トランスとかでてきてやべえ

 


Hime Trance kai & J Eurobeat / Mirukomeda 138

明日の #技術書典6 に新刊3冊!JavaScript、Oculus Go、そしてアジャイルカラダ開発【か18】

f:id:ku-suke:20190413144527p:plain

 

 いよいよ明日は技術書典6ですね!今回FlightBooksからは新刊が3冊でます!それぞれ100部のみの頒布となりますので、気になる本があればぜひ【か18】までお越しくださいませ!

新刊1 JavaScriptで徹底的に遊ぶ本 by まさとらん

JavaScriptの基本的な学習を終了した人
・初心者から中級者にステップアップしたい人
JavaScriptでいろいろ作ってみたい人
・とにかくJavaScriptが好きな人

本書は上記のような人にオススメできる「作って勉強する」スタイルの本になります。
とにかくJavaScriptの勉強と言えば、フレームワーク論争やWebpack・BabelなどのNode.js環境の話になりがちなのですが、そうではなくて純粋にJavaScriptを使って「何かを作る」ということに重点を置いた本です。
本書を読むことで、3Dマップやグラフ・チャート、ゲーム、音楽、ブログ、ボット…など、さまざまなジャンルのコンテンツをJavaScriptライブラリなどを駆使して誰でも開発できるようになります。

というわけで、とにかくJavaScriptを使って、いろんなものを作り出してみるという本です。個人的に面白かったのが、3章の立体視画像を作ろう!というやつです。こんなのもJavaScriptだけで作れるんですね(笑)

f:id:ku-suke:20190413140855p:plain f:id:ku-suke:20190413140935p:plain

後半の章では勉強の過程を動画で記録できるサービスの紹介や3Dゲームなど、プログラミング初心者でもいろいろ動かして楽しめる内容が盛りだくさんです!

 

新刊2 Oculus GoのVR Shooting Gameアプリを作ろう!by keijipoon

Unityを使って個人でもゲームを作れるようになりました。これからは、3DやVR/ARでのゲームが増えていきます。しかし、まだまだ自分で作れる人はごくわずかです。この本では、VR ShootingGameに必要な最低限のTipsを紹介していきます。今回は安価なVRバイスとして、話題をさらったOculusGoを対象にVR Shooting Gameを作成します。Oculus GO にならではの設定などを冒頭に、後半はShooting Gameを作成するための最低限の要素だけをまとめました。

本書はUnityをつかった3Dシューティングゲームが作れるようになる本です。しかも作ったゲームをOculus Goで動かすことができる各種設定を丁寧に解説しています。

 

f:id:ku-suke:20190413141703p:plain f:id:ku-suke:20190413141757p:plain

実は僕もOculus Goを買ったまま、3,4回だけ使って眠らせてしまっていました。いまではUnityのAsset Storeも充実していて、パーツをダウンロードして配置していくだけで世界を作っていくことができるんですね!自分だけではなく子供と一緒にゲーム作りを楽しんでみたいと思います。

 

新刊3 アジャイル"カラダ"開発ガイド by 懸田 剛(@kkd

3つめは、プログラミング言語と打って変わって、カラダの改善にアジャイルを取り入れた本です。

本書は30代半ばを過ぎて身体が気になってきたソフトウェアエンジニアを対象に、ソフトウェア開発の現場で行われている**アジャイル開発**のエッセンスを用いて、リーンで生産的でアジャイルなカラダへと変化させるための入門書です。巷に氾濫する「XXXだけでOK」「一週間でXXXできる」「究極のXXX」といった短絡的なキャッチコピーに踊らされずに、漸進的かつ継続的に健康的なカラダや習慣を**楽しみながら**生み出すコツを紹介します。

飽きっぽく意志が弱い筆者が、様々なダイエットや運動経験の失敗経験や、40歳を過ぎてから約7年間実践してきた様々な経験・研究を元に構成されています。そのため誰でもすぐにカラダ開発を始めて継続しながら成果を出すことができます。

本書は30代半ばを過ぎて身体が気になってきた おいおいワイのことやないか・・・

これは個人的にめちゃくちゃ刺さりましたw

f:id:ku-suke:20190413142730p:plain f:id:ku-suke:20190413142936p:plain

 

本書は筆者の数々の失敗とそこからの学び、そこから生み出された「アジャイルカラダマニフェスト」を宣言しどのように取り組めばよいかが記されています。後半のカラダのリファクタリングでは原理原則が示されたうえで、巷にあふれる単一のメソッドではなく、どのように組み合わせ、計測し、無理せずに進めるべき書かれています。

 

技術書典は「か18」へお越しください!

サークルチェックはこちらから

https://techbookfest.org/event/tbf06/circle/52120002

技術書の商業出版と同人誌の「間」を解説するよ - その2

前回の記事では、一般的な商業流通の「本の物流の流れ」「お金の流れと権利」について書きました。

 

blog.ku-suke.jp

 

それでは、商業出版と同人誌の間の形態って?

まず本の物流面についてです。

具体的には、インプレスR&Dさんのやってる通販オンリーの商業出版がこれに近いと思っています。

前の記事で説明した商業出版では、全国津々浦々の書店に届けるため、約2000-3000部を刷ると説明しました。

一方で、インプレスR&Dさんが取り扱っているのは「プリントオンデマンド」と呼ばれる方式で、オンライン書店で印刷を受けてから印刷する方式になり、事前にリスクを負って刷る必要が基本的にはありません。

この方式に対応しているのは現在Amazonと、一部の大手書店にとどまります。そのため「全国津々浦々の書店に並ぶ」ということは叶わないものの、一般的な電子コンテンツの販売と同じように紙の本を扱うことが可能になります。

さらにAmazonであればKindleをつかって電子版も流通させることができますね。

このような形式でPODを実施している出版社はいくつかありますが、技術書ではインプレスさんがほとんどでしょうか。著者からすると、卸流通に載せるようなまとまった印税は期待しにくいですが、同人誌感覚でAmazonで売れることがメリットでしょう。

 

契約と売上に関しては?

 インプレスさんでは商業出版ということでもともとは独占契約でされていたのを、カスタマイズされてるみたいですね。おそらく売り上げの分配も印税のように売れた分のX%という契約ではないでしょうか。

Kindleに関しては著者個人で申し込むと、35% or 70%が手元に入ります。70%プランはAmazon独占販売などいくつか条件がありますが、それでも35%がはいります。もちろん面倒な手続きや必要なePubフォーマットの作成は必要ですので、手間に見合うかは考える必要があります。

つまり、プリントオンデマンドを利用することによって、紙も電子も同様に売れた分だけというモデルが成立するようになったのです。インターネット界隈の方にはこの方がなじみがあるのではないでしょうか。

ほかにも、自社通販のみのクラウドファンディング型出版のPEAKSさんなんかだと、著者がアフィリエイト設定をできたり、それによって非常に高い売り上げ還元率を実施できたりとユニークな仕組みがあります。

 

このように、「商業流通だけど書店には並ばない」「紙の本だけど事前に数千部刷らない」(からニッチな本でも出版できる)というような新しい方式が、同人と商業出版の間にあるといえます。

そのため、例えば「kindleは自分で出すけど、Koboは出版社」「紙の本はA社のPODでだすけど、電子はB社経由で出す、さらにBOOTHでも売る」「Kindleとnodeで有料で販売する」みたいな様々な方式があるのではないでしょうか。

 

個人的にもこのあたりに非常に興味があり、技術書典6では「Markdownで技術同人誌を書こう!」の続編として「技術同人誌をあらゆるサイトで売ろう!」に挑戦してみたいと思っています。興味ある方は、Twitter@ku_suke か、技術書をもくもく書くSlackを立ち上げているのでそこでわいわい議論しましょう!