自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

技術書典5配置い08です

出す本用のページは9月頭に用意できればいいかなあ。

技術書典5

techbookfest.org

配置決定

配置決定は本来15日だったんですが、延期し17日に発表されました。某アパレル会社社長もイベント規模が倍になると厄介事は二乗で増えるって言ってたし、規模前回比3倍らしいからね、仕方無いね。配置場所はい08となりました。

Virtual Ones

弊サークル名です、はい。 技術書典4では @rizaudo 君のサークルに寄させてもらってたんですが、やっぱり自分のサークルで出してみたいな、と。 音楽性の違い*1がなくもなかったんですが、特に喧嘩事とかは無いです。Dragon Universityもよろしくね!

同人誌に限らず、サークルというのは基本的に「何らかの目的を共有するグループ」であります。では、Virtual Onesの目的はというと、「コンテンツプラットフォームに関連する全て」です。そして、研究室のボスと僕の共通見解では「プラットフォーム」とは「任意」を指します*2

上の条件に当て嵌る人材をVirtual Onesでは常に募集しています。連絡は @hid_alma1026 まで。

頒布予定本

現在、完全に個人サークルの様相を呈してきたVirtual Ones。

今回は的を「文書編集またはその周辺」に絞って臨む予定です。初参加だからタイトルなどの方針もまだ定まっていません。9月の中旬までには脱稿していないとまずいですね。Virtual Onesの明日はどっちだ。

*1:例えば、彼は「必要や関連がなければ可愛い女の子の表紙であるべきではない」という方針なんですが、僕は「特に必要が無い限りは可愛い子が表紙であるべきだ」という方針なんですねー

*2:まあ、ボスは訊くタイミングによってこれと異なる見解を述べることもありますが

分散SNSポエム

この記事は WORDIAN Advent Calendar 2017 - Adventar の20日目の記事になります。 今日もポエムです。この書き方だといつもはポエムじゃないみたいだ。

前書き

Twitterの自動凍結やUserStreams廃止などでまた揺れてますね。絵師のMastodon(Powoo)移行なんかもよく聞く話になってきました。僕も息子の要請によりPowoo垢を作ってみたりしました。そのコミュニティの感覚がまだ上手く掴めていないのでメイン所在地の移動というのはまだ無さそうですが。

所属している研究室では「分散SNS」の研究もあります。もっと早くこっちに変えておけばと思わなくもないです。

中央サーバ型のSNSの利点は運用ポリシーの管理が比較的容易であることが挙げられるかと思います。アカウントのBANとか。

連邦型のSNSインスタンス毎にポリシー、追加機能が分かれているので合うものを自分で選べる、気に入らなければ自分で立てられるといった感じでふわっと理解しています。

この何れもが、弱点として「ユーザーが増えると運営が大変」というのを持っています。あと、連邦型では分散されているとはいえ、「運営がいなくなる」可能性もありますね。「運営が信用できない」なども中にはありますが。

分散SNSは主にPeer-to-Peerネットワークを利用したSNSのことです。後でもまた書きますが、これに関して一番難しいのは「P2P」に関する偏見かなとは思います。WebRTCだと皆飛びつくのにな。

今回はTwitter-Alternativeのこととか。各技術についてふわっとしてしか理解していない*1ので、ツッコミ待ちなところはあります。

既存プロジェクトなど

github.com

BitTorrentのイメージってファイル共有(特に、文脈が違法ファイル共有)で認識している人が多くて、 Bleepとかはそこで損している部分もありそうですよね。

プラットフォーム系は巨大すぎて全く把握できていない......。

Tomo’s HotLine: P2P

結構以前からP2PによるSNSについて書かれています。

ランデブーポイント

ほとんどのプロトコルやプロジェクトで、「最初に繋がるための情報を得る特定の場所」というものが存在しています。DHT(分散ハッシュテーブル)とかを使っていても最初にアクセスする場所は決まっていたりして、種別は違えども似たようなものが必要であったりします。

Gossip-Protocol

nullkal君に「Scuttlebutt」を教えてもらいました。

staltz.com

現状のSNSについての欠点などの紹介から、開発したアプリケーションの紹介まで↑のリンクで載っています。

限界脳状態だったのでプロトコルなどはちゃんと読めていないのですが、ランデブーポイントの問題も解決できているはず?

ぼくのかんがえたさいきょうの

まあ、子供の考える最強の設定ってオリジナリティに溢れていることって実は少ないですよね。

要求機能

Twitterがチャットシステムでは無く、マイクロブログであることが大切だと僕は思っていて、望む情報は手に入る必要があるが、望まない情報が絶対に目に入らないというのは閉塞感に繋がって良くないんじゃないかな、と。 勿論ゾーニングの必要性はありますが、完全にドメイン特化した情報しか手に入らないならクローズドなチャットシステムであってマイクロブログでは無い気がする。

アカウント

公開状態と鍵垢状態は必要そうだなと。 アイコン(プロフィール画像)は要りそうだけれど、背景画像まで用意すると割とコストになりそう。 プロフィール文章は必要として、所属組織とかのフィールドを設けると硬くなってしまうのではという不安があります。

本文投稿

まあ基本機能ですよね。字数制限はシステムの軽量さのためにもある程度必要な気がします。長文投稿用には自レスで運用する今のTwitteシステムで皆馴染んでいそうですし。あまり長い文はやはりパッと読むには向かないというのもあります。

返信

マイクロブログとしてはむしろ「コメント」と定義するべき部分かもしれませんが。

リブログ(RT)、引用(QT)

連投や流れを無視した「切り取り」に思うところが無い訳ではありませんが、機能としては必要、といったところ。

公開でない投稿を引っぱる際の仕組みには気をつけないといけないかも。

DM

直接応答。Slackみたいに複数人対象をサポートしてもいいのかも。

削除

設計からすると難しい気がしますが、「消した」という意思表明ができればいいかなという感じ。

タグ(ハッシュタグ

或いは「カテゴリー」。 本文フィールドとは別にくっつけた方が処理としては楽そうだなと思うんですけど。 ゾーニングの手段として、例えば「R-18」タグを予約語として用意して、見るには鍵が(アカウントとは別に)要るようにすれば良いんじゃないかと考えたり。他に予約語の候補としては「spoiler(ネタバレ)」を「Anime」タグと組み合わせたときに許可しないと見られなくするとかがあります。

フォロー、ブロック

あんまりアイデアが無いです。

リスト

フォロワーリスト、ユーザ作成リストなど。

URL

短縮URLも実装して、本文領域で済ますのも良いけれど、フィールドを分けたい気持ちもある。 移動先のサムネイルがあると嬉しいけれど、オプショナルな話になりそうです。

メディア

URLと埋め込みの2つの手段があるけれど、どっちもよしなにしたいですね。中央のサーバで捌かない以上、P2Pネットワークに載せたメディアというのは扱いが難しいところです。

Reaction

Twitterでは「ふぁぼ」もとい「いいね」一択ですが、SlackみたいにEmojiリアクションぐらいのバリエーションがあると嬉しいですね。「Unlike」が付く可能性も勿論ありますが。 LINEのように「スタンプ」までいくと難しそうです。

検索

タグ検索、ユーザー検索、本文検索などをね。

アーカイブ取得

分散システムだからこそ必要な機能だと考えています。

後書き

ポエムでした。 特に書くことは無いです。

*1:つまり、理解していない。

最近ergのこと書いてなかったなあって

この記事は

WORDIAN Advent Calendar 2017 - Adventar の19日目の記事です。

今日はポエムでお送りします。

前置き

美少女ゲームが好きです。 進路決めたときも理由の半分くらいに美少女ゲームのことが頭にあったと思います。情報系は美少女ゲームのプラットフォームであるPCを扱う職業だからです。

「性的搾取」とか「表現の自由」とか昨今は(以前からですが)ありますね。

ところで僕、「装甲悪鬼村正」が好きでですね。どのルートも好きなんですが、英雄篇は最初にやったこともあって特に印象的です。

正義を為すことは罪悪である これは避けられぬ理。 潔白にて正義を達する道は無い 邪悪の討滅は、正義がその正義を捨て去ることによってのみ成される 善悪相殺 善と悪は刺し違えて、共に滅ぶもの

まあ、引用してみただけです。ここだけ、今、取り出すとどう解釈されるのか。言葉の応酬というものは所詮ゲームですから、コンテキスト無く語ることはナンセンスで、また元のコンテキストから離れてその言葉を用いるのもまたアレです。

自分のコンテキストすら把握するのは困難であるのに、況んや他者の、他国の、他文化の、他世界のコンテキストをや。碇ゲンドウ君も人と人は分かり合えないと言っていた気もします。

それでも世界は自分だけではないのですから、相互理解の努力を欠かす訳にはいかないのです。

嘘を吐きました。世界はあなた一人、僕一人ではありませんが、世界は自分だけです。自分以外をどう世界に取り込むかは恐らく自由ですが、世界はどこまでも自分の色に染まっています。この辺りの取り扱いを間違えると、悲惨ですね。「相互理解」という名の押し付け合いには気を付けましょう。

本題

最近はようやくというべきか、Android対応のえっちげーなどが出始めました。コンシューマー版タイトルも含めて。 AUGUSTの「千の刃濤、桃花染の皇姫」や、OVERDRIVEの「キラ☆キラ」「DEARDROPS」などが出ていることを考えると、BURIKOエンジンがコンバートしやすい環境があるんでしょうか。いや、各社の根性な気もします。 吉里吉里Android版の開発の話*1もありましたし、「PCでプレイするゲーム」というハードルを取り払う話みたいなのはありますね。

Windowsという話では、ブラウザを利用した、ティラノスクリプトアルマイトJSといった手段も出ていますが、爆発的に流行ったりは今のところしていないので、制約がどこかにあるのでしょう。ちゃんと調べなきゃいけないかもですね。でも、ブラウザ環境(もしくは疑似ブラウザ環境)で動くという方向性は希望が結構あるんじゃないかと思います。

Ren'pyは僕のウォッチしてた頃はPython2環境が必要みたいな状況でした。

現行のゲームってエンジンとUIとスクリプトが不可分で配布(販売)されている感じがありますよね。中身が1つにパッキングされているという訳ではなく、販売形態として。 WindowsPCが今まではスーファミとかPS本体みたいな扱いだったわけですが、ロスが大きいのではという素人考えがあります。JVMとかみたいに1つレイヤを敷いて、その上で動くようにしたいのです。DirectX9.0cがそれという説もありますが、もっとプラットフォームを拡大した際の話として。

その際にUnityやブラウザ環境というのが現行では良さそうという感じがあります。各種スクリプトエンジン毎の特徴や書き易さもありますから、例えば「ERGフリーク」のような状態のものがあれば最高やという気持ちです。 各社そうなろうと努力しているんだろうなとぼんやり思う訳ですが。

ブラウザ環境で単純に動くというだけだと、ラノゲツクールとかになってしまいそうですが*2、提供したいのは「基盤」なんですよね。JS以外の何らかの改造を加えた「ブラウザ環境を基にした何か」。

「ERGフリーク」、他にも利点は多分あって。「DMMブックス」というアプリがあります。DMM(R).comの電子書籍を読むのに使えます。これはGooglePlayで配布ができるんですね。で、R18のコンテンツもDMMのアカウントと紐付いたこのアプリで読めるんですよ。AppleStoreやGooglePlayといった、えっちげーとポリシーの相性が悪い場所でもこれは配布できる。中身に興味を持ってもらうための最初の一歩として、これは大きいのではないかと思います。一般ゲーにも利用できるでしょうし、これを規制するのであれば「包丁は殺人に使えるから禁止」みたいな論法がまかり通るような状態なので世界は末期です。「生殖器はレイプに使えるので禁止」とかいう世界観、1本いずれ書いてみたいですね。

後書き

↑の、できるなら自分で作ってみたいし、誰が作ってもそれはそれでOKという気持ちなので、忘れずにいたいですね。

以上、ポエムでした。

*1:非公式コンバートのkirikiroidなどもありました。

*2:JS+IDEらしい。でも規約でエロゲダメらしいですね。

SmartPhoneにToughnessを求める

この記事は

WORDIAN Advent Calendar 2017 - Adventar の16日目の記事です。

はじめに

人は、自分に無いものを他に求めるのだそうです。ならば、儚い僕達が圧倒的なToughnessを求めるのは、何も不思議ではない訳です。

僕のスマートフォンデビューは京セラのTORQUE SKT01です。周りがスマートフォンだらけになっても僕がヒューチャーフォンから変更していなかったのはそう、頑丈さが足りなかったからです。ですからTORQUEがSIMフリーで登場したときは迷わず注文しました。頑丈さを除いたスペックは当時としても他のスマートフォンと比べ劣り気味でしたが、頑丈さはそれを補って余りある魅力を放っていました。

今回ついにスマートフォンを買い換えたので、軽く書きます。

CAT S60

2017/12/18追記:僕は↑ではなくオンキョーストアにて購入しています。

「Rugged Phone」というのがジャンル的には良いようですが、頑丈なスマートフォンには実はそこそこの市場があります。ボクダケジャナインダ。

頑丈さは当然として、サーモカメラを搭載し、水深のあるところ用に音量の段階を上げる機能も付いています。

喜びの声です。買ったばかりでうっかり地面に叩き落としても、画面が割れたりしない*1

Toughnessのメリット

壊れない。これに尽きる気もしますが。

携帯電話というのは、精密機器でありながらラフな取り回しが求められます。うっかりインシデントは防げないなら、起こっても問題無いものを選ぶというのは当然の帰結ですね。 また、大概この手のは防水なので雨の日や風呂の中でもあまり気にせず使えます。

副次的な要素として、あまり周りに使用する人間のいない形状、機種は知人が多く利用するスペースなどで混同を避けられます。

長く使うものには愛着も湧くというもの。頑丈は信頼へ。

機体にかかる代金は初期費用こそ割高に感じますが、数年使用し、物理的故障も可能性が低いことを鑑みれば大したデメリットにはならないのです。

弊害

長持ちするということは使用期間が長くなるということで。頑丈なスマートフォンは特にソフトウェア面で遅れがちです。堅牢さが確保されている状態からアップデートもあまりかからないので。TORQUEも最後の方はアプリがOSバージョン的に非対応はザラでしたね。

形状が特殊になりがちで、汎用のケースがあまり使えないという点もあります。

余談

今までがAndroid4.2だったので色々できないことが多かったんですが、一気に6ですよ6。いや今や最新は8ですが。

レスポンスはまあ機体由来の性能だとして、UIが明るい感じになったのが大きいですね。あとフォントがNotoSansに。不満はそんなに無いですが、幾つかから選べるようになるとエンドユーザとしては嬉しいですね。

6に上がったので、Pionner製のDAP操作アプリ「Remote Duo App」が動くようになりました。電車なんかでスマートフォンいじりながら作業していると嬉しい機能です。

あと、実家に導入したGoogle Home mini用のアプリも入れました。ChromeCastも持っていないので、当面はBluetoothスピーカーになりそうです。

おわりに

https://adventar.org/calendars/2573

明日の担当は未定です......。

*1:限度はあります

tomboが無ければ作ればいいじゃない

この記事は

WORDIAN Advent Calendar 2017 - Adventar

の14日目の記事です。

トンボ

pLaTeXのパッケージの標準のやつにはtombotombowオプションがついているものがあります。 これは何をしてくれるかというと、印刷所などで入稿する際に必要になったりする「断ち切り線」を追加してくれるんねすね。

さてこのオプション、僕の大好きなbxjsclassesにはついていません。処理系依存の機能を使っているから一部できない処理系があるからだそうで。

でも入稿時に困りますよね。僕の周りでもこのトンボとフォント群のためにAdobe社に頭を垂れた人間を最近見ました。

tombobase.cls

ところで、LaTeXってpdfを埋め込めるんですよ。勿論元のpdfの情報は壊れたり壊れなかったりする訳ですが、まあ表示上は問題無い。つまり、

「一度完成したpdfを取りこんでトンボを加えたLaTeXを再度コンパイルする」

ということができるのではないか、と考えた訳です。

で、基本文書クラスのtombo, tombowに関する部分だけひっぱってくればいいかなと思ったんですけど、いざやってみたら「normalfontの設定がありません」など、tomboにはあまり関係が無い(日時を出力する程度)ところで詰まる。全体をひっぱるなら別にクラスファイルを作る必要は無い訳で。......うん?

結果

A4の文書の場合、

\documentclass[tombo,a4paper]{ltjsarticle}
\usepackage{bxpapersize}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-, offset= 1in -1in ]{main}
\end{document}

tomboの実装があるltjsclassesを呼んで、pdfpagesパッケージを利用、保険としてbxpapersizeを入れれば完成です(main.pdfはA4とします)。 最初は取りこんだ文書が左寄りになってしまいましたが、左の余白を見ると元のpdfの余白と同じ程度。そこでltjsclassesの中身を見ると、tomboは各端+1inchの所になっていたので、offsetオプションで調整しました。

これで対処できなくなるのはA6とかB6サイズを使い始めたときかと思います。 ありがとうpdfpages。

問題点

写真とか絵などはみ出すやつをこの方法だと作れないんですね。

参考

Next day

明日はwakarin111君です。

Golang でC++のプログラムを書き直す

ゆずソフトの単独ライブ決まりましたね。OPの榊原ゆい単独体制からの移行はこの為の伏線だったと思っています。

この記事は

WORDIAN Advent Calendar 2017 - Adventar の9日目です。

※本記事は技術記事ではありません。多分。

始まり

github.com

「おっGolangで実装したSubsonicAPIのあるサーバー、ええやん!」と思い、開いたところ、

Lightweight Subsonic server written in go (server) and c++ (media indexer) using sqlite as backend and taglib for indexing.

「エッC++ナンデ......」となったので、

「よっしゃGolangで実装したろ」 とやる気が発生したので進めていくことになりました。卒研が行き詰まっているとかそんなことはね。ハハハ。問題点ははっきりしているのでもうすぐ危機は脱するよ、多分。

勿論Golangにはcgoのライブラリも結構な数が存在し、それらを使うことを踏まえるとPure Goで書く、Golangのみで実装するといったことはあまり意味は無いのかも知れませんが。

幸いにも相手は1ファイルのみ。まあ、なんくるないさー。

他人のコードの再実装は、楽しい!

言語が違うと例えばprint文の書き方も異なってきます。しかし、やりたい内容は別言語で既に書いてあるのです。卒研とは違います。

Golangで書くと見た目整っていいですね。これは個人の感想です。

ついでに書けば、Githubの草生やし活動として「楽」。だって気づいたら「TeX」タグのついたRepositoryばっかりだった訳で、シューカツ的にもあまりよろしくありません。

終わり

8割方の作業は終わりましたが、まだ完成していません。

明日の担当はKarasuTX君です。

プラハ2のアリスティアいちゃいちゃアフターもDLしなきゃ......。

Google HomeとHome-Radi

この記事は

WORDIAN Advent Calendar 2017 - Adventar

の7日目の記事です。あと何日埋めることになるのか。

Intro

皆さん、ほめられてのびるらじおZ、通称ほめらじ、聴いてますか? 僕は最近聴けてません。

ツイで流れてきて知ったんですけど、ほめらじ初のPCゲームがPOP祭りで出るとか。これは再びほめらじリスナーになる機運が高まりますね。でもブラウザを開いて再生する労力が最近は衰え気味なので、Google Homeから再生してもらえたらな、というのが今回のモチベーションです。とはいえ、音泉のアクセス集計の役のは立ちたいので暖かみのある手動ブラウザアクセスについてはまた検討したいです。

前情報

ほめられてのびるらじお

ゲームメーカーPurple Software*1ぱれっと*2がコンビを組んでお送りしていた筈のネットラジオ。パーソナリティーは風音様と荻原秀樹さん。10周年を迎えた。ネットラジオとしては異例の長寿番組、の筈。

Google Home

Google Homeとは皆の玩具です。もう少し詳しく説明すると、所謂「スマートスピーカー」というヤツで、音声でコマンドのやりとりができます。様々なIoT機器と連携し、目指せスマートホーム。

編集部にも1台あるので、折角だからコイツから ほめらじを流してもらいましょう。

Heroku

ホスティングサービス。対立候補としてGAE*3などがありましたが、料金体系の前に敗北。用途と相談して、これに落ち着きました。アカウントにメールアドレスと名前を登録すればメールが届いて始められます。

基本的な使い方についてはチュートリアルを参考にしてください。

IFTTT(イフト)

"If This Then That" 異なるアプリ、デバイスの中継をやってくれるサービス、で大体間違っていない筈。これでGoogle HomeとHerokuを繋いでもらいます。 比較検討の結果、Dialogflowになりました。ついでにHerokuも無くなりました。

Dialogflow

google-home-notifier

JSライブラリ。解説は

Google Home開発入門 / google-home-notifier解説 - Qiita が良いです。

実装

とはいえ、npmに音泉の謎APIをライブラリ化した先駆者がいらっしゃるので、それを利用させてもらえれば大幅に手間は縮小します*4

という訳で、流れとしては

  1. Google Homeに「音泉」と言う。
  2. Dialogflowでエージェントが起動する。
  3. Google Homeに「ほめらじを流して」と言う。 1.DialogflowがローカルサーバにJSONを飛ばす。
  4. ローカルサーバが音源のURLを取得する。
  5. ローカルサーバがGoogle HomeにURLを飛ばす。
  6. Google Homeが音声を再生する。
  7. ほめらじが流れる。

では、やっていきです。

問題発生

case:1

kotodama.today

という訳でローカルに転がっているサーバにWebhooksを喰わせて行くことになりました。

ローカルサーバ使うならHeroku要らなかった説は正直ある。

case:2

「Dialogflowとfirebaseで簡単に連携できるし、ファンクションのホスティングもしてくれるからこれだけで良くね?」となって暫く実装を進めたものの、どうにも動作しない。よく見ると料金体系のところに「無料枠ではOutbound Network使えないよ」という旨の記載が。使いたければ富豪になるしかねえ。

この方式で行くなら

qiita.com

が参考になります。app.tellapp.ask

speak = `<speak><audio src="${url}"></audio></speak>`

喰わせるの(実際はもう一手間要りますが)、ハックという感じがしていいですよね*5

Outro

進捗:ローカルサーバにDialogflowの応答を受けたら再生可能な状態にした。が、Dialogflowのアカウント設定やエージェント設定やらで謎な状況になってしまったのでここまでです。

ちょっと忙しかったり記事書き足したりして滅茶苦茶になってしまったのでリベンジします。

明日の担当は @linerlock 君です。

*1:最新作は「アオイトリ

*2:最新作は「9 -nine-」シリーズ

*3:Google App Engine

*4:リンクは多分載せない方が良さそうな気がする。ググれ

*5:通常渡したstringは問答無用にTextToSpeech噛ませられるが、こうするとurlを音声ソースとして扱ってくれる