takashiskiのブログ

覚書の殴り書き

flexispotを組み立てた

社に追加されることになり、自主的に二日連続で合計2台組み立てたのでなんとなくわかった。

買ったら速やかにすべきこと

  • ねじの検品
    • なんかぼろぼろで、自分で穴をあけれない木ネジがいた。
    • 下穴がないとまったくはいらなかった

必要な道具

ねじは木ねじと六角穴のボルト。木ねじ22本を手で入れていくのはなかなかつらいと思うので電動ドライバがあったほうがいいかんじ。

読み合わせしてどう動けばいいか分かった状態なら、複数人で並行処理すると作業時間が大幅に短縮できると予想される。

  • 人数分の電動ドライバ
  • 人数分のビット
    • No2+
    • 六角4mm, 5mm
    • ドリルビット(測定し忘れた)

ビットは消耗品だし、適当なセット持っておくと穴開けに便利だと思う。

あるといい道具

六角レンチにプラスドライバーがくっついたやつついてくるけどちゃんとしたやつがあったほうが楽。

増し締めするときと、ゆるめるときの最初だけは電動ドライバを使わずに手でやることをお勧めする。

今回は電動で締めすぎると、ネジ穴を壊す恐れがある部品が多い。最後に固く締めるのは手でやったほうがいい。緩めるときも同様に最初の硬いところは人間の手でやったほうが良いと思う。

  • No2ドライバー
  • ボールレンチ

あるといい消耗品

  • でかい段ボール何枚か
  • ひっくり返したり回したりのときに傷がつきにくくなる
  • 結束バンド
    • たぶん、カバーの穴を使ってカバーにケーブル固定したほうがいい

公式以外の天板

公式の天板は位置決めのための下穴がいくらかすでに開いている。 自前天板だとそこを自分で開けないといけないので、中央を検出したり、任意の場所に下穴を設置できる技能が必要である。

多少歪んでても倒れなければいいよの精神で適当にやっても、致命的な問題はなさそう。

手順に関して

基本的によく考えられているのでそのままやればよい。

図のネジが通っている穴をちゃんと確認すれば間違わないはず。

しいて言うならば、足のとりつけ位置を決める工程では、足をネジ止めする大体の位置決めてから中央ネジ止めで幅固定するよりも、四隅を仮止めして足の位置の仮決めが済んでから中央を固定しないとゆがむと思った。

必要空間に関して

天地返しが必要になるので、長辺の1.5倍程度の横幅、2倍程度の縦幅の空間が最低で必要になる。 これはあくまで組み立てと天地返しをするときに必要な広さである。組み立て前の足などをこの枠の中に入れるとなかなか狭い。

そのうえで45Lゴミ袋3つ分+でかい段ボールたちが発生するので、もう1x1m程度の広さが欲しい。ベッドの上など置ける空間ならどこでもいい。

重量に関して

適切に持ち上げないと腰や背中を即座に破壊するであろう重量である。とはいえ40kg程度なのでまぁまぁ持てるし動く。 脇を締めて膝をしっかりまげて腰を使って持ち上げることで何とかなる。

感想とか

とりあえず組み立ては二人いれば確実にできて、一人の場合はある程度の重量を安全に持ち上げられる人なら可能。

机の使用感は、まず糞重いのでぐらつきがすくなくてすごくよい。

また、副作用として机の高さを1200mm程度まであげることで、ほとんど屈まずに机の下に潜り込めるので掃除や机周辺の物の整理が楽になる。

人間工学の観点からだとどう扱うとよさそう、みたいな話は条件多くてひたすら長くなるし、たぶん技術書典でそういうことばかり書いてる本(キーボードの話が主なはずだった)を書いて売ってる/売るからそっち読んで。

浅草の飯

3年くらい住んでた浅草の飯を思い出しながら書く。 2018年の情報なので注意。

全体の感想

育ちは岐阜愛知だけど、大学で物心ついてから(?)は長野だったので、味覚は長野よりで割と何でも好き。

東京という地方の飯はあんまり好みじゃない感じだった。特に、うまいとされる麺類の感じがあまり好きじゃなかったようにおもう。麺は歯切れよくてなんぼだと思う。

浅草はよほどひどい店じゃない限り一見の観光客が無限に供給されてくるせいですごいつらい店も生き残っていて、一通り回るのを途中であきらめた。店の数がやたらあるのに地雷もやたら多い。

居住地域に近かった観音裏は観光エリアから外れるので、比較的よかったがどちらかというと飲み屋しかないので辛かった。

超通った店

ミスターデンジャー

プロレスラー松永光弘さんのお店の分店。本人は本店をやってるのでここにはいない。 浅草寺の裏側、六区側から花屋敷の横を通って斜めにいくとある。

150g1500円、300g2000円。食べログでメニュー写真見たら増税で値上がりして、300gは2100円になってた。 サラダとライスとスープがついてこの価格である。

特徴はとにかく柔らかい肉とたれの多さ。どんな疲れててもぺろりといけた。 たれはなんか5種類くらいあった。だいたい塩と甘口ソースで食べてた。

ここにさんざん通った後に、駅前のミスタードーナツがなくなっていきなりステーキができたので入ってみたら硬くてしんどかった。

どうでもいいけど斜め向かいに瓦割専門店がある。土日しかやってない。

ジムでトレーニングした後に大体ここかこととい、あとは吉野家にいってた。

tabelog.com

こととい

ザ・定食屋という感じの店。岐阜系の濃尾平野な味付けが食べれる。

だいたい一食1000円だしたらおつりがある程度の価格。

味の傾向が合致したら外れなくいけるとおもう。

日替わりメニューが多いので、「うまそうだなーでもまたでいいや」をやると食べ損なうことがたびたびある。

大家が近所にあってそこそこテレビで紹介されているたい焼きの写楽写楽でたい焼きかって、そのままマメココロでコーヒー買って帰るということをよくしてた。さらにそこの先にある徳太樓という和菓子屋のきんつばが超おいしい。

ここのジムの帰りに空いてたらよってた。

tabelog.com

ゆきかげ

鶏ラーメンのおみせ。

プレオープンのときに食べに行って、生活動線上でこの品質のラーメンが食べられることがわかってすごい喜んだ記憶がある。 一通り食べるために週3以上でしばらく通ってた気がする。

好きだったのは、珀黒、朱、鶏天丼の3つ。 麺は常に固めで頼んでた。

珀黒はなんか好きだった。まれに出汁が返ってしまったのか、味がない日があって辛かった。

朱は辛いのに味がしっかりしていてすごく好きだった。

鶏天丼はつゆ多めなときがすきだった。たぶん出汁が好きなんだと思う。

餃子も好きではあったのだけど、ラーメンが酢と相性が悪く、店も配慮してフルーツ酢にしているものの、酢に負けてしまう。 特に珀黒は餃子を酢で食べた直後は全く味がしなくなる程度に繊細であった。

あと桜餅あじジェラートが好きだった。まだやってるのかなぁ。

と思ってググったら先月西日暮里にジェラート専門店オープンしたことが判明。なにやってるの...

twitter.com

tabelog.com

とんかつとお山

東武線北側出口、エキミセ北側出口の通りのすぐ西側にあるとんかつ屋さん。 塩でうまく食べれることを売りにしているお店。 「えっこれが1000円でたべれるの?」な品質のロースのとんかつがでてくる。

味噌汁がすごい好きだった。小鉢も好きだった。

昼は糞混んでるけど夜は比較的空いているのでよくふらっと食べに行った。

サーモンとかささみとか基本的になんでもうまかった。

晦日に食べに行った程度には好き。

tabelog.com

そばうどん文殊浅草店

銀座線の東武線側出口の、地下街との間にある蕎麦屋さん。 東京の立ち食いそばチェーン。超汚い外見してる。

基本的に東京のそばは、高くてそれなりで少ない量か、安くて低品質で普通量しか見つけられなくて辛かった。

特に、立ち食いそば系のチェーン店は、蕎麦が好みじゃないか、出汁が好みじゃないかの最低どちらかだった。

文殊は超安いのに茹でて締めて温めなおしたそばが出てくるので雑に食べたくなったときはいってた。 ざるでもいけるけど、やはりこの価格帯のそばはかけ蕎麦がよいと思う。 500円であのざるそば出してくる長野の小木曾製麺所が異常。

現金メニューでかきあげなど追加可能であった。

tabelog.com

台東区墨田区

すずめ食堂

曳舟駅前のイトーヨーカドーの外壁にあるラーメン屋。 長野駅前にあったゆいが第一義のラーメンどんぶりが調理で使われてる。 また、魚介味噌ラーメンがゆいが第一義のラーメンに近かった。

長野のラーメン食べたさにいったのだけど、だいたいいつも混んでた。

tabelog.com

余談だけど後楽園/春日のあたりにある烈士殉名と魚雷も長野のラーメン系列(ボンドオブハーツ)。個人的にはラーメンより焼肉定食がはずれない系列だった覚え。

タンタンタイガー

蔵前にある、東京で流行のどう考えても担々麺ではないと思う系統のおいしい汁なし担々麺のおみせ。 阿吽なんかと同じ系統。

余談だけど、山梨(石和温泉)の北斗辛軒のオーナーに「阿吽に絶対いったほうがいいよ」といわれて阿吽とかタンタンタイガーとか何件か回った、北斗辛軒のほうが圧倒的に好きだった。

tabelog.com

百年本舗

末広町駅前にあるラーメン屋。銀座線の民だったので、マルツとか秋月とかの様子見に行くときに立ち寄ってた。

ローストポークが載ってる比較的シンプルなラーメン屋。ねぎダブルトッピングするのが好きだった。

京都ラーメン系を期待していったら全然違ったけどこれはこれですごい好きだった。

太陽のトマト麺

上野広小路本所吾妻橋にあった。 超好きってわけではないけど、たまに食べにいっていた。

他にもあった気がするけど忘れた。あ、今は亡きあいつのピッツァもよかったなぁ。

浅草いったらとりあえずミスターデンジャーいこうぜ。

Noitaですでに定義された杖を初期装備とする最低限のコードかいた

概要

前の記事で使った wand_good_1を初期装備とする最低限のコードを書きました。haxeで。 大事なとこだけ読みたい人は本題まで読み飛ばしてください。

takashiski.hatenablog.com

github.com

Haxe?

ActionScriptっぽい構文で色々な言語のソースコードを吐き出せるやつです。

haxe.org

今回はLuaが辛そうだったので、Luaを隠蔽するためにHaxeを使っています。

あとXMLを吐くためにnodejsを使っています。これはなんの言語でも構いません。

NoitaのLuaライブラリ->Haxe->Lua

Haxeでそのまま何でも書けるわけではありません。

Externという機能を使って、外部ライブラリのHaxeでのインターフェースっぽいのを書くと書けるようになります。 TypeScriptの型定義が似てるらしいです。

haxe.org

  • このHaxeクラスはどのライブラリのクラスと対応があるか
  • このクラスはどんな関数/変数があるか
  • この関数の型と戻り値は何か
  • この変数の型とアクセス権限はどうなっているか

あたりを記述します。

これは別にすべてを網羅する必要は必ずしもなく、実際に使う関数/変数だけを記述すればよいです。

hxnoita

今回私はhxnoitaという名前でnoitaのluaライブラリ?のhaxe externを書いています。 とりあえずEntityとComponentを接頭辞とする関数群だけまとめてあるていどです。 あと既存のPerk名と既存のSpell名。

github.com

本題

前の記事で使った wand_good_1を初期装備とする最低限のコードを書きました。

takashiski.hatenablog.com

最低限のファイル構成

modは最低以下の2ファイルから構成されます。

mod.xmlには、noitaのmod設定画面で表示される名前と説明を記述します。 それ以外の役目は私は今のところ分かっていません。

init.luaではmodのふるまいを記述します。今のところOnPlayerSpawned関数内に書いた処理が、プレイヤーキャラクターの出現時に実行されることがわかっています。

今回のファイル構成

杖を読み込むべく、前回の記事で読み込んだwand_good_1*な名前のファイル群がまるっとコピーしてあります。これらはまだHaxeから生成していません。

もうちょっと詳しくなったら適当なファイルと置き換える予定です。

init.luaはMain.hxから、mod.xmlはXmlInit.hxから生成しています。

処理の流れ

  • inventoryのEntityIdを取得する
  • inventoryを空にする
  • 杖をファイルから読み込む
  • 杖をinventoryにいれる
  • 水ボトルをファイルから読み込む
  • 水ボトルをinventoryにいれる
  • 水ボトルをファイルから読み込む
  • 水ボトルをinventoryにいれる

処理の解説

内容はすべて、私がやってきた中で感じた憶測になります。Noitaのmod APIはほぼ説明なく公開されている状態ですので、既存のコードや誰かが書いたコードを読んで感じ取るしかなかったからです。

事前知識

基本的にNoita内に存在するすべてのモノにはEntityIDが割り振られています。 Entityに対して直接操作をすることはできず、常にEntityIdを使ってやりとりをします。

inventoryのEntityIdを取得する

プレイヤーエンティティの子要素のどれかがInventoryということだけはわかっています。 なので総当たりで名前がinventory_quickかどうかを調査し、inventory_quickだったらinventoryとしてEntityIdを記録します。

inventoryを空にする

この処理は今回は杖と水ボトル2個を追加するだけなので、消しても動くかもしれません(試していない)。

Inventoryの子要素は所持している杖もしくはアイテムです。 全て置き換えたい場合は、すべての子を取得して、すべて削除します。

杖を読み込む

杖のXMLファイルを読み込みます。 それだけです。

このあとに杖の数値の変更をする関数を実行しても問題ありません。

杖をinventoryにいれる

取得処理です。子要素として追加するだけですね。

水ボトル

杖と基本的には一緒です。

2回取得処理をしているのは、同一EntityIdだとまずいという考えです。たぶん失敗するんじゃないかと思います(試していない)。

余談ですが、potion_water.xmlがあるフォルダにはほかのポーションが並んでいます。

定義済みの任意の杖を初期装備として始めるModがかけました。

余談

noita.gun.procedural.GunActionUtilsの下に、AddGunAction()とAddGunActionPermanent()が定義してあります。 第一引数は杖のEntityId、第二引数は今のところSpellsです。Spellsは実体はStringで、既存の魔法を列挙してあります。

使用例は以下です。

            GunActionUtils.AddGunActionPermanent(wand1,Spells.SPIRAL_SHOT);

これを杖情報を取得した後に実行すると、このコードであればwand1が常時詠唱魔法としてスパイラルショットを持ちます。 Spells.まで打ち込むとサジェストがあるはずなので、適当なスペルを当ててみてください。

AddGunActionであれば通常の魔法として杖に追加されます。

Noitaの杖の定義を読んでみる

Steamで人気?のNolla gamesのNoitaのコード読みます。

今回読むのは、杖の定義です。

具体的には、NoitaのModを使うための手順だったかで「これをルートフォルダに移動して実行しろ!」とか書いてあるファイルを実行したときに展開されるファイル群の中に入っているdata/entities/items/wands/wand_good_1*です。

事前知識

  • 何故か内部定義ではwandではなくgunが使われているようです。もともとはそういうあれだったのかもしれません。
  • コードの記述され方がバラバラです。グローバル領域にべた書きされている部分もあれば、関数でくるんで定義直後で関数呼び出ししているものもあります。
  • どこからでも呼べるAPI関数はパスカルケースのようです。使い捨てな関数はスネークケースのようです。 また、変数名はスネークケースなようです。
  • 基本的にLuaスクリプトを書くことで世界を制御できます

XML

杖の読み込みはXMLをEntityLoadで読み込むことで完了します。まずXMLを読みましょう。

  • Entity
    • AbilityComponent
      • gun_config
      • gunaction_config
    • HotspotComponent
    • Base
      • ItemComponent
      • SpriteComponent
      • SimplePhysicsComponent
    • LuaComponent
    • ManaReloaderComponent
    • LuaComponent(2個目)

なんとなーく名前からわかる気もしますが、ぱっと見ただけではよくわかりません。

ほかのファイルとの関係をみる

同じフォルダには、同名の拡張子違いのファイルがありました。 それらのファイルとの関係性を探ることで何かつかめる気がします。

その視点から見ると、いくらか他のファイルへの参照を持っている要素があります。

  • AbilityComponent
  • Base
  • SpriteComponent
  • LuaComponent
  • LuaComponent(2個目)

このうち、AbilityComponentとSpriteComponentは同じwand_good_1_sprite.xmlへの参照を持っています。

Baseはbase_item.xmlなので名前から素直に考えると、雛形的な何かのようです。 ちらっとみてみたところ、物理演算廻りの数値や当たり判定、光源や音などが定義されているようでした。

残る二つはLuaファイルへの参照を持っています。 1個目はwand_good_1.lua, 2個目はwand_good_pickup.luaです。

基本的にはModはLuaで書かれることになっているはずですので、見ていきましょう。

lua(wand_good_1.lua)

外部ファイル読み込み

dofileは外部ファイル読み込みです。noitaでは関数やテーブルが定義されているファイルを読み込むために使われることが多いです。

必要なら後から読みに行きましょう。

あとdofile_onceがnoitaで定義されて現在ではそちらが推奨されているようです。

関数定義

functionから始まるのは関数定義です。

これらは杖の内容をランダムにしたいときに使う便利関数のようです。

実際の処理

localがローカル変数の定義で、ここからがこのファイルの処理内容のようです。

おそらく最新の==使用されていないEntityIdを取得します。 このEntityIdの位置情報を乱数のシードに使います。

XMLのAbilityComponentをTableとして取得します。

そのあとに杖の能力を定義しています。振れ幅を持ちたい数値は、{下限,上限}や候補などの形で保持しています。

最後に、XMLで定義されていたオブジェクトたちに対して値を代入していきます。

ComponentSetValueは今回はAbilityComponentの要素として、ComponentObjectSetValueはAbilityComponentの子要素の要素として値を代入する関数のようです。

最後のAddGunActionは杖が持っている呪文を定義する関数です。 コメントアウトされているAddGunActionPermanentを代わりにつかうと、永続呪文として定義されます。

Lua

Luaスクリプトの中身は以下の要素から構成されていました。

  • (便利関数定義)
  • AbilityComponentをテーブルとして読みだす
  • 杖のパラメータをAbilityComponentのテーブルに代入する

Lua(wand_good_pickup.lua)

2個目のLuaスクリプトのwand_good_pickup.luaを読みます。このファイルは1関数が定義されているようです。

通常アイテムの取得処理はEntityAddChild()を使ってインベントリーエンティティに対してアイテムを追加します。

どうやらこの関数はワールド内にこの杖が一つしかない状態にしたいようです。 内部に取得処理は特に書かれていないようにみえます(entity_who_pickedが引数にはあるけど使われていない?)。

とりあえず杖の存在の性質(ユニークアイテム)には影響を与えそうですが、杖の能力自体には影響がなさそうなので無視してよさそうです。

まとめ

以下のことが分かりました。

最初は適当な杖のXML定義を改造して、何をしてよいのか探るのがよさそうです(Mod内でエラーがあっても握りつぶされます)。

次は、初期杖を変更するModを書く話をします。

Noita基本戦略

書きかけです。

Steamで配信中のNoitaの基本戦略的な話です。

必須知識

  • ボトルは右クリックで撒き散らせる
  • 水で毒は中和できる(錬金術
  • 水で溶岩は石にできる
  • 水で炎は消せる
  • スライム・血でも炎は消せる/防げる

  • シャッフルでない杖は左から順に再生される
  • ダブルキャストや分岐など複数同時詠唱系は左側におく
  • 軌跡系は左側に置く
  • トリガー系はなるべく後段に置いたほうがよい。前段に置くと、次の呪文がダブルキャストなどで詠唱されない
  • 歯車・炎が強いのは序盤だけ。中盤以降スライスダメージや炎に耐性をもった敵が出現する

Perk

  • 適当分類
  • 書きかけ

地雷

  • ブーメラン
    • 遠くから殴ったほうが基本的に都合がよいゲームなのに近距離戦を強いられる
    • 爆発物使うと自分のとこに戻ってきて死ぬ
    • 酸とか炎もそう
  • ガラスキャノン
    • HPの最大値が固定で下がるのであまりにもきつい
  • Worm系
  • テレポート
    • 事故死率がすごい

あんまりうれしくない

  • 救い
    • 事故による即死防げるけど、HP1では大体そのあとがだめ。
    • エクストラライフとの組み合わせなら何とかなるかもだけど、それより耐性積んだほうがよさそう
  • Vanpirism
    • 回復量が微々たるもの&だんだん普通の出血する敵がいなくなる
  • greed
    • 2面くらいまでならあってもいいかも。それ以降は取ってると金策 or 大量に手に入る
  • trick greed
    • 事故死のみ対象なので論外。とるものなければ。
  • 電撃耐性
    • あってもいいけど、単独の電撃は序盤のトラップくらいしかなかった気がする
    • 電撃が電撃耐性も兼ねてるのでとるならそっち

優先度高

  • 耐性系は迷わず取ってもよい
    • 中盤以降の事故死確率がだいぶん下がる
  • クリティカルヒット
    • クリティカルになれば攻撃力が低い武器でもなんとか戦える
  • ホーミング

あればうれしい

  • バウンド
  • Lottery
    • 50%でパークが複数取れるパーク
    • 長期的にみると価値があるけど、序盤で苦労してるなら無視して耐性とかとったほうがよさそう
  • 電撃
    • 液体に一緒に入ると即死させられる
    • いろんなものが近づくと発火するようになるので、実験的にプレイしないと大体死ぬ
    • 爆弾を液体中で投げると即起爆する
    • 最低火耐性、できばれ爆発耐性も持って使いたい
    • 電撃耐性は含まれているので不要

どうしても3面くらいから進めない人へ

1面で画面右下にいって溶岩の海を渡ろう

  • 最大+50HPがえられる
  • ホバリングならジャンプ2ゲージ分でいける(たぶん1.5ゲージくらい?)
  • まんなからへんに水ボトルからすこし水をたらして休憩すれば渡れる
  • 溶岩の海の右側にはたまに宝箱かエクストラライフがおいてある
    • ないこともある
  • その右側は崖だけど、対岸がある
    • 1ゲージで渡れる
    • 崖から落ちてしまうと3面あたりに合流する。もちろん2回分の聖なる山を通れなかったことになる
  • 対岸の奥の部屋にはオーブとともにエクストラライフがある

我慢を増やそう

  • 回復手段が乏しいこのゲームでは金より命
  • 滞在時間上限は特にないので、待てば消えるリスクは待とう
  • 燃え尽きるのは待とう
  • 酸は揮発するのを待とう

水を撒こう

  • 水を撒けば炎も猛毒ヘドロも怖くない
  • すぐに落ち着いて水をかぶったり撒く練習をしよう
  • 水場がどこにあるかは覚えておいて、まめに補充しよう
  • 猛毒ヘドロも水を撒けば水になる
  • 間違えて割ってしまうことがあるので、ポーションボトルは2本以上持っておこう
  • どこでも捨てられる薬品、捨てられない薬品を覚えよう
    • 捨てにくいやつ(変体系とか)は聖なる山の左側のへこみとかが便利だと思う

半分運ゲーでもあるし割り切って進もう

  • youtubeでspeedrunみると愕然とするかも
  • 所詮アーリーアクセスだし、万人が楽しめる/求めているゲームバランスではないよ!
    • moddingが提供されているので拡張しよう

UIでDrag&Dropをする、のメモ

うんうん悩んでやっとわかった気がしたのでメモ。

Drag

  • CanvasGroupをもたせる
  • CanvasGroup.blockRaycastsを開始時にfalse、終了時にtrueにする
  • IBeginDragHandler,IEndDragHandler,IDragHandlerを継承する
  • OnBeginDragで親オブジェクトを退避する
  • OnEndDragで退避していた親オブジェクトを親オブジェクトに設定しなおす
  • OnDragではマウスポインタに追従させる処理をする

Drop

  • IDropHandlerを継承する
  • eventData.PointerDragでDropされたオブジェクトを取得可能
  • 直接parentを編集することもできるが、RectTransformの親を外からSetParentでいじることはよくないらしい*1ので、Draggableなクラスであれば退避されている親を書き換える。そうでなければなにもしない

参考記事

最終的に最後の記事の内容がよさそうだと思った。

komekkun.com

qiita.com

qiita.com

*1:Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.

技術書典で見向きもされない状態を防ぐためにできること

この記事はポエムです。出典は特にありません。

個人的な技術書典の感想

技術書典は同人誌即売会ではありません。技術書即売会です。 基本的に来訪者は自分の糧になるものを求めて訪れているように感じます。

そのため、「今は効かないがいずれガンに効くようになる」のような不確かなものや、「おれはこれがすきだから、これを使ってこれを作ってみた」のようなエクストリームなものは比較的売れず、 即物的な「○○入門」「○○をやってみよう」というような本、または「○○で××をするノウハウ」のような実用的な本が売れる傾向にあるように思います。

極端な話をすると「○○で飯を食えるようにする技術」みたいな本を求めてきているのかもしれない、と感じます。

爆死する本の傾向

「売れなかった」よりも「爆死した」と書いたほうが表現的にマイルドな気がするので爆死を使います。

なんとなく感じる傾向は以下です。

  • サークルカットが目に留まらない
  • タイトルからキーワードを連想しにくい
  • 表紙からキーワードを拾いにくい
  • 本質的なキーワードがわからない
  • ブースの目の前にいても見えない
  • なんか近寄りたくない

サークルカットが目に留まらない

技術書典の参加サークル数がとても多くなってきたため、真面目にすべてのサークルを事前にチェックするのは現実的にできません。 そのため、多くの人はtwitterで流れてきたサークルを拾い上げるか、サークルカットだけ適当にざーっと流し見していると思います。

このとき、サークルカットを追加していなかったり、サークルカットの目に留まる位置にキーワードが含まれていないサークルはチェックされません。 なかったものとして素通りされてしまいます。 デザイン的な信念があるかもしれませんが、技術書を売りたいのであれば諦めてスーパーのチラシのごとく重要なキーワードが目に留まるようにちりばめてください。

タイトルからキーワードを連想しにくい

極端な例だと「サークル会報 vol.1」です。このサークルが何をしているサークルなのか知らなければ、中身がまったくわかりません。 サークルのことを知っていたとしても、とても幅広い技術に関して複数人が寄稿しているようであれば、興味がある技術がないのかわかりません。

表紙からキーワードを拾いにくい

前述の「サークル会報」のようなタイトルの場合は、雑誌のごとく表紙にトップレベルの目次を列挙して内容を知らせなければなりません。 十分に目次が書かれていなければ、書いてある内容が分かりませんのでスルーされます。

本質的なキーワードがわからない

これはジャンルによるのですが、例えばReactの本はだいぶ多くなっています。そんな中単にReactの本だよー、と出すとどうなるでしょうか。 Reactを理由に買う人もいると思います。とりあえず開いて読んで必要そうだから買う人もいるかもしません。しかし、たいていの人は「またReactの本か、よくわかんないしここはいいや」となると思います。

ブースの目の前にいても見えない

これは透明人間とかそういう話じゃなくて本当にあった怖い話です。

技術書典は動員数と、立ち読み時間に対して通路が狭いです。ちょっとでも2,3人が立ち止まるとあっという間に導線が詰まります。一方通行であればいいのですが、双方向なのでひとが詰まりに詰まってとにかくつらいのです。しかもたいていの人は横にあるサークルを見ながら歩くのでものすごく引っ掛かります。 一番混雑してるタイミングではどうなるかというと、ブースとブースの間に人が6人いる満員電車のような状態になっています。人で完全に視線がさえぎられているのです。

以下のツイートの画像を見てください。

混雑度合いを考えてこの図を見ると、75度陳列ですら意味がないも同然なのです。

なんか近寄りたくない

うさん臭さとか、不清潔感とかそういうのです。技術書典だとあまりないと思いますが、コピー本+手書きPOPしかないサークルは段取りとか準備とかよくなくて内容もあんまりよくないんだろうな...下手したら一晩ででっち上げたんだろうな...という印象になるのでPOPは印刷物として用意して持ち込みましょう。

あと、過剰な呼び込みもめんどくさいので嫌です。試し読みしてnot for meだと思ったのに「どうですか!?」ってキラキラした目を向けられ、それに対して「アッいらないです...」っていうの、とてもパワーがいるんです。

対策

タイトルと表紙をちらっと見ただけで主題を読み取れることが理想です。

すでに入稿は終わってしまっているはずなので、不十分に感じたらPOPで対応してください。

そしてPOPは必ずPOPスタンドを使って吊るしPOPにしましょう。座っている人が全く見えないくらいの高さで吊るすべきです。 あなたのサークルを知らない人は、移動中の一瞬でその吊るしPOPを見て、見るべきかどうかを判断します。

吊るしPOPにはPOPスタンドが必要です。椅子の後ろにクソデカポスターを吊るすか、卓上に置くかです。 卓上POPスタンドはT字バーを2分解できるタイプじゃないと、Tのままになってしまってとてもかさばります。気を付けてください。

新 フロアスタンド 黒 K-PT1039

新 フロアスタンド 黒 K-PT1039

声掛けは「あっこの人うちのサークル見てるな」と思ったときに「試し読みどうですか?」と声をかけるくらいで十分です。内容に関しては聞かれたら返答すればいいのです。みなPOPで概要は分かっています。

それと、隣のサークルとの境目を厳守しましょう。人がすでに前に立っているブースのPOPを見たり本を試し読みするために、隣のブースの前に立って横から取りに行く人がいます。 少なくない人数がこの行為をするのですが、隣のブースから見たら関係ないおっさんが自分のブースのPOPの前に立って視線を遮っているわけです。下手したら尻向けてます。バックパックがうちのサークルの客にぶつかってます。速やかに声をかけて移動してもらってください。

自分のブース目当ての人間が隣のブースの前に立った時もそうです。技術書典は比較的呼び込みなどもフリーダムで下手すると机の切れ目からブースの前にでて声掛けをするサークルまでいます。 混雑の原因を作ったり、混雑対応を全くしないことが自分のブースに影響するようであれば直接文句を言うか、運営に声をかけて対処してもらうほかありません。この間の損失は誰も補填してくれません。

展示例

www.irasutoya.com

「吊るしPOP大事だよ」と「隣のブースとの境目は守れ」が書きたいだけのポエムでした。

あ、あと後払いの登録は事前に済ませておきましょう。当日では間に合いません。今回から後払いにダウンロードコンテンツを追加できる機能が追加されたそうなので活用しましょう。

追記

見本誌提出締め切りのお知らせとともに、制限緩和と禁止行為の連絡がありました。

■サークル出展ブースの制限緩和について
□………………………………………………………………………………………………
技術書典6では持ち込み物の高さ制限を緩和しました。
いままで150cmまでとお願いしておりましたが、安全性が確保されていれば高さの制限はありません。
もっとも安定して、安全が確保できる高さにしてください。
(ポスターなど自立するスタンドによる掲示を想定した緩和です。天井が近い、
電気設備に近接するなど防災上の理由でお断りする可能性もあります)
またポスター以外たとえばのぼりやバルーンといった特殊な掲示物は
サークル向けFAQを更新しております。詳細は「持ち込み物について」等をご確認ください。
https://techbookfest.org/event/tbf06#faq
今回も会場は混雑を予想しています。
スペース外への掲示物や荷物配置、通路での呼び込みなどは禁止しています。
当日を無事に、そして楽しく過ごせるよう皆様のご協力をよろしくお願いいたします。

ポスタースタンドを使った、自立していて転倒の危険がない掲示であれば問題がないようです。パイプ椅子に棒縛り付けて吊るす、みたいなのは絶対倒れるので150cmまでです。

というわけで、積極的にポスターを高く掲げましょう。ブース番号とサークル名、キーワードを忘れず記述しましょう。忘れがちですが、表裏で必要です。

そして、やっぱり通路での呼び込み禁止ですね。列整理は列整理だけに徹しましょう。