- 1 名前:デフォルトの名無しさん [2018/04/26(木) 21:48:23.07 ID:mMDBzDaB.net]
- www.typescriptlang.org/
JavaScript that scales. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. part1 https://peace.5ch.net/test/read.cgi/tech/1349187527/ part2 https://mevius.5ch.net/test/read.cgi/tech/1430386649/
- 88 名前:デフォルトの名無しさん mailto:sage [2018/10/19(金) 07:51:09.81 ID:1EDOmnkE.net]
- ありがとう。やっぱりダメか。
> typeof arg === 'string' Tがstringだったら'string'と比較するってのをやりたかった。
- 89 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 14:25:59.55 ID:QA1RjyY/.net]
- Typescriptのコンパイラのソースコードを見たが、
swicth文による条件分岐が乱用されていて美しいソースコードではなかった。 もっと良い設計があるはず。
- 90 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 15:52:27.22 ID:/P2yZ5ci.net]
- 構文木のような構造には多態はうまくマッチしないんだよ
- 91 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 18:08:40.09 ID:odoUcQpl.net]
- 構文解析とか条件分岐(状態遷移)の塊だろ
状態遷移とかswitch文そのものだ
- 92 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 15:12:34.19 ID:N0iXX+FC.net]
- >>88
そう思うならお前が改善してプルリク送ってもいいのよ
- 93 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 15:27:26.85 ID:GSIJUR7C.net]
- >>91
なぜ高貴なハイクラスエンジニアの俺様がただ働きせにゃならんのだ? バカなのか?
- 94 名前:デフォルトの名無しさん mailto:sage [2018/10/23(火) 18:43:56.54 ID:+WvUI4qM.net]
- Typescriptのコンパイラのアルゴリズムは何ですか?
ソースコードを見たところ再帰下降解析らしいけど、それだと左再帰で問題が出るよね。
- 95 名前:デフォルトの名無しさん mailto:sage [2018/10/23(火) 18:48:28.71 ID:BSENAQfG.net]
- ハイクラスの俺様が就職したら低レベルの土方を蹴散らしす
- 96 名前:デフォルトの名無しさん mailto:sage [2018/10/23(火) 19:39:38.93 ID:f9dUVIKz.net]
- 5chになってから急に自分の書き込みに誤植増えた
絶対何かある
- 97 名前:デフォルトの名無しさん mailto:sage [2018/10/23(火) 19:42:09.06 ID:EVpcwrUE.net]
- 就職してないのかよw
ハイクラスなら就職なんてしなくても学生の内から引く手あまただろ または起業しろよ
- 98 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 08:20:52.86 ID:lnxFtwDW.net]
- 今の職場でts+Vue.jsで作ってる案件があるんだけど、コードの肥大化と共に
型チェック付きのビルドに10分以上かかるようになっちゃって型チェックなしのヒルドに変更してしまってるんだけど そういう事例って他のところにもある?
- 99 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 08:56:34.35 ID:+94YsfsL.net]
- 世界でも有数の大規模ソフトウェアであるVSCodeがTypeScriptでビルドされている以上、
利用者のスキルの問題でしかないな
- 100 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 15:40:12.32 ID:d0XTpm7T.net]
- まぁ、今どきVueを選んじゃう技術力・審美眼のないとこじゃしょうがないんじゃないか?
糞うるさいポンコツウインドウズXPとか使ってそう
- 101 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 16:13:39.60 ID:mdwOvRGk.net]
- React使いがよく言うよな。技術力&審美眼。
魔窟になってるのを技術力と言い換えて、そのアーキテクチャを美と言い換えるやつ。
- 102 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 19:54:03.59 ID:ReL8stLA.net]
- うちのプロジェクトもビルド時間5分なんでどうにかしたいなぁ。
makedepend+makeが欲しい。
- 103 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 20:15:51.54 ID:NQOj7Zqs.net]
- >>98
それ可笑しくね?vscodeビルドしたことあるの?
- 104 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 20:16:37.40 ID:NQOj7Zqs.net]
- >>99
mbp2017つかってる。メモリは8gbだけど
- 105 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 22:25:07.54 ID:LyspAo2Z.net]
- >>103
チャイニーズに尻尾振るガラパゴスVue民にはお似合いのゴミだなw
- 106 名前:デフォルトの名無しさん [2018/11/09(金) 18:28:02.99 ID:npJX8Ub3.net]
- module と namespaceの使い分けは
どうやればいいの?
- 107 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 18:56:45.93 ID:gzUh27KV.net]
- 使い分けるものではない
moduleはnamespaceに置き換えられた 常にnamespaceを使用せよ
- 108 名前:デフォルトの名無しさん [2018/11/09(金) 19:06:31.99 ID:npJX8Ub3.net]
- >>106
了解
- 109 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 09:38:47.43 ID:h5ltDNBL.net]
- type と interface の使い分けは
どうやればいいの?
- 110 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 11:38:30.86 ID:Cm/nwVcs.net]
- >>108
ほぼ一緒だから気にしなくていい。 Typescriptの仕様書にも「非常に似ている」と書いてある。 ただ、interfaceは inteface Point { x:number: } interface Point { y:number: } というようにプロパティの追加ができるが、typeはできない。それぐらいしか違いがない。
- 111 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 13:05:47.70 ID:/+pk64i1.net]
- TSLintのデフォがtypeよりinterfaceを推してくるからとりあえずinterfaceにする事が多い
- 112 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 14:07:03.02 ID:R0IiHkaX.net]
- >>110
これメンスだがtypeしか使えない機能なかったっけ?
- 113 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 15:41:10.38 ID:YkGULP39.net]
- 交差型、共用体型を定義できるのはtypeだけだな。
- 114 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 20:39:14.47 ID:3jMJhmwM.net]
- 例えば file1.tsを編集していて、バックアップとしてそのファイルを複製して
file1 - コピー.ts を作ったとすると、関数名が重複していますみたいなエラーがダダダーと 出るんですが、どのように対策すれば良いでしょうか?
- 115 名前:デフォルトの名無しさん [2018/11/11(日) 20:52:52.31 ID:B3f/927d.net]
- 自分はいつもバックアップはfile1.ts.bakって付けてる。
- 116 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 20:59:48.79 ID:MG/LuDvG.net]
- git使いなさい
- 117 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 21:18:11.36 ID:3jMJhmwM.net]
- >>115
サーバーが必要なんでしょ? そんなの持っていないし
- 118 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 21:29:24.04 ID:MG/LuDvG.net]
- 必要ないですよ
- 119 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 21:29:49.74 ID:cIalEm6/.net]
- gitにサーバが必要とか正気か
いいからとりあえずチュートリアルやってみろ
- 120 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 21:42:32.66 ID:3jMJhmwM.net]
- >>118
チュートリアルどこにあるのよ?
- 121 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 23:28:37.79 ID:R0IiHkaX.net]
- >>119
man git で英語を読む でも、君にはそんな技術も学も根性もなさそうだから、 やっぱりfile1 - コピー.ts.bak181110ってするのがいいと思うんだ。 いや君をバカにしてるわけではなくて。 猿は猿らしい生活をした方が幸せだと思うからさ。ね。
- 122 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 23:59:28.42 ID:cIalEm6/.net]
- >>119
これ以上は他所でやってくれ お前さんの質問に対する回答は * 編集バックアップをファイルコピーでとるというのがクソ * 拡張子も変えてないならビルド対象になって当然 でおしまい
- 123 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 23:56:36.53 ID:aDOvGxXC.net]
- 流石に不親切すぎる。猿でもわかるgitとか読むと良い
- 124 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 15:07:14.11 ID:BcZrVMNP.net]
- TypeScript使うな。汚らわしい。
バカはバカらしくPHPでも使ってろゴミ。
- 125 名前:デフォルトの名無しさん [2018/11/18(日) 12:08:33.81 ID:uaqKqGAI.net]
- 猿でも判るように書いたら人間に判らなくなりました
- 126 名前:デフォルトの名無しさん [2018/11/18(日) 13:48:19.18 ID:pdwgi8hG.net]
- 猿ですがわかりません
- 127 名前:デフォルトの名無しさん [2018/11/26(月) 23:24:03.84 ID:uFKIPm3P.net]
- elem.onclick = function () {
if (this.classList.contains('classA')) { ・・・ } こんなコードを書くと、Visual StudioのTypeScriptで エラー TS2339 (TS) プロパティ 'classList' は型 'GlobalEventHandlers' に存在しません。 と出るのですが、生成されるJavaScriptコード(上のコードを同じ)は問題無く実行出来る。 これは何故ですか?
- 128 名前:デフォルトの名無しさん [2018/11/26(月) 23:28:58.28 ID://9j39Lt.net]
- あのさぁ…何のためにTypescript使ってんのよ…
- 129 名前:デフォルトの名無しさん [2018/11/26(月) 23:46:28.79 ID:uFKIPm3P.net]
- >>127
仕事で仕方なく
- 130 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 23:49:14.79 ID:S88o/5+S.net]
- thisを使わないか、addEventListener使う
- 131 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 23:57:01.52 ID:S88o/5+S.net]
- this: GlobalEventHandlers のところは this: thisじゃだめなのかな?
- 132 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 23:59:28.47 ID:RFi6oWGn.net]
- アロー関数使うとかそういう話?
- 133 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 02:25:43.08 ID:7n6dok9k.net]
- >>126
elemにちゃんと型(多分HTMLElement?)が指定されてればそんなエラー出ないぞ
- 134 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 09:47:55.32 ID:riCGJi9o.net]
- >>132
出るよ
- 135 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 09:56:31.77 ID:riCGJi9o.net]
- >>129
addEventListenerでも同じだろ
- 136 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 10:22:11.47 ID:AQW0OfN+.net]
- addEventListenerは要素ごとにシコシコ定義されていて、thisがその要素になっているのでOK
onclickとかはGlobalEventHandlersでmixin的に定義されていて、this: GlobalEventHandlersになっちゃってるのでNG
- 137 名前:デフォルトの名無しさん [2018/11/27(火) 10:37:58.94 ID:riCGJi9o.net]
- >>135
なるほど。でも、そもそも this.classList ではなくて elem.classList と書けばいいんじゃないか
- 138 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 10:49:11.23 ID:jlBTh7S1.net]
- Announcing TypeScript 3.2
https://blogs.msdn.microsoft.com/typescript/2018/11/29/announcing-typescript-3-2/
- 139 名前:デフォルトの名無しさん mailto:sage [2018/11/30(金) 11:28:27.90 ID:atRGowE7.net]
- Eitherさん素敵
- 140 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 10:07:51.30 ID:7lSKHFDm.net]
- ようやくEitherでホイサーできるTSがきたか
しかしleftrightとパタマチがないとダメやろこれ
- 141 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 10:12:04.48 ID:7lSKHFDm.net]
- よんだら、これEitherじゃなくホイサーだろ・・・
エラー処理強制できないEitherってナンジャー? ゴミジャー
- 142 名前:デフォルトの名無しさん [2018/12/01(土) 18:12:50.09 ID:qYhERqMT.net]
- 宇宙に満ちている光を伝える媒質、だっけ。
- 143 名前:デフォルトの名無しさん mailto:sage [2018/12/01(土) 21:02:52.90 ID:214oHlAj.net]
- それはether
- 144 名前:デフォルトの名無しさん [2018/12/01(土) 21:38:50.33 ID:qYhERqMT.net]
- 旧盆に行われる沖縄の盆踊り、かな。
- 145 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 20:53:43.14 ID:iqna8FaP.net]
- 通常、string と string | null は同等なんでVSCodeのポップアップでも | null は省略されるけど、
これを省略させないで表示する設定ってないのかな。 strictNullChecks 使ったら区別できなくて困った。
- 146 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 21:39:51.76 ID:O7AxfIIB.net]
- 通常、string と string | null は同等じゃないです
- 147 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 21:46:28.77 ID:WLbw6NyA.net]
- ""はnullじゃないぞ
- 148 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 08:02:21.96 ID:rsg3VEcH.net]
- 他に困ってる人がいないってことは strictNullChecks 自体あまり使われてないのかな。
- 149 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 09:20:27.07 ID:B/THyK2J.net]
- strictNullChecksは使ってるけどその困り方がよく分からないから具体的にどういうコードを書こうとした時に何が困るのか教えてくれるとありがたい
- 150 名前:デフォルトの名無しさん [2018/12/05(水) 14:47:23.52 ID:2sSegHBZ.net]
- 馬鹿には無理
- 151 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 19:58:08.96 ID:rsg3VEcH.net]
- function f(): string | null {
if(Math.random() === 0) { return null; } return 'abc'; } function g(): string { return 'abc'; } const x = f(); const y = g(); VSCode で x や f() にマウスポインタを当ててポップアップで型を表示しても string | null じゃなくて string としか表示されないんでこれを区別できるようにしたい。
- 152 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 20:42:07.12 ID:2r3P2eMd.net]
- tsc --init しなさい
- 153 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 20:43:39.84 ID:kxOqR7S7.net]
- * プロジェクトルートにtsconfig.jsonはあるか
* tsconfig.jsonでstrictNullChecks或いはstrictが有効になっているか * そもそもVSCodeでプロジェクトルートを開いているか
- 154 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 20:51:32.34 ID:rsg3VEcH.net]
- なるほど、VSCode用のtsconfig.jsonを置いてやればいいってことか。ありがとう。
ビルド用のtsconfig.jsonは別の場所に置いてた。
- 155 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 20:57:46.26 ID:kxOqR7S7.net]
- そりゃプロジェクトルートに無けりゃどういう原理で探してくるんだって話だ
- 156 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 21:04:20.27 ID:rsg3VEcH.net]
- じゃなくて、VSCodeがtsconfig.jsonのビルドオプションに合わせて表示を変えているとは想像してなかった。
- 157 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 21:10:24.13 ID:kxOqR7S7.net]
- そもそもtscもtslintもプロジェクトルートのtsconfig.jsonなりtslint.jsonなり読むんだから・・・・・
- 158 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 21:30:49.29 ID:rsg3VEcH.net]
- 各.tsに対してどのtslint.jsonが使われるかという認識はあったけど、
tslintもtsconfigを見てるのか。なるほど。
- 159 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 21:32:49.41 ID:kxOqR7S7.net]
- 誤解を招く書き方だったから訂正しておくけどtslintはtsconfig.json読まんよ
- 160 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 21:25:18.74 ID:X6PhK/jL.net]
- 今日は emitDeclarationOnly でd.tsだけ出力できることを発見した
- 161 名前:デフォルトの名無しさん mailto:sage [2018/12/22(土) 01:07:22.52 ID:RH928dFE.net]
- jap is crazy monkeys
- 162 名前:デフォルトの名無しさん mailto:sage [2018/12/24(月) 11:44:39.27 ID:zyOojth7.net]
- 拡張子だけ許せない
- 163 名前:デフォルトの名無しさん mailto:sage [2018/12/24(月) 11:56:09.60 ID:JT2deTbq.net]
- TransSexual
- 164 名前:デフォルトの名無しさん mailto:sage [2018/12/25(火) 02:39:04.38 ID:atOE2BOw.net]
- 動画と被ってる
- 165 名前:デフォルトの名無しさん mailto:sage [2018/12/31(月) 06:26:09.53 ID:65rO9GPR.net]
- rollup覚えた
- 166 名前:デフォルトの名無しさん mailto:sage [2019/01/10(木) 03:06:03.03 ID:Zf9Oh0RM.net]
- export as namespace が何をどうしてるのかさっぱりわからん
- 167 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 09:17:10.17 ID:Cg5cm39S.net]
- Announcing TypeScript 3.3
https://blogs.msdn.microsoft.com/typescript/2019/01/31/announcing-typescript-3-3/
- 168 名前:デフォルトの名無しさん [2019/02/14(木) 09:58:56.90 ID:fCWwgaGu.net]
- JavaScriptを勉強したことがないので、今からならどうせならとTypeScriptの方を身につけたいんだけど・・・・
これって先ずJavaScriptが出来ないことには実用にならないの?
- 169 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 10:01:00.45 ID:zQRRDS2s.net]
- そうでもないんじゃない
- 170 名前:デフォルトの名無しさん [2019/02/14(木) 11:21:03.44 ID:sZU59yH4.net]
- typescript は javascript の上位互換なのだから、ts やってるうちに js のことも勉強しなければならなくなる (特に、es5, es2015 とかのキーワードで)
言い換えれば、ts を勉強してれば js が出来るようになる
- 171 名前:デフォルトの名無しさん [2019/02/14(木) 11:22:03.05 ID:MlsuSDTj.net]
- >>167
javascript9割以上+TypeScript追加仕様なんだからjsやらないなら使う意味ねえだろ
- 172 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 00:32:30.89 ID:UOWlr3Ch.net]
- 正確にはTypeScript使ってるとJavaScriptの深い部分が気になってきて、最終的には自然とJavaScriptを勉強し始めてるよ
気にせずTypeScriptから始めれば良い
- 173 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 19:47:15.67 ID:iHivKYcL.net]
- tsだけで理解できることをjsを経由する意味はないしむしろ型を考慮しないダーティーな解法を覚えさせられるだけ有害
- 174 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 22:59:18.80 ID:XxBbyQo/.net]
- tsの、ライブラリの95パー以上がjsなんだから
どうにもならん。 pythonの型アノテーションを 完全に付ける書き方に別言語名つけてるようなもんだ。
- 175 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 16:31:11.68 ID:HHyiFibH.net]
- >>172
動的型は型を考慮しないと思ってんのはお前だけだ JavaScriptの全ての変数に型は存在しているし目の前の変数の型を知らずにコーディングしてる奴なんていない JavaScriptは実行時に型チェックして型の正しさを保証して、 TypeScriptは実行前に型チェックして型の正しさを保証するって違いだけだ
- 176 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 16:54:05.42 ID:sYjKK7tj.net]
- 作ってる時に頭の中にある型なんか、作った後には何の意味もないし、実行時に型チェックするなんて馬鹿の極み
- 177 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 16:59:02.66 ID:bRo2S9Sl.net]
- つ外部入力データ
- 178 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 18:28:18.38 ID:HHyiFibH.net]
- >>175
頭の中w JavaScriptには全ての変数に型があるんだ
- 179 名前:
アンダースタン? [] - [ここ壊れてます]
- 180 名前:デフォルトの名無しさん [2019/02/16(土) 18:29:05.39 ID:STqQL4YT.net]
- jsのboolの型チェックはバグあるけどな
- 181 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 18:59:44.19 ID:qw78JFeM.net]
- >>177
保守する人には作ってる人の意図はわからないって意味だよ
- 182 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 19:03:19.63 ID:qw78JFeM.net]
- 動的のつらみはrubyとかjavascriptで散々通ってきてtypescriptに行き着くわけだけど、
まだそこを通過中の人とは話が噛み合わないんだよなあ 結局こっちに来ることになるのに
- 183 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 19:28:50.73 ID:HHyiFibH.net]
- TypeScriptにUnion型がある時点で最早動的型と言ってもいい
宣言したあとに離れた場所のコードを見ても、パッと見じゃどっちの型になってるかは分からないからね
- 184 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 19:36:05.44 ID:JPFBQxX7.net]
- any型もあるぞ
- 185 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 19:38:44.73 ID:qw78JFeM.net]
- >>181
typescirptってそういうところもチェックしてくれるんだぞ
- 186 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 21:04:52.10 ID:czmkS5Li.net]
- データ型と混同してない?
- 187 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 21:15:59.20 ID:dfsqwbBr.net]
- 動的型の言語、結局人気が年々下落しはじめてる。
c#やtypescriptぐらいの、型あり基本で、 いざとなったら、部分的問わないのも、 自然で簡単に書ける、程度が今はよいな。
- 188 名前: mailto:sage [2019/02/16(土) 21:32:01.93 ID:rUZ2ZZ3T.net]
- >>185
型を意識しない、というのは私には有用にみえます、ただし変数宣言は動的型言語にも必要だと思いますが、それを表立って採用している言語はありますかね…
|
|