フックラボとは
「フックラボ」は、トイレや洗面所の壁に取り付ける引っ掛け(フック)を自分で設計して、壊れるまで荷物を掛けるブラウザゲームです。節点と部材を自由につないで2D平面の骨組みを描き、部材ごとに素材と断面形状・寸法、そして梁(剛結)か筋交い(ピン結合の軸力材)かを選びます。壁ぎわの節点には留め方を割り当て、荷物を掛けたい節点を掛け点に指定します。試験フェーズでは荷物を1個ずつ足していき、どこかが耐えられなくなった瞬間に終わります。計算はすべてお使いのブラウザ内で完結し、外部ライブラリも使っていません。
2次元フレームの剛性マトリクス法で解いています
骨組みは直接剛性法で解いています。節点ごとに水平変位・鉛直変位・回転角の3自由度を割り当て、部材を梁‐柱要素としてモデル化します。要素の局所剛性行列は軸方向の EA/L と、曲げの 12EI/L³, 6EI/L², 4EI/L, 2EI/L を並べた標準形です。これを部材の傾きで回転変換して全体座標に直し、全体剛性行列 K に足し込みます。支点の自由度を取り除いた縮約系 K u = F を、部分ピボット付きのLU分解で1回だけ分解し、荷重が変わるたびに前進・後退代入だけで解き直しています。
自重は、要素の分布荷重を等価節点荷重(両端に qL/2 の力と ±qL²/12 のモーメント)に置き換えて与えています。この扱いをすると、等分布荷重を受ける梁の節点でのたわみが厳密解と一致します。実際、テストでは片持ち梁の δ = FL³/(3EI) と δ = wL⁴/(8EI)、単純支持梁の δ = FL³/(48EI)、軸力だけの棒の δ = FL/(EA)、そして45度の筋交いを1本持つ静定トラスの部材力を、すべて手計算と突き合わせて確認しています。
以前のバージョンは「壁からの一本道」を前提に、根元から曲げモーメントを積分して解いていました。この方法は片持ちなら解けますが、筋交いを入れた瞬間に不静定になって解けなくなります。剛性マトリクス法に置き換えたことで、任意の節点と部材のつながり(グラフ)をそのまま受け取れるようになり、筋交い・複数の壁留め点・枝分かれが同じ式のまま扱えるようになりました。なお解析は微小変位の線形弾性理論です。降伏応力を超えた領域は赤で警告しますが、塑性変形そのものは計算していません。
素材の代表値
| 素材 | ヤング率 E [GPa] | 降伏応力 [MPa] | 引張強さ [MPa] | 密度 [kg/m³] | 単価 [円/kg] |
|---|---|---|---|---|---|
| ABS樹脂 | 2.3 | 40 | 42 | 1050 | 500 |
| アルミ合金 A6061-T6 | 69 | 240 | 310 | 2700 | 600 |
| 一般構造用鋼 SS400 | 205 | 245 | 400 | 7850 | 200 |
| ステンレス SUS304 | 193 | 205 | 520 | 7900 | 900 |
| チタン合金 Ti-6Al-4V | 114 | 880 | 950 | 4430 | 12000 |
出典:ヤング率・降伏応力・引張強さ・密度は、機械工学で一般に用いられるJIS材/代表的な工業材料の代表値です(SS400・A6061-T6・SUS304・Ti-6Al-4V・ABS樹脂)。実際の値はロット・熱処理・寸法で変わるため、ゲーム内では代表値を固定して使っています。単価はオーダー比較のための概算値で、実際の市況価格ではありません。加工係数と形状係数、スコアの倍率は、ゲームのバランスをとるためにこちらで決めた係数です。
断面形状で強さは大きく変わる
同じ質量でも、材料を中立軸から遠くに配置するほど断面二次モーメント I は大きくなります。このゲームで選べる断面は次の5種類で、代表寸法 d(丸棒なら直径)から面積 A と I を計算しています。
| 断面 | 断面積 A | 断面二次モーメント I | 最外縁 y | せん断形状係数 ks | 形状係数(コスト) |
|---|---|---|---|---|---|
| 丸棒 | πd²/4 | πd⁴/64 | d/2 | 4/3 | 1.00 |
| 角棒 | d² | d⁴/12 | d/2 | 3/2 | 1.05 |
| パイプ(肉厚0.12d) | π(d²−di²)/4 | π(d⁴−di⁴)/64 | d/2 | 2 | 1.60 |
| 平鋼(幅1.6d×厚0.5d) | 0.8d² | bh³/12 | 0.25d | 3/2 | 1.00 |
| L字アングル(肉厚0.15d) | t(2d−t) | 2枚の板の合成 | 図心から遠い側 | 2 | 1.35 |
質量あたりの曲げ強さ(断面係数 ÷ 断面積の1.5乗)で並べると、パイプ > L字 > 角棒 > 丸棒 > 平鋼(横置き) の順です。ただし効率のよい断面ほど形状係数でコストが上がるようにしてあるので、必ずしもパイプが正解とは限りません。筋交いに使うときは話が変わり、圧縮側では座屈耐力 Pcr = π²EI/L² がそのまま I に比例するので、細長い筋交いほど早く潰れます。
壁への留め方で上限が決まる
どれだけ丈夫なフックを作っても、それを壁につないでいるのは留め具です。このゲームでは留め方を4種類から選べ、それぞれに引抜耐力とせん断耐力、そして曲げモーメントを引抜力に換算するための座金のてこ長さを持たせています。
| 留め方 | 引抜耐力 [N] | せん断耐力 [N] | 座金のてこ長さ [mm] | 費用 [円/点] |
|---|---|---|---|---|
| 接着(両面テープ・接着フック) | 25 | 50 | 30 | 10 |
| 石こうボードアンカー | 200 | 350 | 40 | 40 |
| 木下地へのビス | 1500 | 2500 | 45 | 100 |
| コンクリートアンカー | 6000 | 9000 | 50 | 260 |
これらはゲーム内の代表値であって、製品の保証値ではありません。接着フックが数百グラムから数キロ、石こうボードアンカーが1点あたり十数キロ、木下地へのビスがその数倍、コンクリートアンカーがさらに一桁上、というオーダー感を再現するために置いた値です。実際の耐力は下地の材質と厚さ、施工の質、製品の種類で大きく変わり、さらに実務では破壊耐力に安全率を見込んで許容荷重を決めます。実物を取り付けるときは必ず製品の表示と施工説明に従ってください。
片持ちのフックを壁に1点だけで留めると、荷重による曲げモーメントは座金を起こす力(こじり)になり、引抜力 = |Mr| / てこ長さ で留め具を引き抜きにかかります。掛け点が壁から60mmのところにあれば、1kgの荷物でも 1×9.81×0.06 = 0.59 N・m、てこ長さ30mmの接着なら約20Nの引抜力です。接着の引抜耐力を25Nとしているので、これだけで限界間近になります。接着フックが「数百グラムまで」と書かれている理由が、そのまま数字で出ます。
筋交いと2点留めが効く理由
同じ骨組みでも、三角形にすると応力は劇的に下がります。壁から水平に伸ばした腕の先を、壁の下の方から斜めの筋交いで支えると、腕の先の荷重は筋交いの圧縮と腕の引張に分かれて流れ、曲げモーメントがほとんど消えます。曲げは断面の外側の繊維だけが働くのに対し、軸力は断面全体が均等に働くので、同じ断面積でも桁違いに効率がよいのです。
壁に2点以上留めるのも同じ理屈です。1点留めでは曲げモーメントを座金のこじりだけで受けるので、てこ長さ(数センチ)で割った大きな引抜力が1本の留め具に集中します。上下に離れた2点で留めれば、モーメントは上の留め具の引張と下の留め具の圧縮という偶力で受けられます。てこの長さが留め具の間隔(数センチ〜十数センチ)に置き換わるうえ、片方は壁に押し付けられる側になるので、引抜力は一気に下がります。棚受け金具が縦長で、上下2か所以上でビス留めするようになっているのはこのためです。
枝分かれと区間ごとの断面
掛け点は1つに限りません。1本の腕から枝分かれさせて掛け点を2つ3つと作れば、荷物は自動的にいちばん軽い掛け点へ振り分けられます。枝は自分の枝に掛かった荷物だけを負担し、根元の共通部分でそれらが合流します。腕を長く1本伸ばすより、短い枝を複数出したほうが有利になる場合もありますが、枝の数だけ自重と材料コストが増えます。
部材ごとに素材・断面・寸法を変えられるので、曲げモーメントが最大になる根元だけを太くして、先端は細く軽くという現実の設計そのままの手が使えます。片持ちの曲げモーメントは壁からの距離に比例して増えるため、先端まで同じ太さにするのは材料の無駄です。筋交いを入れた設計では曲げモーメントの分布が変わるので、どこを太くすべきかも変わります。
荷物に上限はありません
荷物は1個目が1.0kg、以降0.25kgずつ重くなっていきます(1.00、1.25、1.50…)。個数の上限はなく、どこかが壊れるまで何個でも掛けられます。合計質量は個数の2乗におおよそ比例して増えるので、強い設計でも数十個で限界に達します。まとめて10個ずつ掛けるボタンもあるので、丈夫な設計を試すときに使ってください(数値の安全のために999個で打ち止めにしていますが、そこまで持つ設計はまずありません)。
スコアは支えた曲げモーメント × 300 − 総コスト × 30です。加点に上限がなくなったぶん、「壊れる寸前まで支える」ことがそのまま得点になります。とはいえ太くすれば強くなるのは当たり前で、そのぶん材料コストと自重が増え、強い留め具も高くつきます。ねらいどころは骨組みの形で稼ぐことです。筋交いで曲げを軸力に変え、壁を2点で留めて留め具の負担を分け、根元だけを太くする。同じコストでも、形を変えるだけで支えられるモーメントは何倍にもなります。
荷物の摩擦係数と、滑り落ちる条件
フックは「引っかかっていれば落ちない」わけではありません。掛け点から先が下り勾配になっていれば、荷物はその斜面を滑り出そうとします。滑り出すかどうかを決めるのは、斜面の上の物体とまったく同じ条件です。傾き θ の面の上では、重力の斜面方向の成分が W sinθ、面に垂直な成分が W cosθ なので、静止摩擦力の上限 μ W cosθ を超える、つまり tanθ > μ になった瞬間に滑り出します。質量は両辺から消えるので、何kg掛けても滑り出す角度は変わりません。
このゲームでは、掛け点につながる部材のうち下っているものについて tanθ = 落差 ÷ 水平距離 を出し、μ と比べています。μ は荷物の種類(金属のリング0.16/ナイロン袋0.26/布のトートバッグ0.40/革のベルト0.55/ゴムの持ち手0.90)に掛け点の材料の係数(ステンレス0.85・チタン0.95・アルミ1.00・鋼1.05・ABS樹脂1.15)を掛けたものです。乾いた金属どうしが0.15前後、布や革が0.4〜0.6、ゴムが0.9前後という一般的な目安に合わせたゲーム内の代表値で、実測値ではありません。
判定は変形後の座標で毎フレームやり直します。荷物が増えるとフックはたわみ、先端が下がって勾配がきつくなります。掛けた瞬間は止まっていても、途中で tanθ が μ を超えれば滑り落ちます。逆に言えば、返しを高く立ち上げておくほど余裕ができます。HUD の Slip がこの余裕(tanθ ÷ μ の百分率)で、100%で滑り落ちます。摩擦を入れたことで、以前は「少しでも下っていたら即アウト」だった判定がゆるくなり、そのかわり掛けるものと材料の組み合わせが設計の一部になりました。
掛け点は自動で決められます
「どこに掛けるのが得か」は、腕の長さと耐えられる質量のつり合いで決まります。壁から遠いほど1kgあたりの曲げモーメント(=得点)は大きくなりますが、同じ理由で骨組みと留め具の負担も増え、掛けられる質量は減ります。両者はちょうど逆向きに効くので、その積である「支えられる曲げモーメント」が最大になる点が最適な掛け点です。
掛け点をおまかせは、これを実際に解いて選びます。候補の節点ごとに1kgと4kgを掛けた状態を解き、破断・座屈・引抜のうちいちばん厳しい利用率を求めます。応力も反力も荷重に対して1次なので、2点を通る直線を引けば利用率が1になる質量(=耐荷重)がそのまま外挿できます。自重ぶんの下駄も、この直線の切片として自然に入ります。あとは耐荷重 × g × 壁からの距離を比べて最大の点を選ぶだけです。実測では、この見積り(20.4kg/20.1N・m)と実際に壊れた点(18.0kgまで保持、次の20.75kgで破断)はよく一致します。
荷物が止まる谷がひとつも無い骨組み(たとえば壁から水平に1本伸ばしただけの片持ち)では、先端に受けを足します。落とし込み35mm・返し25mm×立ち上がり20mmのJ字を、節点2つ・部材2本だけ、その節点につながっている部材と同じ断面で作ります。どの節点に足すのが得かも、同じ「支えられる曲げモーメント」の比較で決めています。おかげで、2回クリックして線を1本引くだけで試験まで進めます。
お題と評価
自由に設計して点を伸ばすだけだと、太い材料と強い留め具に寄っていきがちです。そこでお題(ミッション)を用意しました。「接着だけで2kg」「石こうボードだけで20N・m」「予算200円で80N・m」「壁から200mm先で40N・m」「鋼だけ・予算250円で150N・m」の5つで、留め方・素材・予算・掛け点の距離という制限と、支えるべき質量やモーメントという目標の組み合わせでできています。制限を満たしていない設計では試験を始められず、目標に届かなければ未達成です。達成したお題は記録されます。
たとえば「接着だけで2kg」は、接着の引抜耐力25Nと座金のてこ長さ30mmから、1点留めでは 0.75 N・m しか受けられません。掛け点を最短の40mmに置いても1.9kgが限界です。答えは壁の留め点を上下に大きく離して偶力で受けることで、てこの長さが数センチから十数センチに変わります。制限があるほうが、こういう「効く手」がはっきり見えます。
腕前の指標として効率(総コスト100円あたりで支えた曲げモーメント)と、そこから決まる評価 S/A/B/C/D も出します。同梱のお手本の効率は、一本道のJ字が約17、壁2点留めが約11、二又が約29、筋交い付きが約50、長い腕が約48です。S は70以上なので、お手本をそのまま使っても届きません。
よくある質問
- フックラボはどんなゲームですか?
- 壁に取り付ける引っ掛け(フック)を、節点と部材を自由につないで設計し、そこへ荷物を掛けていく設計ゲームです。まっすぐな片持ちだけでなく、筋交い(ピン結合の軸力材)、壁に2点以上留めた骨組み、枝分かれして掛け点を複数持つ形も作れます。荷物に個数の上限はなく、どこかが壊れるまで何個でも掛けられます。
- どうやって解いていますか?
- 節点あたり3自由度(水平・鉛直・回転)の梁‐柱要素を使った2次元フレームの直接剛性法です。要素剛性は軸剛性 EA/L と曲げ剛性 EI(12・6L・4L² の標準形)で組み、局所座標から全体座標へ回転変換して全体剛性行列を組み立て、支点の自由度を拘束して K u = F を部分ピボット付きLU分解で解いています。自重は等価節点荷重として与え、要素端力から軸力N・せん断力V・曲げモーメントMを取り出します。筋交いは曲げ剛性を持たない軸力材として扱います。
- 破損はどうやって判定していますか?
- 各要素の両端で垂直応力 σ=N/A ± M・c/I とせん断応力 τ=ks・V/A を求め、ミーゼスの相当応力 σeq=√(σ²+3τ²) を材料の降伏応力および引張強さと比べます。引張強さを超えると破断です。筋交いは圧縮側でオイラー座屈 Pcr=π²EI/L² も判定します。さらに支点の反力から引抜力とせん断力を求め、留め方の耐力を超えると材料が無事でも壁から抜けます。
- 壁への留め方の数値はどこから来ていますか?
- 接着(両面テープ)・石こうボードアンカー・木下地へのビス・コンクリートアンカーの4種類について、引抜耐力とせん断耐力の一般的な目安を代表値として固定しています。実際の耐力は下地の材質や厚さ、施工の質、製品によって大きく変わるため、これらはゲーム内の代表値であって製品の保証値ではありません。実際に物を取り付けるときは必ず製品の表示と施工説明に従ってください。
- スコアはどう計算されますか?
- スコアは「支えた曲げモーメント[N・m]×300 −総コスト[円]×30」です。支えた曲げモーメントは、各掛け点に掛かった荷物の質量×9.80665×その掛け点の壁からの距離を全部の掛け点で足したものです。総コストは各部材の質量[kg]×単価[円/kg]×加工係数(1+降伏応力÷400MPa)×形状係数の合計に、壁の留め具の費用を1点あたりで足したものです。荷物に上限はないので、壊れる直前までどれだけ支えられたかで得点が決まります。
- 荷物の摩擦係数はどう効きますか?
- 掛け点から下っている部材について tanθ(落差÷水平距離)を出し、荷物と掛け点の材料から決まる静摩擦係数 μ と比べます。斜面の上の物体と同じで tanθ > μ になると滑り出します。μ は荷物の種類(金属のリング0.16/ナイロン袋0.26/布0.40/革0.55/ゴム0.90)に材料の係数(ステンレス0.85〜ABS樹脂1.15)を掛けたものです。判定は変形後の座標で毎フレームやり直すので、たわみで勾配がきつくなると途中で滑り落ちます。
- 掛け点は自動で決められますか?
- 「掛け点をおまかせ」を押すと自動で決まります。候補の節点ごとに1kgと4kgを掛けた状態を解き、破断・座屈・引抜のうち最も厳しい利用率を直線で外挿して耐荷重を出し、耐荷重×g×壁からの距離(=支えられる曲げモーメント)が最大になる点を選びます。荷物が止まる谷が無い骨組みでは、先端に節点2つ・部材2本のJ字の受けを自動で足します。