はてなキーワード: javascriptとは
「もうエンジニア失職」
「上流以外必要ない」
ってつぶやきがSNSに駆け巡るんだけど、いつ出来るようになるの?
プロンプト整備してもろくなコード出さないし、設計書を読ませても出来ないし、IaCなんて作れない。もちろん有料のAIでだ
ていうかさ、ポジショントークなのは分かるけどフロントの人間、JavaScript書けるから大丈夫ってやつと自称PMみたいな怪しいのと意識高いだけの奴しか言ってないよね
身バレするかな…😟
ちょっと前までLaravelで自分用の蔵書管理するアプリ書いてた
ブラウザ側のJavaScriptでバーコード読んで、サーバー側からAmazonごにょごにょして、中古の価格とか取得できるようにして、
片っ端から本を読み込んでみて、十数年前に1万円した技術書が今は数百円だよwみたいなの眺めてた
他には、全国の医療機関、歯科、薬局の情報が厚労省から手に入るので、それをDBに入れて、
Leafletで地図を表示して、ここの病院はちょっと怪しいことやってそうだなぁ、とか眺められるようにした
あと、複数の自動車のタコメーターとかGPSのトラッキングデータが入手できたので、それで各自動車の挙動を観察できるようにしたりもした
別にすべてLaravelである必要ないんだけど、あまり考えないで自分が書けるのがLaravelだから使ってる
他のPHPフレームワークはもう死んでると思うし…、CodeIgniterとかCakePHPとかFuelPHP?だったか、色々あったね…、色々仕事でもあったね…😥
JavaScriptが人気でGASとかVBScriptでローコードで書くのがメインでPythonとかC#とかサーバサイドとか多かった自分はスピード感に付いていくのが辛い
JavaScriptってみんなどう覚えた?自分は資格試験とか経由で覚えたり業務で覚えたりと後から付いてくる感じで一から覚えるの苦手
あと応用やOracleSilverやAWSのアソシエイトやLPIC2とかよりPMPの方が評価されるのね。自分でも中途半端だとは思うけど高度やGoldやプロフェッショナルって難易度カーブ急すぎるよ
はてなの強強エンジニアには鼻で笑われるけど同世代の中途半端エンジニアはどう過ごしてるか知りたくて書いた
会社の相談員に聞いてもあなただけの仕事言うけど、ライブラリとPaaSがこんだけ発展したらセンスとスピードある奴がいい感じでやるからどっちも無い俺は悩んでるんだよ!って言ったが通じなかった
JavaScriptって聞いたことがあると思うけど、それを実行するプログラムにもいくつか種類があって Chrome だと V8 っていうのを搭載しているのさ
PythonでTk使って芸人?がゲーム作る企画やってたけど、なんでpygame使わないんだろう…😟
というか、もういい加減Tcl/TkのTkだけ延命するのやめない?
権利の問題とか色々あるけど、Qtの方がまだマシだし、まあQt見てれば分かるけど、マルチプラットフォームのGUIを実現するってかなりキツイ作業だし、
メンテのコストもかかるから、いつまでもTkにしがみついてるの分かるけどさ…
imguiって、なんもしてなくても画面更新してるんだろうし、かなりエコじゃないと思うんだけど、画面更新するアプリ、ゲームとかには適しているし、
てか、もうマルチプラットフォームのGUIって、特殊な状況を除けば、もうWebブラウザだよな
最初の話もPythonじゃなくて、JavaScript使えばいいのに…
そこまでシビアな速度は求められてなくわかりやすさで比べた場合に
Array.from({ length: 5 }, (_, i) => i);
Array.from({ length: 5 }).map((_, i) => i);
Array.from(Array(5)).map((_, i) => i);
Array.from(Array(5), (_, i) => i);
Array(5).fill().map((_,i) => i);
[...Array(5)].map((_, i) => i);
Array.from
派 Array(n).fill
派[...Array(n)]
派ITつまんなくなってきた。に近いけど40代エンジニアって日々の不安どうしてる?
上手くやってPM以上の管理職になって技術よりマネジメントとかアーキテクチャメインになった人は不安はないんだろうけど、自分も含めたなれなかった人ってどうしてるのか気になる
自分はとにかく強みを作ろうとトレンド追いつつ基礎も固めてるけど日に日にトレンドは移り変わった挙げ句に今じゃJSやTypeScriptがあれば残りは部品集めりゃどうにかなったり、ノーコードツールで複雑な処理や分析も出来るようになって例えが酷いがITパスポートレベルで済む感じになった
もちろんバリバリ開発してるとこもあるが今度は求められるレベルが高くなっていてそれ以外は一昔前のSES並みの低賃金自己責任世界
フロントもバックもって人材より分かりにくいPowerAutomateとカスみたいなSharePointが評価される時代とか来るんだな。もっとJavaScriptやっときゃ良かった。PythonとかPHPとかLinuxだのフレームワーク分かっても意味無いし求められる数少ない牌は天才で埋まっててもう終わりですわ
ありがとう。ChatGPTに作ってもらった。数値文字参照でないといけないというのは素人には教えてもらわないとたどり着けないので感謝です。
ハイライトされた文字列を <pre> タグで囲み、特殊文字を数値文字参照に変換し、改行を <br> タグに置き換えて、元の文章をその場で置き換えるブックマークレットを作成
javascript:(function() {
function escapeHtml(text) {
return text.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/\n/g, '<br>');
}
var s = window.getSelection().toString();
if (s) {
var escapedText = escapeHtml(s);
var wrappedText = '<pre>' + escapedText + '</pre>';
prompt('以下のコードをコピーしてください:', wrappedText);
} else {
alert("文字列をハイライトしてください。");
}
})();
結論:ゲーム制作(例でツクールMZとかそういったツールでゲーム有料作ってさくっと販売するとか)、本を出版して販売とか、そういった路線もありだと思うぞ。
何ならカクヨムとかでやるのも全然あり。リンクは最後に貼っておくから参考にしてくれ。
https://hatena.zendesk.com/hc/ja?return_to=%2Fhc%2Frequests
以下見た反応↓
これは難しいところではあるが、AIはサポートの役目、と考えてない・・・?
でもdiscordBOTのコードもプログラムだし、AIだってプログラムだと思うが・・・。
正直言うともう時代の流れでこれはあってる。あってるが・・・AIがサポートどころか仕事奪ってるから人が厳しい立場になってるようにも見える。
まだ法律が追いついてないんで何とも言えないが、下手に言うと海外が裁判起こしてきそうで怖い。
こういう人がいるからってなってエンジニアとかになりたがらなくなるのでは、という不安でもあるが。
>| エンジニア()にクソみてーな誇り持つんなら帰りのNAS位てめーで設定してサッサとあの世に帰ってくれよな。 |
何のためのVPSが用意されているサーバーがあるんだとか、そういう疑問がある。
むしろ私はエンジニアじゃないが、discordBOTを組んでいる身としては、サーバー問題は大きい。
NASとかそういったのが用意できない人にとってはここは壁になると思う。正直ここ。
NASとかで組める人が羨ましく思えるが、電気代のことも考えるとそこも壁ではないかと思われ。
今だとAIサポートになっちまってるから人間のプログラムは技術がなくてもある程度の単語でコード書いてるAIがいるから、正直に言うとこの部分が薄れてさみしいよ。
>| AIに仕事奪われる底辺の泣き言?ああそうだなw。じゃあ俺の何百倍の労力でアホの妄言実現する仕事してくれよスーパーエンジニアさんよ。出来んだろ?C言語出来るスーパーエンジニアさんならよ? |
とはいえ、PythonとかJavaScriptとか、そういった有名言語とかではもうAIがガンガン書き進んでしまう・・・っていうのもあるな。
>| どうせ大したことないんだろ?匿名でくらいイキりたいよな?すげーエンジニアさんよ。 |
むしろそれを言ったら5chとかdiscordとかそういったサービスはどうなるって話だ。
こういう人がいるから叩かれると思うんだが。
AIで片付けれるところはあるっちゃあるが、AIでもできないことはある。
そういうサポートを受けてようやく先に進めるのもあるかも知れないが。
こんなのもあるし・・・。
で、結局は著作権云々で慎重に議論はしているが、時代が追いついていないのも事実ではある。
https://store.steampowered.com/app/1096900/RPGMZ/ ツクールMZ
う、有料って人にはこれを置いとく↓
https://silversecond.com/WolfRPGEditor/
参考にしといてくれ
自分ができることで生きていきたい
それはいますぐできるじゃなくても時間をかけて研ぎ澄ませていけばできることも含む、ただしその時間がたっぷりと与えられることが前提だけど
できることで生きたいっていうより、正確には、できないことをやれと言われて、できないですと正直に告白したら何故かがっかりされる、よくわからない世の中がいやだ
プログラミングは書けるけれど好きじゃないし、環境を与えられて手順を教えて貰わないかぎりしっかりとはできないし、なんか歴が長いからという理由でミッションが与えられればよしなに成し遂げてくれるだろうと勝手に期待されても、僕にそんな能力はないのでできない
それがなぜ理解してもらえない?というか、なぜ「できる」前提で話が進む?
すべてが「できない」前提で「できる」ことをポイントごとに確認を重ねていけばいいのではないの?
考え方がよくわからない
仕事は責任をもってやんなきゃならないけれど出来もしないことを出来ると偽るよりはできないと言ったほうが建設的だと僕は思う、あるいはほんとうに正直な「わかりません」によってつぎに駒を進めるしかないじゃないか、しかしなぜそれで満足してくれない?
できることは多いほうがいいと思う、漫画のキャラクターみたいに、だけど現実問題できないことのほうが多いんだよ、
ネットワークだってwebアプリだって電子回路だって統計学だってぜんぶぜんぶわかるわけがないんだよ
人間は生き物なんだ、ルールで動くシステムじゃないんだ、気まぐれでイヤにもなるし腐ったりもする、
なんで出来るとおもっちゃうの?大学を出たから?高校生が勉強して大学に入学して4年経って卒業したらできるようになってるの?
そんなわけないじゃない?そりゃ勉強もしたけれどバイトやらゲームやらで明け暮れて過ぎ去った時間だって少なくないんだよ、別にずうっと専門の勉強ばっかりしてたわけじゃない
ましてや仕事のルールなんてしらない、業務的なことは業務で教えるべきでしょうが、なんで互いにわかるところのピース合わせからやらずに「分かりますよね」で進めるのだろう、そっちのほうが楽だって話なら納得するけど納得できないよ、できることは少ないんだから
プログラミングなんてCしか習ってないよ、それも挫折したし、曲がりなりにインターネットばっかりみてるからHTMLとかJavaScriptが1ミリほど「わかる」くらいでそれは「いますぐ業務に移れます」じゃないんだよ、ぼくは100万あるうちの100を知ってるだけにすぎないんだよ
世界はずっと広くて、深くて、その全体を知るのは必然時間がかかることなんだよ、それをしてこなかった僕がわるいといえばそうかもしれないけれど過ぎ去った時間の使い方を責められたってごめんなさいしか言えないじゃないか、なぜ次につなげるための橋を渡してくれないんだろう、時間を確保してくれないのだろう
だとしたら、そうだね
できないができるに変わるまでのロードマップを自分で整備してそれに則って進める人が立派なんだろうなと思う
短期間で確実にできるようになる人間、自らを自らの力で発展させられる人間
理想的だね、それができればね
でもそんなの全員が全員そうじゃないよ、種を撒いて水を与えてさえすれば花が開く、そんなわけないよ、こっちは土が腐って枯れる寸前なんだよ、ちゃんとやってほしいよ
腐っちゃいけないんだろうな……腐って堕ちたらそこでまたリセット、健康のためにはそうせざるをえないときもあるかもね、だけど最終手段だと思ってる
ちゃんと書こうぜ
javascript:(()=>{let r=location.href;r=r.replace(/(https:\/\/www.amazon.co.jp\/).+?(dp\/..........).+?$/,'$1$2');navigator.clipboard.writeText(r);})()
FANZAの検索結果から熟女を除外するブックマークレット がうまく動いたので、気を良くしてはてなブックマークのコメント欄をスター数順にソートするブックマークレットを作りました。
作った動機は、「注目コメントに入りきれなかったちょっといいコメント」をサクサク探したいから。結果として建設的コメント順位付けモデルを無効化していますが、あのアルゴリズムには特に不満は特にありません。
javascript: (async () => {
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);
window.scrollTo(0, 0);
await wait(1000);
const p = document.querySelector('.js-bookmarks-recent');
let l = Array.from(p.querySelectorAll('.entry-comment-contents'));
const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};
l = l.filter(e => g(e) > 0);
l.sort((a, b) => g(b) - g(a));
p.replaceChildren(...l);
})();
ミニファイしたもの ※コードに一部誤りがありましたので訂正しました(2024-08-16 11:47)
javascript:(async()=>{const wait=ms=>new Promise(resolve=>setTimeout(resolve,ms));document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();window.scrollTo(0,document.body.scrollHeight);await wait(1000);window.scrollTo(0,0);await wait(1000);const p=document.querySelector('.js-bookmarks-recent');let l=Array.from(p.querySelectorAll('.entry-comment-contents'));const g=e=>{let n=e.querySelectorAll('.hatena-star-star').length;const c=e.querySelector('.hatena-star-inner-count');return c?n+Number(c.textContent):n};l=l.filter(e=>g(e)>0);l.sort((a,b)=>g(b)-g(a));p.replaceChildren(...l)})()
FANZAの検索結果から熟女を除外するブックマークレット 参照
javascript:
ブックマークレットに必要な、URLの種類を示すスキーム名です。
(async () => {
// 処理
})();
ページに元々ある変数たちとバッティングしないように、まず無名関数でラップします。処理の中で await を使いたいので async 宣言しています。
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);
「新着コメント」タブをクリックし、ページの一番下までスクロールダウンしてから少し待つ動作です。新着コメントの後半部分(スクロールきっかけの遅延読み込みになっているところ)の読み込みをうながしています。
window.scrollTo(0, 0);
await wait(1000);
ページの先頭に戻ってまた少し待ちます。合計2秒の待ち時間は雰囲気で決めていますので、これでなければならない・これで過不足ないという値ではありません。単にコメントの読み込み完了を判定する処理を書くのがめんどうだっただけです。
const p = document.querySelector('.js-bookmarks-recent');
新着ブコメの親要素です。繰り返し呼び出すので名前をつけています。
let l = Array.from(p.querySelectorAll('.entry-comment-contents'));
const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};
コメントのはてなスター数をカウントして返す関数です。たくさんスターがついてる ★256★ みたいなやつの数字も足します。
l = l.filter(e => g(e) > 0);
ソートする前に、無スターのコメントを消去しています。してもしなくてもいいことですが。
l.sort((a, b) => g(b) - g(a));
残ったコメントをスター数で降順ソートします。.querySelectorAll() で収集した要素を配列に入れ直したのは、この .sort() メソッドを使いたいからです(.querySelectorAll() が返す配列風の NodeList オブジェクトは、配列と共通のメソッドもいくつかあるものの、大半は使えないのです)。
p.replaceChildren(...l);
親要素の内容を、並び替えの終わったコメントでそっくり入れ替えて、処理完了です。画面を見ると新着コメントの中身が「スターのついたコメントのみ・スターの多い順」に並んでいます。元に戻す方法はないので、原状回復にはリロードします。ソート状態を示すフラグを立てておいてスター数ソート⇔日付ソートをかわりばんこに行うようにすればできそうだなと思ったけど実装はしません。連打スターを省く処理を追加してUU数でソートできればもっと厳正なランキングになるなーと今思いつきましたがそれも実装はしません。
私は熟女モノとか人妻モノは眼中にないのですが、なぜだか最近そっち系の作品が多くて閉口しています。
しかしFANZA側の検索システムはNOT検索できるようになっていません。そこで、検索結果から除外できそうなものを除外するブックマークレットを作ることにしました。
さいわい近年は内容の概要文をそのままタイトルにしたような作品ばかりなので、タイトルに含まれるキーワードで除外が簡単にできそうです。
「熟女」とか「五十路」のような単語を含む作品を非表示にしてしまえばよいのです。
javascript: (() => {
const r = /熟女|完熟|熟れ|四十路|五十路|六十路|人妻|奥様|妻|夫|母|ママ|おばさん|BBA|姑|嫁/;
const q = '#list>li';
document.querySelectorAll(q).forEach(l => {
if (r.test(l.textContent)) {
l.remove();
}
});
})();
javascript:(()=>{const r=/熟女|完熟|熟れ|四十路|五十路|六十路|人妻|奥様|妻|夫|母|ママ|おばさん|BBA|姑|嫁/;const q='#list>li';document.querySelectorAll(q).forEach(l=>{if(r.test(l.textContent)){l.remove()}})})()
このブックマークレットで、検索結果に含まれる熟女系作品の数を1/3くらいにまで減らすことができます。
ブックマークレットとは、ブックマークにURLではなくJavaScriptを登録して、閲覧中のページ上で自分(やほかの誰か)が作ったプログラムを実行できるしくみのことです。普通のブックマークと同じようにブックマークバーなどに並べておいて、クリックひとつで呼び出すことができて便利です。
①まず、どこのページでもいいので(今読んでいるこのページでもよい)ブックマークをひとつ作り、ブックマークバーなどの呼び出しやすいところに置きます。
②できたブックマークを右クリックして「編集...」を選びます。
③「名前」欄は、自分にわかりやすい名前に変更します。でも「FANZAフィルター」などあけすけな名前をつけると、誰かに画面を覗かれた時に困りますよ。
④「URL」欄に、上記したプログラムコードを入力します。ただし上記のコードは私向けのキーワード選定になっていますので、ご自身の好みに合わせたキーワード選定をしていただければよいかと思います。/単語1|単語2|単語3/
のように記述してください。
ふつうのソースコードと、改行・インデントなどを省いてミニファイ(最小化)したもの、どちらをコピペしても大丈夫です。
⑦このブックマークレットを起動します。すると、瞬時に検索結果が減ります。
キーワードだけが異なる複数のブックマークレットを登録しておいて、場面に応じて使い分けるなどの工夫もできるでしょう。
上記のスクリプトが何か悪さをするようなものではないことを説明するために、また、JavaScript を学習し始めたばかりの人のために、このシンプルなスクリプトの解説をします。
javascript:
URLの種類を示すスキーム名です。一般的なURLは https:
や mailto:
などで始まりますが、javascript:
と書くと、これに続くコードがプログラムとして実行されます。
(() => {
// 処理
})();
ここからが JavaScript です。まず処理全体をくるむ大きなカッコと最後に付け足された () は、自己実行無名関数という形式です。今回のブックマークレットは変数を含みますので、実行するページに元々ある変数たちとバッティングしないようこのようなかたちにします。
const r = /熟女|完熟|熟れ|四十路|五十路|六十路|人妻|奥様|妻|夫|母|ママ|おばさん|BBA|姑|嫁/;
除外したい単語を羅列した正規表現です。個人個人で設定が変わる部分なので、編集しやすいように切り出しておきました。
const q = '#list>li';
フィルター対象とするHTML要素群のクエリーセレクター文字列です。検索結果に一覧表示される、個々の作品要素を選択します。FANZAがシステム改修を行うと変わってしまう可能性がある部分なので、メンテしやすいようにここだけ切り出しておきました。
document.querySelectorAll(q).forEach(l => {
// 処理
});
クエリーセレクター q
に一致する要素 l
ひとつひとつについて反復して処理を行います。
if (r.test(l.textContent)) {
l.remove();
}
もし要素 l
内のテキストが正規表現 r
と一致していたら、要素 l
を取り除く、という処理です。正規表現 r
はキーワードの羅列ですので、テキストの一部にキーワードのどれかが含まれていたら一致したことになります。
BASICとマシン語とかりかりに圧縮した暗号のようなゲームプログラミングを教えてくれた。
学校でCを知ったときに「何これ速くてわかりやすい」と思わせてくれたけど、結局はpythonとjavascriptとRしか使っていないどこにでもいるリーマン。
当時の人気は賈詡とか徐庶とか軍師系だったので、脳筋イケメン好きな現役オタの姪っ子とは話が合わない。
おっさん同士が悪態をつきあうのがおもしろいと思わせてくれた。
独自の考察が流行って、それを前提にした思わせぶりな演出も流行って、もともと思わせぶりな演出が好きだった俺のゲームもそこそこ売れた。
今は20倍くらいに薄めて売ってる。
今、ああいうのどこでやってるの?
ばあさん飯はまだかのう。やーねー、昨日食べたでしょ。
この人は可哀想なことに「学校の言うことに従っておけば人生が幸せになれる」という
恐らくこの先20年ぐらい同じような失敗を繰り返してしまうのだと思う
副業で食っていけるようなITエンジニアを簡単に教育できるとは思えないし
そもそもなんだが、スクールや学校の言うことを全て丸暗記すれば大丈夫、というレベルの教育は小学生の早い段階で終わっていて
を知るためであって、塾で丸暗記を教わるために出しているのではない
興味を持って調べたことというのは誰かに教えて貰ったこととは違って記憶への定着や新しい着想に繋がるので
大学には興味・好奇心を持った人が更なる高等教育を受け、新しい発見をするために進学する
プログラミングやITに関する技術も同様で全てをスクールで教わるというのは非現実的で不可能だ
例えばよく使われるプログラミング言語だけでもC,C++,Java,JavaScript,TypeScript,Rust,Python,PHP,Ruby,Perl,ShellScript ぐらいはあって
これらの言語仕様を覚えるだけでも大変だしよく使われるライブラリなどが組み合わされるととても現実的ではない
なのであくまでもスクールや教育機関ではどれか1つの言語を選んでプログラミングの概念や思考法を教えているに過ぎないし
お金を貰えるレベルになるには少なくとも3年は自分でプログラムを書いていないと到達できない
興味がないものを3年も続けられるわけがないので、スクールや学校で「興味が無い」と思ったのならやめた方が良い
つまりスクールに通ってITエンジニアになるにはスクール外で興味を持って学習することが必要なのだが
残念ながらこの法則は小学校高学年から同様で、ちゃんと学校外で勉強してきたような人は大人になってからスクールに通ったりはしない
JavaScriptの棚にJavaの本刺さってる……
とある企業の面談で、「reactは運用コスト高いと思うんですけどなんで選定したんですか?」って聞かれてめちゃくちゃ困った話→Web開発の運用コストに関する様々な意見が集まる
https://togetter.com/li/2407336
ここでReactが運用コストが高くないって言ってる人は恐らくプロジェクト経験が少ないか運用経験がないかのどちらかだ
WebサービスというのはフロントエンドのJavascriptフレームワークが必須というわけではない
そのため一定のシステムの規模まではバニラのJavascriptやjQueryと比べてReactは明らかに運用コストが高い
バニラやjQueryでは作れないというのであればそれを説明しろというのがこの面接官の質問の趣旨だろう
色々なプロジェクトを経験しているとReactなんて確実に必要ないようなショボいサイトやレガシーなシステムはよく見る
逆にシステムが完成して運用が始まった事でプロジェクトが解散してフロントエンドエンジニアがいなくなり画面の小さな変更やバグを修正する為にフロントエンドエンジニアを探さないといけなくなっているシステムもそれなりに見たことがある
この質問はフリーランスでスポットで仕事を受けてるようなフロントエンドエンジニアやアーキテクチャ選定に関われないような作業者としてのフロントエンドエンジニアなのか、もっとシステムに深く関わってるエンジニアかを確認するためにはいい質問だと思う
言語とは、特定のルールに従って情報を伝えるためのシステムです。
CSSは、ウェブページのスタイルを定義するための特定のルールセットを持ち、それに従って情報を伝えます。したがって、CSSも言語の一種です。
CSSは汎用プログラミング言語(例:JavaScriptやPython)とは異なり、特定の目的(スタイルの定義)のために設計されています。
Turing Completeでない言語も言語として認識される例として、HTMLやSQLも挙げられます。
CSSも同様に、特定の目的を果たすためのスタイルシート言語です。
世界中のウェブ標準を推進するW3C(World Wide Web Consortium)は、CSSを正式な言語として認識し、仕様を策定しています。