前回のもの、写真だとわかりにくいがいろいろと失敗点があって実用は可能だが満足いくデキとは言えなかった。実はお義母さんからの要望に基いて作っているものなので、あまりひどいデキのものだと申し分けない。
ということで作りなおした。前回の経験を生かし型紙を起こしなおし少し長くつくってる。
また、各所でまち針を慎重に使うようにしたり、もう少し丁寧にやることを心がけたつもり。
全体的にはよくなったが、一部まだ気になるところはある。難しい。
前回のもの、写真だとわかりにくいがいろいろと失敗点があって実用は可能だが満足いくデキとは言えなかった。実はお義母さんからの要望に基いて作っているものなので、あまりひどいデキのものだと申し分けない。
ということで作りなおした。前回の経験を生かし型紙を起こしなおし少し長くつくってる。
また、各所でまち針を慎重に使うようにしたり、もう少し丁寧にやることを心がけたつもり。
全体的にはよくなったが、一部まだ気になるところはある。難しい。
デカ文字A4ジェネレータというのを書いた。
https://github.com/cho45/dekaimoji-a4
いくつか方法があるがピンヘッダのレイアウトを実寸で印刷するツールを書くときに検討した通り、PDF をつくるのが現状では確実と思われる。
その上で、プレビューとの兼ね合いを考えるとさらにいくつか方法がある。
「画像で作ってPDFに貼りつける」という方法は JS に限らず安定して確実な出力ができる。
JS の場合でもスムーズにプレビューできるし出力も簡単。ただし出力サイズが大きい場合、メモリが足りなくなることがある。
また、テキストの選択はできなくなる。
PDF オンリーの場合、ブラウザーがPDFのインライン表示に対応していれば、iframe でプレビューができる。昨今、だいたいのブラウザーで実はpdfが組み込み表示可能なので案外いける。ただしスマフォでは未対応。
jsPDF の場合、単純な図形化なら、2D Context と APIをあわせることができるので、canvasプレビュー、pdf出力がスムーズにできそう。ただしこれはテキストレンダリングしたくなった時点で確実に破綻すると思われる。
[tech] デカい文字をA4で分割して印刷するツールをJSで書いた | Sat, Mar 7. 2015 - 氾濫原 では、実寸サイズを扱うので、多くの場所で mm や cm やら pt などの単位で数値を書きたくなる。
var mm = dpi / 25.4; 10*mm
var mm = 25.4 / dpi; 10/mm
乗算の逆。
function mm (num) { ... }
mm(10) Number.prototype.mm = function () { ... };
10..mm()
しかし JSLint とかは 10..mm みたいな呼びかたをすると怒る。
単純なプロトタイプ拡張と比べ、括弧がいらない。
10..mm
function setDPI (dpi) {
var dpmm = dpi / 25.4;
var pt = dpi / 72;
var units = {
'in' : dpi,
'pt' : pt,
'mm' : dpmm,
'cm' : dpmm * 10,
'm' : dpmm * 1000
};
for (var unit in units) if (units.hasOwnProperty(unit)) (function (factor) {
Object.defineProperty(Number.prototype, unit, {
get: function () {
return this.valueOf() * factor;
}
});
})(units[unit]);
}
setDPI(150);
console.log(10..mm);
console.log(10..cm); しかし JSLint とかは 10..mm みたいな呼びかたをすると怒る。
'10 mm'
とかを数値に変換する形
var UnitConverter = function () { this.init.apply(this, arguments) };
UnitConverter.prototype = {
init : function (opts) {
if (!opts) opts = {};
this.setDPI(opts.dpi || 96);
},
setDPI : function (dpi) {
this.dpi = dpi;
var dpmm = dpi / 25.4;
var pt = dpi / 72;
this.units = {
'in' : dpi,
'pt' : pt,
'mm' : dpmm,
'cm' : dpmm * 10,
'm' : dpmm * 1000
};
var unitNames = [];
for (var key in this.units) if (this.units.hasOwnProperty(key)) {
unitNames.push(key);
}
this.re = new RegExp('([0-9.]+) (' + unitNames.join('|') + ')');
},
unit : function (string) {
if (string.match(new RegExp('^' + this.re.source + '$'))) {
return +RegExp.$1 * this.units[RegExp.$2];
} else {
return null;
}
},
context : function (fun) {
var self = this;
var args = Array.prototype.slice.call(arguments, 1);
fun = eval('(' + fun.toString().replace(new RegExp("'(" + this.re.source + ")'", 'g'), function (_, s) {
return self.unit(s);
}) + ')');
fun.apply(null ,args);
}
}; 文字列化した関数を置換する。みためクロージャなのにクロージャになってないので変数アクセスで混乱する。つくれない。
普通に係数使うのが一番シンプル。除算のほうがかっこいい気がする。ただし演算子の優先順位に気をつかわないとハマる。
とりあえず本は必要。本については後述
伸縮性のある布を正確に裁断するのは、それだけでも大変難しい…
基本的に裁断バサミよりロータリーカッターが良い。なぜなら布を持ちあげずに裁断できるため。型紙が動きようがない状態で裁断できると正確に切りやすくて精神的に良い。
カッティングマットはA2ぐらいがちょうどいいと思う。A1だとテーブルに乗らなかったりして扱いにくいし、A3だと小さすぎる。A2 でも結構マットを動かす必要はあります。
「水通し」「地なおし」などのキーワードを知っているかいないかでだいぶ変わる。
洗濯するものは裁断前に「水通し」をして予めある程度縮ませてから裁断するか、厳密にあわせる必要がないものは3%〜10%程度大きく裁断する。
水通しは工場で縮める処理をしているものならやる必要がないみたいな話もあるが、売られているもののうちどれがそれなのか判断することができないので、水通しをするほうが安全。ただし一度綺麗に広げて干す必要があるので矮小住宅環境ではクソ面倒。
(今のところの個人的見解では身につける衣類でなければ水通しをせずに5%大きめに作るのが良い気がしている。身につけるものは作る予定がないので水通しやらずに押しきりたい)
「縫い代」は縫ってひっくり返すと見えなくなるので適当に切ってもええやろと思ってしまうが、これは大きな間違い。
ミシンをかけるときは常に裁ち切り線を基準に縫い代分をオフセットして縫うことになるので、裁ち切りが正確であることと同様に縫い代も正確にとれていないと、当然ミシンの縫い目(=仕上り線)も直線にならない、ということになる。
また、適当に切ってしまうと、複数枚重ねて縫うときに位置をあわせることができなくなる。がんばって仕上がり線を書いても重ねるときにそれであわせることは難しい。マチ針駆使したらできるだろうけど…
微妙に特殊な「言いまわし」があって混乱することがあった。主観で重要な順に並べた。
→ 裁断した部分のほつれ防止。基本はジグザグ縫い。「端にジグザグ縫いまたはロックミシンをかける」と書いてある場合すなわちかがるということ。ロックミシンはかがり専用のミシンのことで素人には関係ない。
→ ミシンの文脈では縫いはじめと縫いおわりで逆方向に少し縫うこと。普通は返し縫い機能があるので簡単にできる。手縫いの場合は「縫いかた」の種類でミシンの返し縫いとは関係がない。
返し縫いは縫いはじめに針を置いて、少し普通にすすめて、戻って、もう一度すすむ。つまり返し縫い部分は3回針が刺さる。
→ 布の表同士をあわせること。最後にひっくり返すので裏面を見ながらミシンをかけることが多い。
→ 2つの布を縫いあわせる機能がない縫い目のことっぽい? 飾り・強度のためにかけるミシンのよう。「ミシンをかける」は逆に縫いあわせるという意味を含むようだ。使いわけてる人がいるけど、正確に使いわけてない場合があってややこしい。「なんとなく縫う」ぐらいのニュアンスがある。
→ 縫う線。この線に縫い代を加えると裁ち切り線になる。つまり普通はこの線で裁断しない。
→ 縫うためにつける 1cm ぐらいの領域。
→ 縫ったあと、2枚の布の縫い代がくっついているが、これをそれぞれの布の方向に開いて固定すること(アイロンをかけたりする)
型紙に「裁ち切り」と書いてある場合、縫い代をつけないという。仕上がり線がすなわち裁ち切り線になる。
→ 途中で別の布 (または同じ布) を繋ぐこと。途中で柄を変えたいときにやる。
→ 型紙のこと
→ 型紙も含めた製作の手順のこと
→ 紐のこと。
→ 買ってきた布が歪んでいることがあるので (そのまま作ると洗濯したときに歪みが表面化する) それを直すこと。最近の布の品質ならやる必要ないという話もある
→ 斜めに裁断されたテープ状の生地のことをバイアステープというらしい。少し伸縮性があり縁取りとかに使う
→ ひっくり返すために縫い残す部分のこと。これがないとひっくり返せない。最後は手縫いで返し口を閉じるか、周囲にステッチをかけて強制的に閉じる。
→ ミシンの針が布地以外のところに落ちて空振りすること。特殊なことではなく、特に布端をジグザグ縫いでかがるときは片側はほぼ目が落ちる位置になる。
→ 布端をバイアステープ処理すること
→ 寄せ集める。縮める。英語で gather の意味
名前は編みかたの分類なので、実際は使用される糸の太さによって厚さは変わる
よくあるプリントされたりしていて表面がつるつるしている、比較的薄い生地。
私見:薄いので使いどころ次第でちょっと安っぽくなる
少し厚手で編み目が明確なやつ。丈夫。キャンバスよりは薄い。(10番オックスというのがよく使われるらしい)
私見:適度な光沢があって高級感があり、汎用性が高く感じる。手触りも布!って感じで良い。
本来シーツ用の生地でちょっとざらざらとした厚手の生地。
私見:オックスの下位互換みたいな感じがする。ちょっと安っぽいというか、荒っぽい風合いがある。
厚手でかたくかなり丈夫。カバンとかに良く使われる。(11番が一番薄いが、典型的なオックスと比べるとこれでもかなり厚い生地)
2枚の布の中に綿が入っていて斜めに縫ってあるやつ。やわらかいが丈夫。ブロードのキルティング・オックスのキルティングとかデニムのキルティングとか、いろいろある。2枚生地を使ってる分高価だけど、手軽に作れるので便利。高価といっても2枚生地を買うよりはだいぶ安い。
私見:手軽で便利だけど、できあがりがまさに小学生とかが持ってそう!という感じになる。良く言うと手作り感がでる。
きれいに縫うための基礎の基礎 cho45
かなり細かく「縫いかた」について書いてある。服を作らない場合必要ない技術もあるけど一通り丁寧に書いてあってよかった。
簡単な作例がたくさん載ってて参考になった。作りかたほぼいっしょだけどサイズだけ違うみたいなケースが結構あるなという発見がある。
哺乳瓶入れが1つしかなくもう1つ欲しいという要望をうけて作った。
別の作例を参考にサイズを変えて作ったのだけど、計算を間違えたのか、つまむと2cmぐらい余分がでるぐらいの大きさになってしまった。
下を「わ」にして「折りマチ」をつけたタイプで、キルティングの1枚の布からできている。
筒状のものは一定のサイズ以下になるとミシンの腕に入らなくなって縫えなくなるということがわかった。紐片方出しの場合どうしても筒状にしてから縫う必要がある(と思う)ので、一定サイズ以下の場合両出しで締める構造にしなければならない気がする。
前述の通り何かを間違えてちょっと大きめにできてしまったが、おかげて筒状にしてもぎりぎり縫えるサイズにおさまった。実用上困るほどの大きさの違いではないので「失敗」の知見をためつつ実用上は「成功」ということにしておく。
ミシンに少し慣れてきたので、今まで「自分で作る」ことを考えたこともなかったことについて、改めて「自分で作れるならどんなものを作るか?」と考えている。
たとえば普段使いのカバンのアイデア
これらを満たすもの、特に最初の2つを満たすカバンというのは見たことがないので、技術力があれば作りたいなという気持ちがある。
かなり重いものを入れがちなカバンを自分で作るのは不安が多いが、そうでないなら自分で作っても面白そう。
| #!/usr/bin/xcrun swift | |
| import Cocoa | |
| struct ProgramOption { | |
| var list : Bool = false | |
| var set : String? = nil | |
| var help : Bool = false | |
| } | |
| func getInstalledBrowsers () -> [ NSBundle ] { | |
| var browsers = [ NSBundle ]() | |
| let array = LSCopyAllHandlersForURLScheme("http").takeRetainedValue() | |
| for var i = 0, len = CFArrayGetCount(array); i < len; i++ { | |
| let bundleId = unsafeBitCast(CFArrayGetValueAtIndex(array, i), CFString.self) as String | |
| if let path = NSWorkspace.sharedWorkspace().absolutePathForAppBundleWithIdentifier(bundleId) { | |
| if let bundle = NSBundle(path: path) { | |
| // let name: String = bundle.infoDictionary!["CFBundleName"] as String | |
| browsers.append(bundle) | |
| } | |
| } | |
| } | |
| return browsers | |
| } | |
| func setDefaultBrowser (bundleId : String) -> Bool { | |
| let httpResult = LSSetDefaultHandlerForURLScheme("http", bundleId) | |
| let httpsResult = LSSetDefaultHandlerForURLScheme("https", bundleId) | |
| if httpResult == noErr && httpsResult == noErr { | |
| return true | |
| } else { | |
| return false | |
| } | |
| } | |
| var option = ProgramOption() | |
| for var i = 0, len = Process.arguments.count; i < len; i++ { | |
| let arg = Process.arguments[i] | |
| switch arg { | |
| case "-h", "--help": | |
| option.help = true | |
| case "-l", "--list": | |
| option.list = true | |
| case "-s", "--set": | |
| option.set = Process.arguments[++i] | |
| default: | |
| break | |
| } | |
| } | |
| if option.help { | |
| println("-h, --help: Show help (this)") | |
| println("-l, --list: Show installed browser list") | |
| println("-s [bundleId], --set [bundleId]: Set default browser to specified browser") | |
| exit(0) | |
| } | |
| if option.list { | |
| let browsers = getInstalledBrowsers() | |
| for browser in browsers { | |
| let bundleId = browser.bundleIdentifier! | |
| let path = browser.bundlePath | |
| println("\(bundleId)") | |
| println("\t\(path)") | |
| } | |
| } | |
| if let bundleId = option.set { | |
| if setDefaultBrowser(bundleId) { | |
| exit(0) | |
| } else { | |
| exit(1) | |
| } | |
| } | |
| exit(0) | |
set_default_browser.swift --set $( set_default_browser.swift -l | grep -v "\t" | peco )
雑にpecoれる
出社した直後ぐらいからだるくなり、12時ごろに「もうこれはだめだな」と思い早退。
帰宅時点では37°ぐらいの微熱。悪寒がするので熱めの風呂に入ってからすぐ寝て、15時ぐらいに37.8°ぐらい。生卵をTKGとして摂取してひたすら寝つ続け、20時ぐらいに37.3°ぐらいまで下がる。それからまたひたすら寝て朝がたに36.5°ぐらいの平熱になった。
布を切るといえば裁ち鋏でしょ??と思って思考停止していたけど、ローリングカッターを使ったほうが圧倒的に楽チンだった。
ただし欠点があって、一度に切れる長さはカッターマットの大きさに制限される。
裁断が結構気が重い作業だけど気が楽になるし、時短できるしチートアイテムっぽい。
アイロンで写せる型紙を購入したのだけれど、見ての通り色の濃い生地を買ってしまったので全く写らず (写ってるけど見えない)、チャコペーパーをひいてがんばって写した…… というか厚紙に型紙起こしなおしたほうがいいかもしれない。むずかしい。
キルティング地なのですこし不安だったけど、とくに問題もなく製作できた。
紐の通し口の処理が勉強になった。
布端のかがりを細かいジグザグではじめてしまったのでだいぶ時間がかかってしまった。とはいえ全体の作業時間は型紙写すのに試行錯誤した時間を含め2時間弱ぐらい。
これも保育園グッズの一つなのだが、保育園からの要求仕様には「コップ入れ」とか書かれておらず、どのぐらいのサイズが必要なのか、全くわからない。中に入れるコップのサイズが分からないのに、コップ入れを用意しろといわれる。世の中は厳しい。
保育園入園時に必要なものに、サイズ指定のグッズいろいろがあり、調達に悩んだ結果自作した話。
といった方法がある
習得も含めた時間などのコストと得られるメリットとのトレードオフになる。外注できるならしてもいいが
といった点を鑑みてミシンを買った。これ
トーヨー 電動ミシン レッド JY-1R cho45
実際に作る場合、ほかにもいろいろ必要なものがある。
ずっと裁縫道具は保存していたのでだいたいはなんとかなった。
大抵100円均一でも売ってるのでとりあえずはなんとかなりそう。ただ刃物系、糸切りハサミと断ちバサミはちゃんとしたのを買ったほうがストレスが少ないと思われる。
まず作ったのが布団カバー。1つあたり布が260cmぐらい必要なので、布代だけで 2000 円はかかる (800円/m だとして)
比較的簡単だと思うが、縫う距離が長いので時間がかかる。裁断からやってできあがりまで、1枚あたり2時間〜3時間ぐらいかかった。
つまり時給1500円でも人件費だけで3000円〜4500円かかることになり、オーダーメイドの工賃は十分妥当な金額とわかる。
なので、その金額を外に出すか、自分でその分の仕事をするかの選択になる。(前述の通り内製で処理することにした。気楽に自力でそれだけ稼げる仕事なんてなかなかないわけだし)
品質はともかく作ることはできた。自分の子供が使うのだから過剰に品質にこだわることもないだろう。
まだまだ作るのがある。たぶんコツを捕めば楽しい気がするのでがんばる。
自分でやるのとコストがあまり変わらない場合 (スケールメリットがないとか) で自分でなんとかできそうなことなら、自分でやるほうを優先したい。外注してもスキルは得られず金が減るが、自作すればスキルも得られて金が出ていなかない。なにより技術力はずっと残って財産になる。