「Dom」を含む日記 RSS

はてなキーワード: Domとは

2024-02-09

anond:20240208194947

こうしてみると仮想DOM以降、webフォーム弄る以上の成果物冷静に考えると薄い気もしてきた

2024-01-20

政界舞台BLゲーム意図せず沼った

東京24区」というゲームで、あらすじをみると「政界BL」とあり、何やら敷居が高そうで一瞬指が止まってしまった。同名のアニメがあるが、それとは無関係なので気をつけてほしい。

友人から勧められたのと、年末年始SwitchDLソフトの半額セールをやってたのとで買った。BLは、商業本を年に1〜2冊読む程度で、よく分かってなかったのでテーマの敷居の高さ以外は全く吟味せず購入できた。しかし、主人公総受けというのに少し抵抗があり、購入してから一週間くらい寝かしてしまっていた。でかいイベント終わってやっと完全にフリーオフ日に、軽い気持ちでなんとなくプレイし始めたらそれがとんでもない沼だった。AM2:00から翌日のAM5:00くらいまでほぼノンストッププレイしてしまった。もちろん寝不足

翌日、PC版(R18指定)を買うに至る。BLゲーム自体ほぼ初めてで、BLドラマCDとかも聞けない質であるにもかかわらず、ストーリーが気になりすぎて気づいたら購入していた。この時点ではまだSwitch版の真エンドにたどり着いていなかったので、ストーリー面白さは相当だと思う。

与党衆議院議員最年少の若手政治家、其扇晟尋(そのぎ あきひろ)は京都から選出され政界に参戦した。そのルックス若さにより、マスコミ国民たちからアイドル政治家のような扱いを受けていることに憤慨を感じる日々を送っていた。

渋谷で起こったテロ事件きっかけに、テロ対策本部が立ち上げられる。あるルートでは臨時大臣に大抜擢され、公安SPである我妻タイガ(あがつま たいが)とともに事件解決に奔走する。其扇の後援会とIAFのスポンサーをつとめる大企業東郷グループの次期社長であり、テロ被害者である東郷遊馬(とうごう あすま)に寄り添い、協力しながらテロ対策として被害者を守るための法案を作る。テロ対策本部に参加することになった東京都都知事である白洲武彌(しらす たけみ)とともに過去に起こった自衛官自殺事件真相を暴く。そして、幼馴染で自身の有能な秘書である蓼丸一貴(たでまる かずき)とともにSP都知事、IAFスポンサー社長らを巻き込んで、テロ事件真相に迫る。

まず、主人公である其扇はメンタルが強くて、優しくて、芯がしっかりあってすぐに好きになれたのが大きかった。気に留めるにはあまりに悪意でしかない国民コメントとか、保身が大事老害に成り下がってしまってる政治家たちとか、切り捨てるものスッパリ切り捨てて切り替えられるポテンシャルもつ其扇のことを普通に好きになった。こういうシミュレーションゲームって、流されてる感というか八方美人やってる感がどうしても拭えなくて苦手になりがちなのだが、今回そういう違和感を持たずにプレイできた気がする。

ルートプレイした感想としては、劇場版相棒を見終わった後の爽快感とか達成感とよく似た感情でいっぱいだった。しかも、BLである必要があったかと言われると、必要がめちゃくちゃあった。これがすごいと思う。今まで私が読んできた商業誌のBLなどでは、萌えよりストーリーを重視した作品になると、BL要素はストーリーの要にならないものが多いように思っていたからだ。それでいて、刑事ドラマとか、サスペンスとか、推理小説が大好きな私にクリティカルヒットした。というか、それくらい刑事モノとかにどっぷりの私がしっかり楽しいと思える、厚みのある作り込まれストーリーだった。

私はまず2〜3個自分選択肢を選んで、その選択肢がどのルートに行くのか知った上でBAD ENDから回収していく傾向がある。各キャラに2つのGOOD ENDが用意されており、それに分岐していくつかBAD ENDがあった。以下はがっつりネタバレを含む。

◇◇

今回、最初になぞるルートとして私に選ばれたのは、我妻タイガという公安SPだった。

まず、在日ラーシア人の経営する違法ゲイバーに潜入捜査させられることになったタイガに協力し、無国籍問題と向き合うストーリー。正直ここがゲイバーである意味があるかと言われればそこまでなのだが、現実でもフィリピンパブとかって繁華街と二丁目の境目あたりにあるイメージがあるので無視する。タイガの持つバックグラウンドと外見をハニートラップとして利用するという面でもゲイバーである必要があったのだろう。上から命令淡々とこなすだけのタイガに対し、タイガへの不当な命令に怒る其扇。腐った公安上層部に、タイガタイガ上司である宮丘、そして国会議員である其扇の3人で立ち向かいつつ、無国籍問題に切り込んでいく。その過程で、タイガのことを大切に想っていく描写が良かった。最後事件解決後の休日タイガの家で過ごすのだが、PCの版ではここにベッドシーンが追加されていた。あと、このルートのBAD ENDの蓼丸のメンヘラっぷりにちょっと引いたが、これが序の口だったと知るのはもっと後の話。

もう一つはテロ対策大臣としての任務を全うしながらテロ事件犯人像に迫るストーリー一見Dom/Subっぽいのに、其扇がDom(受)でタイガSub(攻)っていう構図が良かった。Dom/Sub萌えが一切ない私でも「ふぅん、いいじゃん」となるくらい良かった。タイガが其扇の議員寮まで其扇を送り届けるときに其扇への忠誠を誓うシーンがあり、PC版ではここにベッドシーン(ベッドではない)が追加されていた。

◇◇

次に選んだのは、冒頭の共通ストーリー部分に出てきて気になっていた白洲都知事ルートタイガルートで十分面白いと思っていたが、ここからが本当の沼のはじまりだった。

白洲武彌は元防衛庁官僚だったが、ある自衛官自殺事件きっかけに政界に身を投じた。そもそもの土台や手腕も全く違うというのに、共に若いというだけでことあるごとに其扇と比較されることに嫌気が差していた。なので最初からかなり好戦的な態度を取ってくる。が、一緒に仕事をするにつれ其扇のことを認めざるを得なくなる。頭脳戦が多いのがこのルートで、最初こそ討論で頭脳戦を展開する2人なのだが、徐々にバディのように悪い笑みを浮かべながら生き生きと共闘する2人を見ることができる。

まず、白洲都知事と一緒に自衛官自殺事件真相を追うストーリーSNS募集した情報の中から気になる情報を見つけ、故人のプライベートなことだからオフレコで白洲に共有したいと申し出る。オフレコということで白洲の自宅に招かれたところで、白洲に騙されて無理やりキスされ、それをすっぱ抜かれ白洲との熱愛報道を流される羽目になりキレ散らかす其扇(と蓼丸)。実証実験とのことで、同性愛というだけで批判的な見方をされることはないのではないか、と発言した其扇を試したのだろうと思い至る。そこからダブルブレインとして自殺事件を追いつつ、途中折れそうになる白洲(と音坂)の背中を押しまくって救い上げる其扇の頼もしさがよかった。自殺した自衛官と白洲が恋人同士だったと勘違いした其扇が他のルートに比べて早めに恋心を自覚して抑え込もうとする描写もよかった。事件解決被害者家族に報告した帰りに傘に隠れながらキスをして恋人関係になり、白洲の自宅へ行ってなし崩しに。後日、ばっちりキスの瞬間をすっぱ抜かれ、白洲にまたあなた仕業か、と抗議の電話をしたところ、会見中だった白洲にそのままマスコミに向かって交際宣言されてしまう、というのも白洲と其扇の明るくて強い関係性現れる締め方ですごく良かった。

もう一つは、白洲との協力を諦め、というか歩み寄ったのを一方的に跳ね除けられたために万策尽き、会議を入れまくることで、ただでさえ多忙な白洲をもっと忙しくしてオーバーフロー起こさせて潰そう、というストーリー最初はあの白洲をいじめられるという高揚感から其扇の案に乗ってきた議員たちだったが、どの議員自分が白洲と対峙できるほどの手腕を持ち合わせていないために保身に逃げるようになる。資料作成会議の調整を全部押し付けられることになった其扇は、やがて疲弊していく。もう少しで折れてしまうというところで、都庁の長いエレベータに乗り合わせてきた白洲都知事が其扇を引っ張り上げてくれるのが、もう一方のストーリー対照的ですごくよかった。擦り切れていく其扇に比べ、多忙ながらも都庁スタッフを鍛え上げてメキメキ力をつけていく白洲がめちゃくちゃ頼もしくてかっこよかった。使い物にならなくなった其扇のことなんか簡単に切り捨てると思っていたのに、その埋もれかけていた有能さをしっかり見極めているために、其扇がほしいと言い切れる一途さ。

ここで離党の意志を蓼丸じゃなく晴山相談しに行ってしまうと、其扇は民自党と、それに拘っていた蓼丸に諦めをつける。そして、エレベータ内で交わした取り引きを行うため、独断で白洲に抱かれに都内ホテルへ行く。GPSと盗聴器を兼ね備えたアプリで白洲との行為を盗み聞きしていた蓼丸は完全に病んでしまう。Switch版ではこの盗聴データを元に、PC版では薬を盛ってハメ撮りしたデータを元に其扇を強請って、其扇が政治家としての志を折って未来を諦めるBAD ENDになる。

一方で、離党の相談を蓼丸にすると、蓼丸は其扇の選択尊重して一緒についてきてくれることになる。このストーリーが全部のストーリーの中で一番熱くて好きだ。気持ちの踏ん切りをつけた其扇は白洲に連絡を取る。一度白洲にマウントを取らせることで、自分プライベートを白洲にさらけ出すことで、白洲と一蓮托生の道を歩むことになるという白洲の意見に戸惑いつつも乗る。PC版だとねちっこいマウンティング描写がある。其扇もやられっぱなしじゃないので、2人の応酬が見れて楽しい。余談だが、エグゼクティブスイートと書かれたCGがどっからどう見てもラブホの絵なのは頑張ってスルーしたい。

4年後の衆議院選で2人は新党を立ち上げ、34席もの議席を確保するという快進撃に。さらに、与党である民自党との連立政権に持ち込む。初登院のインタビューのスチルでは、白洲に影響を受けたとしか思えない其扇の服装を見ることができる。ここで聞けるBGM「好敵手」が本当にかっこよくて、2人の強い決意、ゆるがない闘志が曲から溢れ出ていてめちゃくちゃ好きだ。2人が前を向くとき、この曲が2人の背中を押し、未来を照らしてくれるようだった。

若い世代政治に引き込もうとするこの2人の強い意志カリスマ性、まっすぐで眩しくてすごくいい。現実もこうであってほしい。もしかたらこいつらみたいな闘志を持った政治家もいるのかもしれないと、本当に少しだけ、淡い期待を持てる気がした。私も変わるぞ、お前らのおかげで。

あと、白洲の声優さんの演技、笑い方とか小馬鹿にする感じが本当に自然で素っぽくてすごくよかった。

◇◇

次に、友人が一番好きだと言っていた東郷遊馬のルートへ。冒頭では、初顔合わせ勉強会で其扇に突っかかってきたり、テロ被害者となった遊馬とその父親を見舞いに来た其扇に激昂したりと結構精神不安定なのかなという印象を受けた。攻略対象の中で一番可哀想で、どうにかして救ってやりたいと思ったと友人は言っていた。

東郷グループ地盤京都の老舗旅館で、其扇の支援者のうちのひとつ。遊馬はその視野の広さと柔軟性から、年の離れた長兄と次兄を差し置いて次期社長に抜擢されていた。渋谷スクランブル交差点で起こった無差別テロを目の前で体験した被害者である東郷グループ社長だった父親は、遊馬を庇って大重体となり、ずっと意識が戻らない。

まず、BAD ENDしかないルートに行ってしまった。渋谷テロ事件犯人DNA鑑定の結果を精査せずにマスコミに発表したらBADまっしぐらに。事件フラッシュバックして夜眠ることができず、意識が戻らない父親言葉幻聴として聞こえるようになる。国際関係悪化する中、遊馬が提案したイベント政府にとっても魅力的で、政府協力のもと精神が安定しないまま遊馬はイベント成功させようと張り切る。ルート分岐イベント中に父親危篤を知らるか知らせないかで、どちらの場合も死に際に立ち会えないが、知らせた場合遊馬は完全に壊れる。知らせなかった場合は其扇を恨むようになり、父親葬儀の朝、刺殺され遊馬は自分の喉元を掻き切って心中する。個人的にこの心中エンドは結構好きだった。死後の描写が一切ないため、葬儀に現れない其扇と遊馬を心配した兄たちと蓼丸が駆けつけて見た地獄はどんなだろう、と想像してわくわくしてしまった。

もう一つはDNA鑑定の結果を慎重に扱い、かつ政府発表の前に遊馬に外国人労働者について尋ねるため、遊馬と其扇と蓼丸の3人で東郷御用達料亭食事を行ったことをきっかけに、東郷グループと協力して国際問題東郷家の問題に立ち向かっていくストーリー食事会での遊馬は勉強会病院で見た攻撃的な遊馬とは違い、其扇たちへの細部に行きわたる気遣い会社を背負う者としての責任感と広い視野を見せつける。登場人物の中で、遊馬だけがゲイと設定されており、其扇と共に兄弟社会からの期待に押しつぶされそうになる弱さや、事件によるショック症状に立ち向かう。ここで、ゲイであることを隠してくれ、という選択肢を選ぶと、其扇は遊馬の性欲処理機と成り果てるBAD ENDになる。これもPC版だとガッツリ抱かれるシーンがあり、遊馬に抱きつつあった其扇の恋心は完全にぶっ壊され、遊馬の性欲処理のために身体を開発され遊馬好みに作り替えられていた。全ルートの中で一番淫乱な其扇だと思う。Switch版の舌の裏のピアスと、PC版のぶちまけられた精液が同じ扱いなのがただひたすらにすごい。

GOOD ENDのほうは遊馬に口説かれるにつれ恋心を順調に育て、遊馬の手腕もゲイであることも家族に認められた報告を受け、其扇は法案を通すための手伝いをして欲しいと嫌われる覚悟で遊馬に告げる。其扇からの依頼を受けるのと、抱かれるのとを交換条件にすることで、最後まで其扇の逃げ道を作ってくれる遊馬の優しさに其扇は陥落。このルートだけはSwitch版よりPC版のほうがいいと思う。其扇を抱く時の気遣いというか、遊馬のいいところ、魅力が濃縮されているからだ。2回戦目を其扇がベッドへ誘うというのもよかった。

◇◇

蓼丸ルートはほか3人を攻略してからでないと解放されない。事件真相がすべてここにあるからだ。

テロ対策大臣として渋谷演説を行う際、蓼丸が其扇の盾になり撃たれてしまう。一命をとりとめた蓼丸の入院中、蓼丸が裏金を作っていたことが発覚する。退院した蓼丸を見舞いに蓼丸の自宅に向かい裏金の話をすると蓼丸は其扇の首を絞める。ここでやめてくれ、と言うとそのまま殺されるBAD ENDに終わる。このBAD END、蓼丸の本当の狂気垣間見えてめちゃくちゃ恐ろしかった。手を離すよう言うと、メインストリーが進む。事件真相については端折るが、事件解決三条総理と大延(勘当されているが蓼丸の実父)から任された其扇は、白洲都知事、遊馬の力を借りながらタイガと蓼丸と共に事件解決に導く。Switch版では、三条総理と大延の絆を見た其扇と蓼丸は今後の未来重要選択を迫られることになる。個人的には登場人物たちの未来自由に思い描けるPCSwitch共通エンディングが好きだった。

◇◇

ストーリーが本当に良く出来ていて面白かった。私なら、タイトルキービジュアルを見ても「政界BL」という言葉に敷居の高さを感じて躊躇していたと思う。面白かったと勧めてもらって、半信半疑プレイした結果これだけのめり込むことが出来て、この作品出会えて本当に良かったと思えた。友人に感謝しかない。

2023-12-18

anond:20231218170959

いうてブラウザ自作するにはCSS仕様完璧に把握してこそdomとか解釈して表示する機能を実現できるわけで、それはプログラミング言語によるものなのだから、やっぱプログラミング言語マークアップ言語以上の難しさだろ

2023-11-14

司法試験1位合格でも年齢差別される恐怖

いやこれ凄いな

未履修からロースクール入学司法試験1位合格って相当優秀だろうに(しか社会人経験もばっちり有りなので勉強しか出来ないガリ勉って訳でもない)

それでも裁判官検察大手どころか中堅の法律事務所も全部落とされるのか…

最近社会人からの予備試験ルート司法試験合格も盛んに宣伝されているけれど

実際に受かったとしても年齢が高ければ門前払いだって事がよーーく分かった。

どんだけ過酷なんだよこの国の年齢差別

そりゃあ戸籍を偽造してでも若く偽りたいと思う人が出てくるのも無理もない。

だってどれだけ苦労して実績を上げるよりも、戸籍の生年月日を若返らせる方が有効なんだから

ITコンサルから転身、32歳入学司法試験1位合格 ロースクール1期生伊藤弁護士が語る「キャリア多様性」』

https://news.yahoo.co.jp/articles/39a6611e17f307644c90dfa755fba1a1a121becf?source=sns&dv=sp&mid=other&date=20231111&ctg=dom&bt=tw_up

裁判所検察庁、大手法律事務所は、若い合格者を優遇して採用しようとします。自分司法試験後に大手・中堅法律事務所に応募しましたが、ことごとく落とされましたか(笑)学生がそこで活躍したいと思ったら『若いうちに合格するしかない』となってしまうのも無理ありません」

2023-07-21

「今回の問題職場トイレ問題であって」ってさあ

職場って1日の、それどころか人生の長い時間を過ごす場所なのに

まりにも軽視され過ぎていやしないか

労働時間が3時間もかならともかく、実際は「最低で」8時間という、長い時間拘束されるのに。

https://news.yahoo.co.jp/articles/53b79e8c47fd13354352db74d57e8f5359cf87de?source=sns&dv=pc&mid=art11t3&date=20230721112126&ctg=dom&bt=tw_up

長官候補ともされる今崎幸彦裁判長は、今回の問題職場トイレ問題であって、トイレを含む不特定多数が使う公共施設使用のあり方とは別とも言及。こうした問題は『一律の解決策になじむものではない』と断言していた。判決文だけでは誤解を生むという判断だろう」(司法関係者

2023-06-29

閣僚が答弁できないの当たり前じゃないの?

ブラック霞が関」で官僚離れ深刻、国会答弁打ち合わせ「朝4時」開始も背景(読売新聞オンライン)

#Yahooニュース

https://news.yahoo.co.jp/articles/ab92fb0543ba4298423f9dcce607678bf56a889c?source=sns&dv=sp&mid=other&date=20230629&ctg=dom&bt=tw_up

これに対して閣僚官僚に答弁を作ってもらってることを批判してるやついるけど、1つの省の全ての業務を1人の人間が把握するのって現実的可能なの?

何十年と働けば可能かもしれないけど、大臣職なんて数年ごとに変わるしその度に各省庁の仕事を全て把握するのはいくらなんでも無理ゲーすぎない?

例えば、お前らは自分の働いてる会社業務全て説明できるか?俺はできない関係ない部署ことなんか説明できないよ

2023-06-17

anond:20230617130556

ワシが携わってるtoBアプリケーションは読み込みに15秒くらいかかるで。

大体のプロジェクトではパフォーマンス改善にまで手が回ってないか仮想DOM人類生産性を下げてそうだなあとか思ってる。

仮想DOMかいらないんだけど

コンポーネント単位で書き分けができるなら、ユーザー側でどうやって表示されようがどうでもいいんだけど。

あのクソ重たくて無闇に複雑な仮想DOMかい技術は本当に必要なの?

2023-06-08

増田記事詳細ページのパンくずリスト末尾にある記事IDDOMがtype=textのinputタグなのが気になる

onfocus="this.select()" という属性があるのでコピペ用のタグ指定だとは思うんだけど普通入力領域なので無意味に上書きできるのがずっと気になってる

2023-05-12

anond:20230512120133

単にDom/Subだけなら日本で言うSM意味は変わらない。

オメガバースあたりから現実とは性別概念が違う」物語流行りはじめたけど

そういう特殊性別設定にSM概念を導入してDom/Sub性別にしてしまった、という話。

昨年流行若者言葉 Dom Subちんぷんかんぷん

検索率上位に入ってたらしいけど

まっっっっっっっったく聞いたことがないのは

オタク方面若者言葉からだろうし

それはい

でも

解説読んでも全然からあああああああん

Dom 庇護する性別

Sub 庇護される性別

???

要するに架空性別ってことなんだろうか

性を作っちゃうのは面白いけど、でも、支配して庇護して守ってあげたいお仕置きしたいって

それ旧弊な家父長的男性像と何が違うん?

っていうか男性女性と並列に着く属性なんだろうか

DomSubコマンド言葉を使って命令して従わせるプレイ、なる儀式をして信頼関係を築くらしい。行き過ぎると セーフワード を行って止める事ができる

へえ

セーフワード普通に現実にもあるけど?

プレイSMみたいだけど単なる性的嗜好ではないのか、どうやって違いを証明して性的指向に入れたのか

よく分からん

世代が、若者についてけないわとかいうの鬱陶しかったけど

いざその立場になると、若者にはついてけないわ感がやばい

これが老化です、か

2023-01-26

VPS自宅サーバーにインストールしたいSaaS代替Webアプリ38選

シェアウェア(という表現はおいておいてのやつ。https://anond.hatelabo.jp/20230124045812)の記事面白かったので、自分の得意分野の領域でいろいろ紹介します。

基本的に、SaaSサービスは便利だけど、あれもこれもと契約していったらサブスク破産するので、

ものによってはセルフホストした方がいいと思ってる派。

Dropbox/GoogleDrive/box代替

NextCloud

もともとownCloudっていうDropbox代替があったんだけど、そこから分派して今も機能開発が続いている。

興味深いのはLAMP構成なので、VPS自宅サーバーじゃなくても、レンサバで動くのがいいよね。

データ保存領域オブジェクトストレージ(S3互換)も利用できるので、例えばWasabiなんかと契約してお安く済ませてしまうのも全然アリかと。

Trello代替

Wekan

最近カンバンシステムって、単体で使うんじゃなくていろんなアプリの中で使われる印象なので、今更Trelloだけ使いたい、なんてニーズはないかもだけど、

そこまで複雑でなく小規模なプロジェクトとかだと、意外とTrelloだけでいいよね、みたいなこともあるかな

そういう時は、これを使うといいかも。

Slack代替

Mattermost

ちょっとUI雰囲気が違うだけで、まんまSlackです。絵文字の追加もできるし、APIもあるし。人によって好き嫌い分かれるスレッド機能も、まあ、あのスレッド機能のまま。

その他のSlack代替選択肢
  • Rocket.chat
  • Zulip

この2つは使ったことないので、名前だけ挙げておきます

Zapier/IFTTT/Make代替

n8n

n8nと書いてnodemationと読ませるらしい。初見殺しすぎんだろ。

Zapier使ったことある人はすぐわかると思います

ZapierやIFTTT無料枠あるけど、あれもこれもやり出すとすぐ無料枠埋まっちゃうので、これ結構いいと思うんだけどな。

その他のZapier/IFTTT/Make代替
  • Huggin
  • Windmill

kintone代替

Exment

kintone使ってる会社増えてると思うんだけど、まだまだ1ユーザー1500円ってのは高いので、零細企業は導入し辛いと思う。

で、それの代替になるのがExment。UIがkintoneとは少し違うので代替と言い切れないかもしれないが、

やれることはkintoneのソレと全く同じなので、用途代替はできる。

開発も日本企業なので、UI日本語化されている。LAMP構成なので、レンサバでも動くよ!

Airtable代替

NocoDB

そもそもAirtableって何やねんって人もいるかもしれないけど、kintoneとGoogleスプレッドシートをいいとこ取りして、Trelloとガントチャートを足した感じ。

これのOSS版です。結構再現度高いので良い感じ。

ZoomGoogleMeet・Microsoft Teams代替

Jitsi

これもまあまあいい感じでZoom再現してますZoomの方が新機能の追加早いけど、Jitsiも頑張って追いついている感じです。

ただ、やる内容が複数人でのリアルタイム動画配信なので、サーバースペック回線スペックはまあまあ必要なので要注意。

BigBlueButton

こちらは使ったことないんだけど、よりオンライン授業向けらしい。

Calendly代替

Cal.com

最近よく見かけるようになった、オンラインミーティングとかの予定をブッキングさせるSaaS

あれのはしりがCalendlyで、日本でもいくつかそれのSaaSができてますね。

あれらも無料枠だと1カレンダーだけしかできなかったりするんだけど、これなら好きなだけブッキングさせられます

Intercom、Zendesk代替

Chatwoot
Papercups

ECサイトとか、Webマーケティングを重視してるサイトによくある、画面右下に吹き出しアイコンがあって、チャットウインドウがぴょこっと出てくるやつ。

日本ではWeb接客とか言われてるけど、あれの代表的SaaSがIntercom。Zendeskは、どちらかというと内部ツール向きかな。

これのOSS版がChatwootとPapercups。自社サイトWeb接客入れたいけど、費用抑えたい、って時にどうぞ。

Backlog/Asana代替

OpenProject

この手のツールがないと仕事にならないという人も多いと思います

これまでだとRedmineがそれのOSS版的立ち位置でしたが、さすがにイマドキあのUIはないなぁ、と。

OpenProjectは、Microsoft Projectの代替イメージしてるみたいですが、

ガントチャートカンバンデフォルトで使えるので、BacklogやAsanaの代替にはちょうど良いでしょう。

ただ、そんな高度なことしてるわけではないのに、サーバー要求スペックちょっと高めなのでご注意を。

Google Analytics代替

Matomo

UA廃止GA離れが始まってるとも聞きますが、疎開先として有名。

PHPで動くので、PHPWordPressでできたサイトに一緒に入れちゃってもいいと思う。

HeadlessCMS関連

HeadlessCMSは、データ表示を持たず、フロントエンドAPIを通じてデータを渡すタイプCMSのこと。

このジャンルでは、SaaSだとContentfulが有名だけど、OSSでもいろいろある。

Strapi

Node.js製。歴史があるので、結構いろんなことができる。

WordPressのGutenbergエディターを取り込んだプラグインなんかもある。

User認証も持ってるので、CGM的なサイトを作ろうと思ったらできなくもない。

Directus

これもNode.js製。利用できるDBが幅広く、既存データベース活用できる。

なので、既にPostgresSQLとかでデータを持ってるんだけど、

非エンジニアにもデータを触らせるためのフロントエンドが欲しい、ってニーズに良いかも。

こちらもUser認証デフォルトで持ってる。

Cockpit CMS

PHP製。SQLiteMongoDBで利用可能MySQL/PostgreSQL使えないのがちょっと残念。

Shopify代替

Medusa.js

近年、本腰入れて自社ECサイトをやろうと思うと必ず選択肢に上がるShopify。

インテグレートパートナー向けのエコシステムも充実してるので、取り組み始めるエンジニアシステム会社も多い。

ヘッドレスコマースや越境ECには向いているものの、これをセルフホストしたい、というニーズに応えたのがmedusa.js

ざっと見てみただけだけど、モダン構成で、今時のフロントバックエンドを分けた構成でやりたい、というのには向いている。

プラグインmedusa-marketplace.jsというのもあり、Amazon的なマーケットプレイスも実現可能

Figma代替

Penpot

昨年、Adobeに買収され、デザイナーたちを驚愕させたFigma

先日はAdobe XD終了のお知らせとなり、UIデザイナーたちの不安は募るばかり。

そんな提供企業に振り回されたくないなら、このPenpotでUIデザインしよう。

Figmaほど機能実装はされていないが、まあまあ一通りのことはできる。

Figma代が嵩むとお嘆きの制作会社なんかは、一考の余地あるんじゃなかろうか。

Google Form代替

Oh My Form

企業によっては、コンタクトフォームをたくさん作りたいという会社もある。

例えばセミナーを頻繁に開く企業だったりとか、

人材採用フォーム職種別に細かく分けたい(しかも頻繁に募集職種が変わるとか)

などの要望によって、GUIフォームを作りたい局面がある。

Google Formで大体解決しそうだけど、それをGoogleに頼りたくないならこちら。

まあまあ機能豊富なので、人によってはGoogleFormよりもこちらを好むかも。

Gmail代替

Mailu

DockerベースWebメールUI。送受信に必要ものを、丸っとDockerで用意してくれているので便利。

SalesForce/HubSpot代替

SuiteCRM
Mautic
Erxes

HubSpotは、いわゆるMarketing AutomationCRMを一体にしたツール無料枠もあるが、かなり限定されている。

上記でいうと、Erxesが単体で一番近い機能を持っている。

MauticはMarketing Automationよりの機能が多く、ユーザーサイト上での回遊をビジュアル化してくれたりする。

SuiteCRMはザ・CRMという感じ。SalesForceデフォルトで使う感じに近い。

ツールが分かれてしまうのは辛いところだけど、それぞれにAPIがあるので、うまく繋げられると強力なツールになってくれるはず。

Sendgrid/Mailgun代替

Postal

Webサービス作ってると、メールの通知や一斉配信などがあると思う。

通常これらはSendGridや、AWS SESなどで処理すると思うが、これらにもOSS代替がある。

PostalDockerメール周りのもの全部用意してくれているので、かなり楽。

Jimdo/Wix代替

Microweber

WordPressモダンにしたような感じで、EC機能デフォルトでついてる。マルチサイトも標準。

Jimdo/Wix代替と書いたが、もちろん自分サイトをMicroweberで作ってもいいが、

自前ホスティングして、JimdoWixのようなサービスを始めることもできる。

テンプレートをいくつか作っておいて、Stripeを仕込んでおけば、今日からあなたJimdo/Wixのような事業を始められるわけだ。

STUDIO/Webflow代替

Webstudio

JImdo/WixSTUDIO/Webflowは一緒くたに語られがちだが、明確な違いがある。

前者はプリディファインドなブロックGUI構成するのに対し、後者DOM要素ベースで構築していく。

まりよりHTML/CSSによる細かなデザインコントロールがしやすく、Webデザイナーが親しみやすい。

それのOSS版がWebstudio。まだアルファ版だが、フロントエンドはそれなりによくできているので、

バックエンドを自前で用意してStripeを仕込んでおけば、今日からあなたも(以下略

Facebook代替

friendica

Facebookなんか使わねーよ、っていう人も多いかもしれないが、

特定コミュニティの中でコミュニケーション取るには、FacebookUI機能は優れていると思う。

なので、サークルとか同窓会、あと自治会とかPTAなんかにいいんじゃないだろうか。

LAMPなので、レンサバでもいけると思う。

Netflix代替

Jellyfin

Netflix代替って、Amazon Primeとかじゃねーの、と思われるのかもしれないが、そうではなくて、

あなたNetflixみたいな商売したいならこれを使うといいよ、というのがJellyfin。

いや、そんな商売しないよ、と思うかもしれないが、

使いようによっては、おじいちゃんおばあちゃん向けの子動画配信サービスとして構築するとか、

Stripeと連携して、劇団バンドオリジナル配信サイトを構築するなんかも面白いと思う。

YouTube/Vimeo代替

PeerTube

今更誰もYouTubeVimeoの後追いをしようとはしないでしょうが

複数ユーザーから動画のアップを受け付けて、それを閲覧したい用途もあると思う。

例えば、軽音部で複数バンド練習風景を録画したのを定期的にアップしたりとか。

学習塾で、授業の録画を授業ごとにアップしていったりとか。

YouTube Live/Facebook Live/ニコ生/Twitch代替

Owncast

ZoomGoogle Meetのような双方向ではなく、一対多の一方通行配信

個人的には、企業のウェビナーツールとしての可能性を感じる。(Zoomのウェビナープランとか高いもん)

メールワイズ/Re:lation代替

FreeScout

つのメールドレス複数人運用したい時のツールメールワイズとRe:lationどちらも日本SaaS

FreeScoutはOSSだけど、海外製。一応日本語化もされてるっぽい。

ECサイト顧客問い合わせや、営業チームのプライマリ対応なんかに良いと思う。

Bubble代替

Budibase
AppSmith
ToolJet

Bubbleってなんぞ? という人のためにお伝えしておくと、ノーコードベースWebアプリ開発ツール

データエンティティ設計したら、自動的CRUDを作ってくれて、フォームを配置するというような感じ。

Bubbleはそれ系の老舗で、歴史が長い分ノウハウも溜まっており、連携できるサービスも多い。

ただ、ベンダーロックインされるし、季節的なキャンペーンとかでは、アプリ使用しない期間もサブスク費用がかかる。

Budibaseは、Bubbleの思想に一番近い感じ。凝ったUI必要なければ、ざっくりコレでなんでも作れちゃう

AppSmithも同じような感じだが、これはDBをあらかじめスキーマ定義しておかないといけないところが若干不便かな。

ToolJetはルーティングURL概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認ときたい。

他にもこの手のやつあったら、いろいろ教えて欲しい。単純に好きなので。

「こういう用途のやつ、ある?」みたいな質問も歓迎。

見つかったら追記します。

2022-11-26

anond:20221125160015

トレンドってか、キーワード検索して眺める分にはずっとログイン不要だったべな?

個別アカウントツイートを見てると、ちょっと経ったら「ログインしろ」が出て来てたんだけど

自分拡張機能のTamperMonkey使って自分スクリプトを書いて、ダイアログを消したった。

でも確かに、今見てる限りだと、このスクリプト無くてもダイアログ出なくなってる。。。

Quoraも同じく、DOMスタイルを調整してやれば普通に全部見える。

まあQuoraはほとんど見ないけど。

PinterestTumblrもいつか攻略しようかなと思ってるけど、思ってるだけ。

2022-08-15

Webはてブミュー機能作った

勝手に tampermonkey とかに突っ込んで使ってヨロ

スクリプト保守とかするつもりないから、保守とかするつもりのあるパワーの溢れた人が

これ参考とかにしてもっとかっちょよくしたのを greasy fork あたりに公開してくれ

そしたら俺もそれ使う

使い方:

ブラウザの開発環境を開いて、開発コンソールを開く

localStorage.hatebu_ng_word_list に非表示トリガーになる文字列を|区切り登録する。

localStorage.hatebu_ng_word_list = "池田信夫|フェミ|弱者男性|やまもといちろう"

実際のコード

大なり小なり(>)が実体参照で表示されるのはよくわからん。使う人で適宜コードを直してくれ。

// ==UserScript==
// @name         はてブの一覧NG記事非表示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       masuda
// @match        https://b.hatena.ne.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatena.ne.jp
// @grant        none
// ==/UserScript==

(function() {
	'use strict';

	if (!localStorage.hatebu_ng_word_list) {
		return;
	}
	console.log("はてブの一覧NG記事非表示", localStorage.hatebu_ng_word_list);

	/*
	 * 例:
	 * localStorage.hatebu_ng_word_list =
	 * "池田信夫|フェミ|弱者男性|やまもといちろう|togetter.com";
	*/
	let words = localStorage.hatebu_ng_word_list.split('|').map(w => new RegExp(w));

	function entryDelete(els) {
		els.forEach(el => {
			let hit = false;
			words.forEach(w => {
				hit = hit|| w.test(el.textContent);
			});
			if (hit) {
				el.remove();
			}
		});
	}

	// entrylist-header-main li 1つ目のアイテム
	entryDelete(document.querySelectorAll('.entrylist-header-main > li'));
	// 2つ目以降の li アイテム
	entryDelete(document.querySelectorAll('.entrylist-item > li'));
})();

文字正規表現として評価されて、ヒットした記事項目をページから削除する(DOMから要素を削除する)。

際限なくNG登録できるけど、沢山非表示するとつまらない一覧になる

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&&)は使える。

オブジェクトの分割代入はできない。

・importはできない。 <h3>o- *************************************/</h3>

/**************************************

関数 <h3>o- *************************************/</h3>

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow > 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &&

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&

SETTINGS.postSettings.replyPostTextCsvStartRow < 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) => new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index < posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

2022-07-09

anond:20220708095558

2022-06-30

Firefoxアドオン見積もりお願いしま

例えば堀江さんのような常にイライラしていて人生楽しくなさそうな人の発言記事になるのを見かけるだけで気が滅入るので

Web全体に対してTwitterミュー機能みたいなもの実装できないだろうか

指定ワードを含むコンテナの2階層上のDOMを削除とかで実現できそうな気がするんだがユーザースクリプトとかでいけるか?

2022-05-27

最近学んだこと。React編

・ストア

データを一時保存できるエリア

hooksの登場で簡単

ストア内に置いた変数更新される(1)と、ファイル上にある同じ変数に対しても更新がかかる(2)。設定ができるようになった。ちょう便利。

ちなみに(2)の仕組み(DOM の一部分だけ更新する)こそreactの真骨頂である

ステート

コンポーネント状態を表すとかいってるが体感でいうと

ストア内に置いた変数状態を表すことの方が多くね?(1)をステートが変更される。とか表現する。

・hooks

二年前ぐらい?に追加されたreactの便利機能

・useState

hooksの一つ。ストア内に変数を置くことができる。変数更新用の関数と一緒に作らなければならない。

2022-04-13

anond:20220413160429

session.cookieって書かれると「sessionのcookie」とは違うものを表そうとしているのではないかという可能性を否定できないんだよね

たとえば元増がdocument.cookieという例を挙げてるけど、これはブラウザ提供するDOMインタフェースには必ずdocumentというグローバルオブジェクトが含まれると仕様上決まっており、このオブジェクトは必ずプロパティcookieを持つ、という前提があるからこそこれだけで通じるわけで

同じルールでsession.cookieとか書かれると、「ん?sessionなんていうグローバルオブジェクトあるの?聞いたことないけど…」と混乱する

2022-04-12

「未経験から100話でキラキラWEBデザイナーを諦めるかけだしちゃん」を読んで

https://twitter.com/kakedashi_chan/status/1495050350629322752

私はエンジニアちゃん立場なのだが、同じような経験したことがあったので悲しいなあと思った。

以前ともだちと旅行した際にプログラミング話題になった。わたしは当時から自分ウェブアプリを開発したり、ネイティブアプリを開発したりするのが趣味だったので、プログラミングスクール (Zeroplusというところだった)に通っている友達の話を興味深く聞いた。

そこで教えていたのは、たとえばJSであればもう誰も使っていないgulpであったりとかscssであったりといった時代遅れ技術で、とにかく顧客を捕まえて案件をゲットしようという内容だった。

わたしネイティブアプリ開発者なのでウェブ門外漢だが、それでもウェブ開発という観点からはあまりに頓珍漢で時代遅れなことを教えていて面食らった。

わたしはともだちに「営業をやりたいのだったら良いスタートアップがあるから紹介するよ」といったが、ともだちはフリーランスエンジニアになりたいの一点張りだった。

ウェブアプリ開発をやりたいのだったら、無料で良いチュートリアルがあるよ。お金を払うんだったらudemyとかの動画にしなよ。」

HTMLJavaScript関係はわかっている?今はReactやVueといった仮想DOMでの開発が主流だよ」

HTTPサーバーというのが何を指しているのかわかっている?」

嫌味にならないように遠回しに「メガベンチャーに入れる」レベルの開発経験の積み方を話した。ともだちは残念なことにGoogleIndeedなどに入れるような地頭の良さはないので、アルゴリズムよりも開発経験を積むように勧めた。

フリーランスエンジニアになるにしたって、誰がまともな開発をできない人に頼むのだろう。少なくともわたしの知り合いに業界経験が全くなくて、フリーランスエンジニアとして活躍できている人は一人もいないと伝えた。

ココナラクラウドソーシングサイトで請け負う低単価の案件はいくらやっても、そもそも全く稼げないし、キャリアとして意味がないことも伝えた。

今ではWFHはどの会社でも当たり前だし、週4日勤務のような自由度の高い働き方がしたいのならマイクロソフトなんかがそういう取り組みをしていることも伝えた。

とにかく、エンジニアになると決めたのならちゃんと開発経験を積んで一般就職をいちど目指そうと伝えた。

1年後。

結論わたしの言ったことは全く伝わっていなかった。

ともだちはその場では「ありがとう教えてくれて!やってみるね!」と話していたが、その後Twitterでは「らくして稼ごうウェブ制作!」といった標語を抱えている詐欺師ツイート積極的RTし、初心者コミュニティ自己啓発いたことを1年間言い続けていた。

ともだちはその後事務員としてどこかの会社就職したらしいが、音信不通になってしまってなにもれんらくがとれない状態になった。

2022-04-07

れ: node.js呪い

https://d.potato4d.me/entry/20220405-nodejs/

話題になっているけど、本来人類必要なのはクロスプラットフォームな実行環境であってNodeじゃない。

TS流行ったのはJSがクソだから。BabelしなきゃいけないのもJSトランスパイルしなきゃいけないからであって、必要なのはJVMCLRのような言語実行環境

Reactが流行ったのはshadow domだけど、必要なのはDOMじゃなくてちゃんとした「アプリ」開発用のイベントモデルレイアウトマネージャ含むGUI環境

フロント界隈の流行廃りって本質的改善ってよりもほかの良い技術いかブラウザ/Electron等JSエンジンという限られた環境に持ち込んで幸せになるかがメインに見えるので地獄に見える。

アプリ」書くのになんでドキュメント記述用のHTMLに今ものっかってんだよと。

MavenやらGemsができて依存管理楽になったとか、RailsがでたときのようなCoCいねとか開発の考え方を変えるフレームワーク、 rspec/Cucumberがでてテスト最高とか、c10kも怖くない非同期I/Oとか、好きな言語が使えるJVM/CLRそもサーバーならrustでもgoでも好きなものが動くとかとか本来の開発を楽にするという意味ブレークスルーってあんまりみられない気がしている。なんでフロント界隈の新技術ってあんまりわくわくしない。

逆にちゃんとしたクロスプラットフォーム実行環境ブラウザしかないということなんだけど、ブラウザなかなか進化しないし RIAApple 様が切り捨てるからなぁ。

ということですべてはブラウザが悪い。JavaScript 以外がちゃんと動くクロスプラットフォームGUI環境必要。でもプリインでモバイルでも動いてOSから独立して協調して作られていて、Webという既存の大量の資源アクセスやすものは現時点で実質ブラウザ一択。つまりWASM に期待。次にHTMLであるべき文書はともかくSPAなんてもう「アプリ」なんだからHTML手書き文化もうやめてネイティブアプリ並みの GUI 作成環境復権しよう。

するとクライアントでも好きな言語が使える。そして同じ言語がいいとサーバサイドで Node.js を使う必要もなくなりへっぽこプログラマが Node のイベントモデル理解せずに使うこともなくなる。

そしてそれらができたときに Node というか JS/HTML呪いから解放され人類平和が訪れるのだ。君はその後も Node.js を使っても良いし使わなくてもいい。

ま、私はそんなもの作れないのでありものでがんばりますがね。

2022-04-02

ちるちるBLアワード2022と最近読んだBL。(ネタはバレる)

ちるちるBLアワードの結果が出たよ!

 ちるちるBLアワードとは、商業BL情報サイト「ちるちる」主催イベント。前年に発売されたBL作品のなかで、ちるちるのレビューページの得点が200点以上の作品からノミネートされる。そして1月にちるちるユーザー投票がなされて、4月に結果が発表される。


一部予想通りだった。

 推し作品ノミネートすらされなかったのでやさぐれしまい、私は投票を完遂できなかったのだけど。BESTコミック部門とBEST小説部門の結果は一部予想通りだった。

 BESTコミック部門第1位は『夜明けの唄』(ユノイチカ)。これは納得。私はあまりきじゃないんだけど、皆好きだよねーこれ。あまりにも爆発的に流行っていたので、これしか1位はないだろうなと思った。

 2位は知らんからわからん。3位の『神様なんか信じない僕らのエデン』(一ノ瀬ゆま)は読んだけどかなり面白かった。オメガバース作品なので、設定だけで嫌がられたり過剰に求められたりだと思うが、最近オメガバースも下火なので、逆境を潜り抜けて3位に輝いた感ある。

 そしてBEST小説部門。これは私の予想は「魔道祖師絶対に1位を取れない」だったんだけど、大当たり。「このBLヤバい2022」では2位と大差を着けて圧倒的1位に輝いたという『魔道祖師』(墨香銅臭)が何故ちるちるBLアワードでは1位を取れないと思ったのか? それは、このBLヤバいの方は一般の読者も投票するし有識者意見も入るらしいんだけど、ちるちるBLアワード場合はちるちるユーザーけが投票する(つまり極めつきに商業BLにのめっている人間ばかりが投票する)から。それと、ネットで『魔道祖師』の情報を漁ったところ、「買ったはいいが積んでいる」という人がかなり多かったので、「魔道祖師の人気=原作小説の人気」ではないと思った。

 商業BL小説の読者層というのはかなり独特な感性をお持ちで、その他ジャンル小説を読み漁る、本の虫タイプ読書家の常識では計り知れないところがある。だから、ただの小説として、もっと狭い意味ライトノベルとして、圧倒的な高クオリティの『魔道祖師』はだからといってマジもんの商業BL小説腐女子には受け入れられはしないんじゃないかなと。単純に売上だけはすごくいいんだろうけどね。しかしそれでも2位だったのはかなりの健闘ぶりだ。たぶんこれ、ドラマアニメの人気だと思うけど。実は買ったものの積んでいるけど、アニメドラマ好きだし他の作品は読んでないから取り敢えず投票したって人(商業BL小説読まない民)、多そう。

 予想外だったのは、BEST小説部門1位を取ったのが『Interlude 美しい彼番外編集』だったこと。私これ持ってるしすごく面白くて好きだけどマ!? 番外編だぜ!?!?!? うわぁー、さすがに商業BL小説史上に残るレベルの人気シリーズ。番外編集の半分は購入特典などの再録本なので、コアなファンは買って得するようなもんじゃないというのに、すごい。

 作者の凪良ゆう先生の書く文章はとても平易で分かりやすい。一方、2位だった『魔道祖師』は「漢字が多くて読めない~」(振仮名ふってあるやんけ)とか、「古代中国文化なんかわからない~」(脚注あるやんけ)とか言われて敬遠されまくっていた。分かりやすいって大事だなと思いつつ、薄々思っていたけど商業BL小説ばかり読む人ってやっぱり【自主規制】いんだなと思った。

 BESTシリーズ部門1位は『囀ずる鳥ははばたかない』(ヨネダコウ)まあねまあね、皆好きだよねー(私は読む気もしないけど)。

 『オールドファッションカップケーキ with カプチーノ』(佐岸左岸)は去年のBLアワードのBESTコミック部門ぶっちぎりの第1位作品の続編なのだが、やはり1位は取れなかった。予想通りである。「名言製造機になった」「野末さんがあざとすぎる」など、ボロカス言われてたからなあ。私は好きだけど。人気があるからといって続編を作ったらコケしまったパターンかもしれない。でも本作も漫画としてのクオリティの高さ半端ないので、むしろ商業BLの民よりも薄く広く漫画を読む人におすすめだ。


その他雑感。

 あれっ、ノミネート作品のなかでは私の最推しだった『秋山くん』(のばらあいこ)がどこにもランクインしていない。でもまあしょうがいか。ただでさえ複数のもの腐女子にはあまり支持されないうえに、『秋山くん』の場合は完結までに12もの歳月を要したのだ。その間に腐界の雰囲気も変わったらしく、あの衝撃の第1話がまず受け入れられないといって読むのを止めてしまう人が多いようなので。でも最終的には大団円で終わったので、未読だが興味あるけど試し読みしたら怖かったって人は安心して読むがいいさ! 秋山くんにはBEST受け部門ランクインして欲しかったなあ(投票した)。攻めの柴くんはあのBEST攻め部門錚々たる面子の中にとりつく島はないのはわかる。(ひどい)

 やっぱりスクカー底辺男は攻め様ランキングには食い込めないのかなと思いきや! BEST攻め部門第1位を『美しい彼』の平良(ひら)が取っていて笑った。さすが平良! でもこの人の底辺ぶりはあくまでも自己評価しかない。無自覚ハイスペックニュータイプ亭主関白俺様めだから、平良は。

 皆ハイスペの攻め様が好きだなあ。私はヘタレ攻めがすきだよ。


 アワードについてはこれでおしまい。次は最近読んだBL。(ネタバレあり)


神様なんか信じない僕らのエデン (下)』(一ノ瀬ゆま




あらすじ

 2018年2月のある日、体育の授業中に突然ヒートを起こした西央(にしお)につられて発情してしまった喬(たかい)。二人は体育館倉庫に転がり込み交わったが、西央の体調は改善せず、倉庫から出られなくなってしまう。喬は一人で倉庫を出て食料や生活用品をかき集め、西央の籠城生活環境を整え、同時に自分達の体に何が起きたのかを考察する。

 籠城三日目、どうやら西央のヒートの峠が過ぎたらしい。あと数日で西央を家に帰せるという見通しをたてた喬だったが、それに一抹の淋しさを感じた時、彼の本能があらぶり始め……。

増田感想

 オメガバース作品で、『旧約聖書』の1節からスタートする本作。人類史上初めてのαとΩの誕生という大事件が、高校体育館倉庫という狭い密室でひっそりと起きていたという、壮大にしてミニマムお話

 そもそもオメガバースとはなんぞや? というと、ググった方が早いんだがざっくりいうと欧米発祥特殊設定。ヒトに男女の性別のほかにバース性」という性別がある。すなわち、支配者の性α、凡人のβ、産む性(隷属の性)のΩ。それらのバース性のいずれかが男女それぞれについてくる。男性α、女性α、男性β、女性β、男性Ω、女性Ωの六つの性別があるということ。

 本作は人類史上初のαとΩの物語なので、主人公の喬(α)は自分とΩの西央が一体何であるのかを知らない。喬はせっせと文献を調べ考察していくうちに、自分達の生態が狼の生態に近いことに気づく。そして自分と西央が異様に盛る様に「発情ヒート)」という名をつける。

 下巻はもっぱら喬がαとしての本能のダークな面をなんとか抑えつけようと奮闘しつつ、αらしい一途さで西央を守ろうとする話。そして喬と西央は互いに相手とは本能抜きではどういう関係なのか? と疑問を懐く。

 商業BLではあまり見られない、深いところまでつっこんでるストーリーオメガバース設定のBLというのは社会問題ジェンダー問題に切り込むものが他にもいくらかある。『リバース』( 麻生ミツ晃)、『シマちゃん家の番事情』(三日ミタ)、『嘘つきな愛を買う』(ポケラふじ子)とか。でも、数年前に二次創作世界で初めてオメガバース設定を見た時には、社会問題提起系というよりは、SMっぽいというか虐待描写メインの特殊性癖っていう印象だった。今となってはBLポリコレの影響を最も受けていそうなジャンルのような?

 『僕エデ』はジェンダー問題以上に生命不思議ウエイトが置かれている感じで、昨今流行り? の反出生主義に疲れたハートには心地よかった。終盤、自身と西央が新しいタイプ進化した人類だと悟った喬が、「自分達が多数派になる日が来るまで潜伏する(誰にも内緒にする)」と決断したことろは、ベタでありつつ(漫画登場人物って変な生き物を発見すると、政府研究機関に取られるのを恐れてとりあえず隠そうとするよね。)老子っぽくてよかった。

 『シマちゃん家の番事情』を読んだ時も思ったけど、今っぽいニュータイプオメガバースっていいなと思いつつ、しかし以前のもはや男女カプでは容易に描けなくなった禁忌ネタの駆け込み寺的なジャンル浄化されてしまったようで、それはそれでどうなんだという気がする。でも最近はまたしても欧米渡来の因業設定「Dom/subユニバース」が定着したので、アングラエログロの行着く先はそこかな? いずれそれも浄化されそうだが。

※「Dom/subユニバース」とは……ググった方が早いがざっくり説明すると、ヒトの性別に男女の他にDomsubという性があるという設定。Dom支配者でsubは被支配であるDomsubと二人で決めたワードsubが言うまでsubを虐めることが出来る。要はSMだな。


86万円の初恋』(ロッキー

 真理(まさみち)は美貌の男・佐藤と同居中。というのは、ある夕方カフェで真理がうっかり通りすがり佐藤コートコーヒーをぶちまけてしまたから。コートのお値段、なんと86万円。怒った佐藤86万円ぶん真理の家に居座ってやると宣言。以来、奇妙な同居生活が始まった。

 佐藤の言うことを何でも受け入れてしまう真理。「マリちゃん」呼びから始まって、ただいまのキスやらなんやら、佐藤の無茶ぶりは次第にエスカレートしていき……。

増田感想

 あんまりレビューが良くないが絵が物凄く綺麗なので、これは絵以外に良いところ無し系の漫画なのかとビビりながらも、試し読みしてみて冒頭一ページに惹かれたので購入。思いの外よかった。

 美貌の変人佐藤常識陰キャマリが振り回される系かと思いきや、マリが愛すべき変な生き物って感じで、何が起きても動じないマリ佐藤が戸惑うという話だった。

 途中で佐藤元カノの登場。すごく重要人物という訳でもなくカッコいい姐御でもなく身内でもない女がさらっと登場するのは、BL読者にはあまり喜ばれないところ。だが佐藤元カノの会話の様子からもしかして佐藤って実は心から他人を好きになったことがないんじゃない?(だから別れた相手と屈託なく喋れるのでは)という疑念がうっすらと湧いてくる。もしかしてこれはタイトル伏線回収なのではないだろうか。つまり86万円がきっかけで初恋をしたのは陰キャマリだけでなく美貌のコミュ佐藤もまたそうなのだという。

 マリの歳上すぎる友人の件以外、派手な事件は起こらない話だけれど、心情的な揺さぶりやどんでん返しがあり、退屈しない。が、例えばジャンプ漫画みたいにハッキリと事件事故が起きて悲喜劇にならなければ漫画とは認めないような人には、向いていないだろうな、と思う。

 表紙がとても綺麗で、中身の絵もとても綺麗。短文モノローグがしばしば挟まるのだが、それらが独特のリズム感を生んでる気がする。

 レーベル的にエロがすごく多いのかと思ったら、わりと落ち着きのある感じのエロ配分(オカズ系というよりは人類の一習性レベル)だった。


今日はこれまで。

ログイン ユーザー登録
ようこそ ゲスト さん