はてなキーワード: Domとは
時間を守る事には異常に固執する癖にイチャモンで電凸をしちゃいけないという常識は守れないのか・・・(呆れ)
ネットでたまに一行とか一つのコメントですら前半と後半で矛盾した事を言ってる奴がいるけど
そういう奴らの中身はこういう奴なんだろうなって
もうね、人として考えられんよ
マジでこういう権威に楯突く奴に対して異常な攻撃性発揮する奴って何なの
水俣病団体は弁護士にでも相談してわけわからん嫌がらせ電話掛けてきたアホの名前出して良いレベル
水俣病被害者の発言遮断問題に関し、伊藤信太郎環境相との懇談に出席した被害者団体などに「(あらかじめ設定された)3分の持ち時間を守らない方が悪い」などと抗議する電話が数件寄せられたことが10日、各団体への取材で分かった。
熊本県水俣市で1日に行われた懇談に参加した団体によると、伊藤氏が再び同市を訪れ謝罪した8日夜、東京都の男性を名乗る人物から「3分を守らないあなたたちが悪いのに被害者ぶって抗議するのはおかしい」と非難する電話があった。
スパム対策か何か知らんが、天◯門とか中国人に対する差別的な発言プロフに書き込んでおきながら、中国人の絵描きフォローしてる人、如何にもSNS中毒って感じで胸糞。
恥を知ってくれ。
2024-01-03 21:35:04
実際に起こって多くの死傷者を出したであろう悲劇的な事件をさ、スパム避けの魔除けとか言って揶揄する目的でアカウント名やプロフに書く人、色んなモノを失ってる事に気づいた方が良いと思う。
「たかがスパム」に強い不快感を示して、モラルと知性に欠けた言動する人、多すぎませんか?
普段知識人気取ったり、正論めいた発言したりしてる人がこういう「遊び」にキャッキャしてるの見ると、乾いた笑いが出ると同時に心が冷える。
何て幼稚なんだろう、この人達は。
そこまでその国が嫌いなのに、その国の人が描いたイラストにいいねしてたり、その国の人達が作ったゲームに夢中で金と時間を溶かしてたりする。
恥ずかしくないんかな、色々と。
2024-01-06 23:55:13
ダブスタについては本人の中で何らかの言い訳や屁理屈を用意して正当化してるのかもしれないけどさ、実際その人達がやってる事って「ヘイトクライムで特定の国・人種を攻撃しておきながら、自分はその国の人達が用意した娯楽で楽しんでる」でしかない。
2024-01-06 23:55:13
まぁ、日本に住んでる以上、食文化や日常生活を送る上でその国の恩恵に全く触れない事なんて限りなく不可能に近いだろうし、そこまで徹底しろなんて言わないけどさ。
その国を殴るなら「嫌いな国の世話になんてなるか!」くらいは言って欲しいし実行して欲しいよ、俺としては。
でないと、ダサすぎる。
2024-01-06 23:55:14
ゲームや絵なんて人間の生命活動に大きな影響も与えないんだからさぁ、我慢する事くらい造作もないだろ?
最悪裏でやっててもその“好き”をネットに出力しなければバレる事もないし、何なら別垢でやれば良いだけだというのに何で同じ垢で出力しちゃうかなぁ。
2024-01-06 23:55:14
色々言ったけど俺が何でこんなに愚痴ってるかと言うとこういう人間が自分の愛好してるコンテンツのファンに居たからなんですよね。
なのにプロフにそのワードとコンテンツ名を並べたり固定ツイでそのコンテンツの二次創作を貼る。
アホか?
2024-01-06 23:55:15
何が竜娘が好きだ。
何が🦉の雛だ。
恥を知れ。
オマエラのくだらない遊びにコンテンツを巻き込むな。
原作者様の顔に泥塗るな。
そういう遊びは、別垢作って他所でやれ。
「東京24区」というゲームで、あらすじをみると「政界BL」とあり、何やら敷居が高そうで一瞬指が止まってしまった。同名のアニメがあるが、それとは無関係なので気をつけてほしい。
友人から勧められたのと、年末年始にSwitchのDLソフトの半額セールをやってたのとで買った。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版では、三条総理と大延の絆を見た其扇と蓼丸は今後の未来に重要な選択を迫られることになる。個人的には登場人物たちの未来を自由に思い描けるPC版Switch版共通のエンディングが好きだった。
◇◇
ストーリーが本当に良く出来ていて面白かった。私なら、タイトルやキービジュアルを見ても「政界BL」という言葉に敷居の高さを感じて躊躇していたと思う。面白かったと勧めてもらって、半信半疑でプレイした結果これだけのめり込むことが出来て、この作品と出会えて本当に良かったと思えた。友人に感謝しかない。
いやこれ凄いな
未履修からのロースクール入学で司法試験1位合格って相当優秀だろうに(しかも社会人経験もばっちり有りなので勉強しか出来ないガリ勉って訳でもない)
それでも裁判官検察、大手どころか中堅の法律事務所も全部落とされるのか…
最近は社会人からの予備試験ルートの司法試験合格も盛んに宣伝されているけれど
実際に受かったとしても年齢が高ければ門前払いだって事がよーーく分かった。
そりゃあ戸籍を偽造してでも若く偽りたいと思う人が出てくるのも無理もない。
だってどれだけ苦労して実績を上げるよりも、戸籍の生年月日を若返らせる方が有効なんだから。
『ITコンサルから転身、32歳入学で司法試験1位合格 ロースクール1期生・伊藤弁護士が語る「キャリアの多様性」』
「裁判所や検察庁、大手法律事務所は、若い合格者を優遇して採用しようとします。自分も司法試験後に大手・中堅法律事務所に応募しましたが、ことごとく落とされましたから(笑)。学生がそこで活躍したいと思ったら『若いうちに合格するしかない』となってしまうのも無理ありません」
シェアウェア(という表現はおいておいてのやつ。https://anond.hatelabo.jp/20230124045812)の記事が面白かったので、自分の得意分野の領域でいろいろ紹介します。
基本的に、SaaSのサービスは便利だけど、あれもこれもと契約していったらサブスク破産するので、
もともとownCloudっていうDropbox代替があったんだけど、そこから分派して今も機能開発が続いている。
興味深いのはLAMP構成なので、VPSや自宅サーバーじゃなくても、レンサバで動くのがいいよね。
データ保存領域はオブジェクトストレージ(S3互換)も利用できるので、例えばWasabiなんかと契約してお安く済ませてしまうのも全然アリかと。
最近はカンバンシステムって、単体で使うんじゃなくていろんなアプリの中で使われる印象なので、今更Trelloだけ使いたい、なんてニーズはないかもだけど、
そこまで複雑でなく小規模なプロジェクトとかだと、意外とTrelloだけでいいよね、みたいなこともあるかな。
そういう時は、これを使うといいかも。
ちょっとUIの雰囲気が違うだけで、まんまSlackです。絵文字の追加もできるし、APIもあるし。人によって好き嫌い分かれるスレッド機能も、まあ、あのスレッド機能のまま。
n8nと書いてnodemationと読ませるらしい。初見殺しすぎんだろ。
ZapierやIFTTT、無料枠あるけど、あれもこれもやり出すとすぐ無料枠埋まっちゃうので、これ結構いいと思うんだけどな。
kintone使ってる会社増えてると思うんだけど、まだまだ1ユーザー1500円ってのは高いので、零細企業は導入し辛いと思う。
で、それの代替になるのがExment。UIがkintoneとは少し違うので代替と言い切れないかもしれないが、
やれることはkintoneのソレと全く同じなので、用途代替はできる。
開発も日本企業なので、UIも日本語化されている。LAMP構成なので、レンサバでも動くよ!
そもそもAirtableって何やねんって人もいるかもしれないけど、kintoneとGoogleスプレッドシートをいいとこ取りして、Trelloとガントチャートを足した感じ。
これもまあまあいい感じでZoom再現してます。Zoomの方が新機能の追加早いけど、Jitsiも頑張って追いついている感じです。
ただ、やる内容が複数人でのリアルタイム動画配信なので、サーバースペック・回線スペックはまあまあ必要なので要注意。
こちらは使ったことないんだけど、よりオンライン授業向けらしい。
最近よく見かけるようになった、オンラインミーティングとかの予定をブッキングさせるSaaS。
あれのはしりがCalendlyで、日本でもいくつかそれのSaaSができてますね。
あれらも無料枠だと1カレンダーだけしかできなかったりするんだけど、これなら好きなだけブッキングさせられます。
ECサイトとか、Webマーケティングを重視してるサイトによくある、画面右下に吹き出しアイコンがあって、チャットウインドウがぴょこっと出てくるやつ。
日本ではWeb接客とか言われてるけど、あれの代表的なSaaSがIntercom。Zendeskは、どちらかというと内部ツール向きかな。
これのOSS版がChatwootとPapercups。自社サイトにWeb接客入れたいけど、費用抑えたい、って時にどうぞ。
この手のツールがないと仕事にならないという人も多いと思います。
これまでだとRedmineがそれのOSS版的立ち位置でしたが、さすがにイマドキあのUIはないなぁ、と。
OpenProjectは、Microsoft Projectの代替をイメージしてるみたいですが、
ガントチャートにカンバンがデフォルトで使えるので、BacklogやAsanaの代替にはちょうど良いでしょう。
ただ、そんな高度なことしてるわけではないのに、サーバーの要求スペックはちょっと高めなのでご注意を。
UA廃止でGA離れが始まってるとも聞きますが、疎開先として有名。
PHPで動くので、PHPやWordPressでできたサイトに一緒に入れちゃってもいいと思う。
HeadlessCMSは、データ表示を持たず、フロントエンドへAPIを通じてデータを渡すタイプのCMSのこと。
このジャンルでは、SaaSだとContentfulが有名だけど、OSSでもいろいろある。
Node.js製。歴史があるので、結構いろんなことができる。
WordPressのGutenbergエディターを取り込んだプラグインなんかもある。
User認証も持ってるので、CGM的なサイトを作ろうと思ったらできなくもない。
これもNode.js製。利用できるDBが幅広く、既存のデータベースも活用できる。
なので、既にPostgresSQLとかでデータを持ってるんだけど、
非エンジニアにもデータを触らせるためのフロントエンドが欲しい、ってニーズに良いかも。
PHP製。SQLiteとMongoDBで利用可能。MySQL/PostgreSQL使えないのがちょっと残念。
近年、本腰入れて自社ECサイトをやろうと思うと必ず選択肢に上がるShopify。
インテグレートパートナー向けのエコシステムも充実してるので、取り組み始めるエンジニアやシステム会社も多い。
ヘッドレスコマースや越境ECには向いているものの、これをセルフホストしたい、というニーズに応えたのがmedusa.js。
ざっと見てみただけだけど、モダンな構成で、今時のフロントとバックエンドを分けた構成でやりたい、というのには向いている。
プラグインにmedusa-marketplace.jsというのもあり、Amazon的なマーケットプレイスも実現可能。
昨年、Adobeに買収され、デザイナーたちを驚愕させたFigma。
先日はAdobe XDが終了のお知らせとなり、UIデザイナーたちの不安は募るばかり。
そんな提供企業に振り回されたくないなら、このPenpotでUIデザインしよう。
Figmaほど機能実装はされていないが、まあまあ一通りのことはできる。
Figma代が嵩むとお嘆きの制作会社なんかは、一考の余地あるんじゃなかろうか。
企業によっては、コンタクトフォームをたくさん作りたいという会社もある。
人材採用のフォームを職種別に細かく分けたい(しかも頻繁に募集職種が変わるとか)
Google Formで大体解決しそうだけど、それをGoogleに頼りたくないならこちら。
まあまあ機能豊富なので、人によってはGoogleFormよりもこちらを好むかも。
DockerベースのWebメールUI。送受信に必要なものを、丸っとDockerで用意してくれているので便利。
HubSpotは、いわゆるMarketing AutomationとCRMを一体にしたツール。無料枠もあるが、かなり限定されている。
MauticはMarketing Automationよりの機能が多く、ユーザーのサイト上での回遊をビジュアル化してくれたりする。
SuiteCRMはザ・CRMという感じ。SalesForceをデフォルトで使う感じに近い。
ツールが分かれてしまうのは辛いところだけど、それぞれにAPIがあるので、うまく繋げられると強力なツールになってくれるはず。
Webサービス作ってると、メールの通知や一斉配信などがあると思う。
通常これらはSendGridや、AWS SESなどで処理すると思うが、これらにもOSS代替がある。
PostalはDockerでメール周りのもの全部用意してくれているので、かなり楽。
WordPressをモダンにしたような感じで、EC機能もデフォルトでついてる。マルチサイトも標準。
Jimdo/Wix代替と書いたが、もちろん自分のサイトをMicroweberで作ってもいいが、
自前ホスティングして、JimdoやWixのようなサービスを始めることもできる。
テンプレートをいくつか作っておいて、Stripeを仕込んでおけば、今日からあなたもJimdo/Wixのような事業を始められるわけだ。
JImdo/WixとSTUDIO/Webflowは一緒くたに語られがちだが、明確な違いがある。
前者はプリディファインドなブロックをGUIで構成するのに対し、後者はDOM要素ベースで構築していく。
つまりよりHTML/CSSによる細かなデザインコントロールがしやすく、Webデザイナーが親しみやすい。
それのOSS版がWebstudio。まだアルファ版だが、フロントエンドはそれなりによくできているので、
バックエンドを自前で用意してStripeを仕込んでおけば、今日からあなたも(以下略
Facebookなんか使わねーよ、っていう人も多いかもしれないが、
特定のコミュニティの中でコミュニケーション取るには、FacebookのUIと機能は優れていると思う。
なので、サークルとか同窓会、あと自治会とかPTAなんかにもいいんじゃないだろうか。
Netflixの代替って、Amazon Primeとかじゃねーの、と思われるのかもしれないが、そうではなくて、
あなたがNetflixみたいな商売したいならこれを使うといいよ、というのがJellyfin。
いや、そんな商売しないよ、と思うかもしれないが、
使いようによっては、おじいちゃんおばあちゃん向けの子供動画配信サービスとして構築するとか、
Stripeと連携して、劇団やバンドのオリジナルの配信サイトを構築するなんかも面白いと思う。
今更誰もYouTubeやVimeoの後追いをしようとはしないでしょうが、
複数のユーザーから動画のアップを受け付けて、それを閲覧したい用途もあると思う。
例えば、軽音部で複数のバンドが練習風景を録画したのを定期的にアップしたりとか。
学習塾で、授業の録画を授業ごとにアップしていったりとか。
ZoomやGoogle Meetのような双方向ではなく、一対多の一方通行配信。
個人的には、企業のウェビナーツールとしての可能性を感じる。(Zoomのウェビナープランとか高いもん)
1つのメールアドレスを複数人で運用したい時のツールがメールワイズとRe:lationどちらも日本のSaaS。
FreeScoutはOSSだけど、海外製。一応日本語化もされてるっぽい。
ECサイトの顧客問い合わせや、営業チームのプライマリー対応なんかに良いと思う。
Bubbleってなんぞ? という人のためにお伝えしておくと、ノーコードベースのWebアプリ開発ツール。
データエンティティを設計したら、自動的にCRUDを作ってくれて、フォームを配置するというような感じ。
Bubbleはそれ系の老舗で、歴史が長い分ノウハウも溜まっており、連携できるサービスも多い。
ただ、ベンダーロックインされるし、季節的なキャンペーンとかでは、アプリを使用しない期間もサブスク費用がかかる。
Budibaseは、Bubbleの思想に一番近い感じ。凝ったUIが必要なければ、ざっくりコレでなんでも作れちゃう。
AppSmithも同じような感じだが、これはDBをあらかじめスキーマ定義しておかないといけないところが若干不便かな。
ToolJetはルーティングURLの概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認しときたい。
他にもこの手のやつあったら、いろいろ教えて欲しい。単純に好きなので。
勝手に 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')); })();
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
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>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
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) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_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 メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
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();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
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を受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
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');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document
session.cookieって書かれると「sessionのcookie」とは違うものを表そうとしているのではないかという可能性を否定できないんだよね
たとえば元増がdocument.cookieという例を挙げてるけど、これはブラウザが提供するDOMインタフェースには必ずdocumentというグローバルオブジェクトが含まれると仕様上決まっており、このオブジェクトは必ずプロパティcookieを持つ、という前提があるからこそこれだけで通じるわけで
同じルールでsession.cookieとか書かれると、「ん?sessionなんていうグローバルオブジェクトあるの?聞いたことないけど…」と混乱する