はてなキーワード: メソッドとは
プログラミングスクールは良くないって話が多いので、人それぞれだよねっていうのと、何もやらないよりは何かしらあるんじゃないかなっていうお話です。
フィクションのつもりで聞いてください。
私は地方で育ち、地元の女子中・女子高・駅弁大学を卒業し、地元のとあるテーマパークに就職しました。
比較的なんとなく生きてきたので、仕事って大変そうだからせめて面白そうな職場を選ぼう、くらいの気持ちでしたがすぐに辞めたくなりました。
toC接客、屋外での勤務、立ちっぱなし、友達と休みが合わない、覚える事が多い、職場が僻地、ダンサーチームの揉め事の仲裁、契約社員組みからの嫉妬、大学生組の惚れた腫れた、田舎特有の異様なゲストの図々しさ・馴れ馴れしさ、どれも好きじゃないやつでした。
まあゲストにイラつく事があっても、それはしょうがないと思ってます。仕事だから。
でもスタッフも、とにかく感情で生きてる人間が多すぎます。私よりずっと大人なのに。
華やかな表舞台とは裏腹に仕事はそこそこハードで、給料の水準も高いとは言えない環境のため、人の出入りが激しく、トラブルを起こしたり、恨み辛みを吐きながら辞めて行く人が多いのもメンタルにきました。
最初に威勢のいい人ほどすぐ腹を立てて辞めていくので、個人的に警戒して距離をとるようにしていました。
理想と現実のギャップが大きいからなのか、彼らの自己評価が高いからなのかわかりませんが、もしかしたら私のように、ドライに仕事はしんどいものだと思ってる方が、色々受け入れられるのかもしれません。
そんなこんなで2年ほど勤めましたが、最後まで職場にも業務にも慣れる事もなく、花形着ぐるみのポジションが空いた事によるダンサーチームの派閥争いの激化に伴って私の神経も擦り切れ、半ば衝動的に仕事を辞めてしまったのでした。
実家に住んでいたので、しばらくはニートしながら次に何をするか考える予定でした。
しかしそんな折、東京に住んでいる祖母が怪我をしてしまい、介護を要する状態になってしまいました。
私は昔から祖母が大好きだったので、喜んで同居と介護の役目を担うことにしました。
祖母とは小学校低学年くらいまで同居していた期間があり、その頃から私の唯一の理解者でした。
私が真面目で、冷めていて、興味を惹かれると他のことが目に入らなくなって、
自分のペースで物事を進めたくて、少し融通が効かずに周りの子達と馴染めなかった頃、
その事に両親はお手上げで「みんなと同じように」「普通に」「お願いだから」としか言わなかった頃、
「あなたはちょっとだけ人より心が大人なんだよ。それでいいんだよ。賢くて真面目なあなたが好きだよ。
でももし疲れたら、周りの子たちと同じくらいには、いい加減で、だらけて、失敗してもいいんだよ」
と、声をかけ、私が「もう大丈夫」と言うまで何十分でも抱っこしてくれた祖母。
祖母のその言葉と、帰ったら祖母が家にいるという安心感で、私は少しずつクラスメイト達と打ち解け、誰かに心を許したり、自分が失敗することも他の人が失敗することも許せるようになっていったのでした。
東京には別の親戚もいたのですが、ペーパードライバーで頻繁に祖母を病院に連れて行くのが難しかったり、仕事の都合だったりで他に候補者もいなかったので、私の立候補には関係者みな渡りに船という感じでした。
母に「おばあちゃんが好きってだけではできないよ。よくわかってないんじゃない?」とも言われたけど、私は祖母に関する事ならちゃんと理解したかったし、自分の想像が及んでいない事があるなら、それも知りたかった。
介護はまあ大変だったのですが、意外と祖母が元気で、怪我の経過も芳しく、家の中の生活においては一人で出来る事が多かったのもあり、私は徐々に暇になっていったのでした。
美術館や博物館が昔から好きで、最初は狂ったように行っていたのですが、お金もそんなにないし、周りに友達もいないので、やや時間を持て余すようになってしまいました。
そこで、一念発起して、噂に名高いエンジニアとやらになろうと思いたち、プログラミングスクールを探し始めました。
テーマパークで働いていた私からしたら、エアコンの効いた部屋で座って作業できて、toC接客をしなくてよくて、給料が高い(らしい)なんて夢の職業だと思っていたのです。
東京での普段は淡白ながら、楽しみ方の選択肢がとても多い生活も肌に合っていて、祖母の介護を終えても田舎には帰りたくなかったので、こっちで就職して帰らなくていい理由を作りたかった、というのもありました。
色々調べて、とあるオンラインがメインのプログラミングスクールに決めました。
祖母の家が都内とはいえ西の方で、交通費も出ないのに電車で都心に通うのは厳しかったのと、祖母の用事が最優先なので時間の都合がつけやすいようにと、グループでやる課題とかがきっと向いてないだろうなと思ったからです。
(今になって思えば、gitの実践的な使い方に慣れられるし、どうせ働き始めたらチームでやるんだから、グループ作業は経験しておくのをおすすめしたい)
ニート期間が短かかったので貯金があまり減っておらずなんとか料金を捻出できたのですが、貯金はなくなりました。
プログラミングスクールでは、まず卒業後どういう職種や働き方を希望するかを聞かれ、それにはどんなスキルが必要か説明を受けながらカリキュラムを決めていきました。
授業は、エンジニア経験のある人とskypeを使ってマンツーマンで、テキストを進めたり、課題をチェックしてもらったり、デバッグを手伝ってもらったり、わからないところを教えてもらったり、実際の開発現場の話を聞いたりしました。
私はなにせ女子校育ちだし、喪女だしで、女性の先生が良かったのですが、女性の先生は数が少ない上にみなさん大変な人気でなかなか予約が入れられませんでした。
平日の日中に授業を受けられるので、働きながらの人よりはずいぶん有利な立場にはあったはずなのですが、できれば同じ先生にずっと見てもらいたいと考えると、なかなか厳しい状況でした。
ですが、一人だけ比較的予定が空いている先生がいました。そう、後の彼女である。
彼女の予約が空いている理由は1回授業を受けたらすぐにわかりました。
早口だし、自分の言いたい事は最後まで言わないと気が済まないし、アイスブレイク下手くそだし、全然笑わないし、癖なのか10分に1回メガネを拭いてるし、説明が長いし、1回説明した事は完璧に理解するはずだと思ってるし、なんか顔が怒ってるし、なんか厳しくて答えをなかなか教えてくれないし。
顔は結構美人なのに、性格きつい人だなあというのが無遠慮な私がもった第一印象でした。
まあでも予約を続けてとれる女性の先生は他にいないし、私も生来かなり真面目な性分だし、授業が終わった時のやけに油断してホッとしてる顔がなんかちょっと可愛いし、実力をつけるには問題ないだろうという事で継続して予約を入れる事にしました。
しばらく授業を受ける事で、だんだんと彼女の態度は軟化していきました。
プログラムも楽しかったし、彼女については保護猫をだんだんと慣らしていくような面白さもありました。
授業は丁寧だし、彼女はフレームワークの細かい内部の挙動や、メソッドのオプションなんかにもかなり詳しく、それらの点では優秀な先生だったので、私の心からはいつしか懸念も不満も消えていました。
そんなある日、パソコンを買い換えたいと思っている話をしたら、意外にも彼女が付き合ってくれる事になりました。
(当時、なんか可愛いという理由で買った、やたらキーピッチのあるVAIOのノートパソコンで作業していたのですが、色々目が開いてきてMacに乗り換える事にしました)
買い物当日、MacとWindowsの違いから丁寧に教えてくれた彼女の私服はダサかったのですが、お礼も兼ねて新宿で居酒屋に行く事になりました。
主に、Windowsで使ってたツール類のMacでの代替品を教えてもらうつもりだったのですが、いつのまにか梅酒2杯で饒舌になった彼女の身の上話を色々と聞かせてもらっていました。
いい提案ができるように新しい技術を家でもたくさん勉強したこと、
いいシステムを作る為にプロジェクトの良くない点はきちんと指摘したこと、
それらを煙たがられて注意を受けたこと、
「女のくせに」って言われたこと、
自分が席を外したタイミングで夕会が行われるようになったこと、
「プロパー+αの人だけの飲み会」にチームの中で自分だけ呼ばれてなかったこと、
社内で待機している時、営業に「女でこんなに売れないのお前だけ」って言われたこと、
新卒もどんどん現場に出ていくのに自分は次のプロジェクトが決まらなかったこと、
「とにかく人が足りないから大歓迎です」って言われた案件でもチームの中で1番最初に退場になったこと、
業界が向いてないのは身に染みてわかったけどプログラミングが好きで今の職についたこと、
授業のリピート率の低さに会社からいつも小言をもらっていること、
SESが辛くて辞めたのに、多くの人が卒業後SESに行くプログラミングスクールの先生をしているということ、
自分のやってる事が人の為になっているのか信じきれていないこと、
SES以外の社内SEとかで転職を考えたけどどこにも受からないこと、
昔から人付き合いが苦手なこと、
親戚のおじさんに一人すごく嫌な人がいること、
成績は悪いが愛嬌のある弟ばかり親が可愛がること、
「いや、まだそんな重い話を聞く関係じゃないですよw」って途中まではいつ言おうかタイミングを見計ってたけど、とうとう言えずに最後まで聞いてしまった。
気がついたら私は泣いていました。それは気持ちがわかってしまったから。
小学2年の春、誰かに一緒に帰ろうと誘われるまで教室で本を開いて待ち、みんな連れ立って帰ってしまいひとりぼっちになった後、仕方なく開いていた窓を閉め、カーテンを束ねていた、その風景を思い出してしまったから。
ああこの人は祖母に出会わなかった私なんだな、と、どうしようもなく理解してしまったから。
私が優秀だと彼女の評価もあがるかもしれないと思って余計にがんばり、無事卒業を迎える事になりました。
プログラミングスクールの卒業生の主な就職先はSESです。(今はわからないけど)
SESについて彼女に色々聞いていたので、客先企業に常駐して、多重下請け上等で、使い捨てで、人売りと呼ばれていて、残業が多くて、無理なスケジュールを押し付けられて、仕様変更が頻発して、現場では肩身が狭くて、theITドカタっていうのは知っていました。(今はわからないけど)
でも私はなんでも知りたかった。彼女のことをもっと知る為に、SESについて身を以て知るつもりでした。
同じ時期に卒業を迎えた人の中には、断固SESを拒否する人も何人かいました。
下請けじゃなくて上流工程ができて経営が安定していてまったり働ける社内SEか、自由で先進的でフットワークが軽くて自社サービスのあるベンチャーがいいのだと。
いやいやいやと、社内SEがそんなにいいものなら、学業が優秀だった人か、SESで優秀だった人から順番に行くでしょうと、
ベンチャーがそんなにいいところなら、すごく優秀な人たちの少数精鋭なんでしょうと。
課題でサンプルのプログラムをいくつか作っただけの私たちがどうしてそんなとこにいけるでしょうかと。
修行のつもりでありがたく、いろんな現場や業界で実戦経験積めよと、1行でも多く実務でコード書けよと、色んなプロジェクトのドキュメントとかプロジェクトマネジメント見て勉強しろよと、SESでもないと逆にそんな機会も無いぞと、そんなことを思っていました。
私の就職先は、2回面接をしただけで、スクール推薦のSESの会社にあっさり決まりました。
祖母は、私が平日フルタイムで働いても差し支えない程度まで回復していました。
彼女とは頻繁に連絡をとったり、遊びにいく友人の間柄になりました。
しかし、実際SESで働いてみると、覚悟していたような環境とは少し違いました。
基本的に自社のリーダーとしか話さない(プロパーが直接メンバーに指示を出すのはダメらしい)し、スケジュール変更や仕様変更もちょこちょこあるけど、その分の残業代もちゃんと出るし、なんだか全体的にいいところでした。(テーマパークと比較するとなおのこと)
彼女が最初に働いた企業が、現場が、時代が、運が、悪かったのだとわかりました。
でも、「あなたのおかげでエンジニアになれて、人生が変わって、嬉しいよ」って、彼女に伝える事はできました。
数年はそのまま穏やかに、繁忙期には激しく、時が流れていきました。
祖母の怪我は完治し、私はそこそこのスキルを身に付け、転職と引越しを検討し初めていた頃でした。
そんなある日彼女から東京を離れるつもりだという連絡が入りました。
彼女は私の卒業後もスクールで先生をしていたのですが、それがあまりうまくいっておらず、だんだんと稼働が下がり、収入も下がり、公共料金や生活費も滞納しかかっているような状況だったそうです。
そして、そのことが親御さんに伝わり、帰ってくるように言われたそうです。
私は彼女の唯一の理解者だったので、私が彼女を幸せにしようと思いました。
彼女に引越し先でのルームシェアと、当面の生活費の負担と、その代わり家事をしてもらう事を提案しました。
しかし問題はお金です。彼女はお金がぜーんぜんないし、私も引越し料金(2人分)とルームシェアできる物件(2LDK以上)の敷金礼金・初期費用を払うのは苦しい状況でした。(実家とかに頼ると、生活できないならこっちに戻ってこいと言われてしまう)
折り悪くコロナの影響が、転職市場や私の現職の稼働に影を落とし始め、「やっぱり私実家に帰るよ」などと彼女が言い出して、これはいよいよヤバイなと思い始めた頃、
事態は急転して、なんとお金問題と転職問題が唐突に片付きます。
みなさまPayCareerさんをご存知でしょうか。企業と面談するごとに3万円もらえる転職サイトです。
そこで数件のスカウトが届き、多額の臨時収入を得られ、トントンと内定を複数頂く事ができました。
みなさま是非PayCareerをお使いください。求職者に寄り添うお心をお持ちの採用担当者のみなさまも是非PayCareerをお使いください。
その後物件探しにも散々苦労するのですがなんとか新居が決まり、私たちはルームシェアを始めることができました。
ある土曜日の晩、ブラックスワンという映画がどんな内容かをよく知らずに、なんともなしに見ていた私と彼女の関係は、日曜日の未明に友人から恋人に変わりました。
私は女子校だったので、女性同士でお付き合いしている人たちを長く近くで見ていた事、彼女は過去の経験から男性に恐怖心を抱いてしまうこと、ここ数年似たもの同士の2人がお互いを助けあって生きてきた事、要因はいくつもあったと思います。
多分お互い、本当のところは男性の事が苦手ないしよくわかっていないだけで、もしかしたら男性と付き合おうと思えば付き合えるのかもしれませんが、この上なく安心できて、優しさを掛け値なしに注ぎあえるパートナーを得られた時、それは問題になりませんでした。
人の寝言って今まで聞く機会がなかったのですが、彼女はすごいはっきりと寝言で喋るので驚いています。
私は転職する時に、自社サービスを持っていて、担当者の裁量で業務委託の採用や発注ができる企業を探していました。
配偶者を得たいと思い婚活をしているが、だいたい3回会ってフェードアウトになってしまう。これでいったい何人目だろうか。
主因は他者と関係を深める方法がわからないことだと思う。むろんいない歴=年齢である。
例えばLINEで用件もなしに他愛もない雑談をしている人というのは多いと思うのだが、それができない。
3回ほど転職しており、学生時代のアルバイトも3か所ほど経験しているが、一度も飲みに行ったりプライベートな連絡を取る相手ができたことがない。
無口な人間を想像されるかもしれないが、人と会っているとよくしゃべるし人の話も聞いて盛り上げるタイプである。職場で取引先の人間と飲むようなことがあると必ず呼ばれる。
しかしそれはその場限りで盛り上げることを目的にしていて、その場は楽しくても終わってみると何も相手のプライベートな情報が得られていないことに気付くのである。
仕事なら自分が盛り上げている間に担当の人間が話を進めてくれるからそれで問題ないのだが、婚活においては初対面の印象はいいのに(だいたい積極的に相手から連絡がくる)3回会ってフェードアウトということになるのだ。
他の接し方ができればいいのだが、婚活でお会いしたことのある相手は大概消極的であまり自分から話さない人で、こちらもコミュニケーション下手の自覚があるし好かれたいと焦ってしまい自分の空虚な盛り上げメソッドに頼ることになってしまうのである。
他人に興味がないというのもよく言われるが、興味はあるのだが何なら聞いていいのかわからないのだ。
今回3回でのフェードアウトを迎えた相手を好きになりかけていたためショックで泣きながら長文をしたためてしまった(´;ω;`)
が、したためている間に何となく次にやるべきことが見えたのであきらめずに挑んでみようと思う。だいたい婚活で聞きたいことなんてある程度予想できるのだから、相手に質問させるかこちらから自己開示してみればいいのだ。あるいはすぐに年収1000万とかになれればいいのだろうか。
(2021/4/5 15:00 追々記)
各所でいただいたコメントの返信手段に困り途方に暮れたので、Twitterアカウントを作成しました。コメントはすべて目を通しています。励みになります。
直近の開発予定や、アクセス状況とアフィリエイト収入などの数値についてつぶやく予定なので、よければフォローいただけると。
ただしベースが筆不精なためまったく更新しない可能性も大いにあります。何卒ご了承のほど。
(2021/4/5 2:00 追記)
ブコメも含め、反響があって嬉しい。拙文を読んでいただき、サービスも使っていただいてありがとうございます。コメントはすべて目を通し、より実用的なサービスにしていきます。
取り急ぎ気になったコメントへの返信を。
ーーー 以下もとの本文
当方独身アラフォー、去年の秋口までは貿易関連の零細企業に勤める、しがないサラリーマンのおっさんだった。
当時世間的にもなかなか話題になったが、コロナウィルス蔓延の影響の一環で海運用コンテナ価格が暴騰した。そのアオリを受けた私の会社でも流れる仕事の量が激減し、私個人も暇を言い渡される運びとなった。話の本筋から逸れるので詳しくは触れないが、最終的に雀の涙程度の退職金と引き換えに、40を目前に控えて職を失うことになった。
これまで趣味らしい趣味も持たず給料の大半を貯金に回して生きてきた。そのため一生を生き抜くにはとても足りないが、向こう数年間は食べていくのに困らない程度の貯金が手元にあった。それにあわせて、無限とも言えるような暇な時間を得たのだった。
何をするにも自粛自粛で気が滅入る日々だったが、しばらく心身を休めたことで若干の活力が湧き、貿易実務に関連する資格の勉強なんかを始めてみた。
しかしこれがどうにもピンとこない。退職した企業に勤めていたのも、もともと新卒時代の就職活動の失敗に端を発することであったし、仕事内容に魅力を感じていたわけでもなかった。
そんなときにふと、前々から「こんなサービスがあったら絶対使うのに」と温めていたアイデアがあったことを思い出し、WEBサービス開発というものに手を出してみようと思い立った。
が、しかしそのために必要な知識はまったくと言っていいほど持ち合わせていなかった。数年前にちょっとしたホームページを作ろうと、 HTML/CSS/Javascript/PHP やらの、本当にさわりを学んだ程度だ。
HTMLとCSSについてはなんとかかんとか「書いたものを画面に出せる」程度まではいけたが、JavascriptとPHPについては当時その存在意義も含め、トンと理解できなかった記憶がある。
そんなこんなで自分の作りたいものについて調べるうち、どうやらクローラーやらWebスクレイピングやらについて学ぶ必要があり、それにはPythonという言語についてある程度詳しくある必要があるらしかった。
サラリーマン時代、エクセルで本当に簡易なマクロを書いていたが、当時からPythonはマクロの上位互換というイメージを抱いており、いつかは勉強してみたいと思っていたので、これは幸いだった。
入門書を数冊購入し、Udemyというオンラインスクールで入門講座を受講した。かなり漠然とではあるものの、なんとか最低限の知識を身につけることはできたようだった。たぶん。
サービスの開発を志してからここまで一ヶ月ほどだっただろうか。平日休日を問わず毎日PCには触れるようにし、風呂場やトイレで「Qiita Python tips」とかググって出てきた記事に目を通していた。
(余談だがこのころに受講した https://www.udemy.com/course/python-beginner/ というコースは、PCに環境を整えるところから始まり、制御構文やファイル操作など、自分が欲する知識について体系的に学ぶことができ、コストパフォーマンスが非常に良かった。特に回し者ではない)
(さらに余談だが、最初にネット上の記事を適当にあさって環境構築してしまったため、いまだにPyenvだのAnacondaだのPipだの、Pythonが動く仕組みについて全然理解できないまま今に至っている)
閑話休題。
さてクローラーとはWEBサービスを提供するうえで主役ではなく、そのために必要なデータを集めるツールにすぎない。主役にあたるアプリケーション開発については(ここまで読んでいただいたうえで大変申し訳ないが)私にはシステムエンジニアとしてフリーランスでバリバリに働いている姪っ子がおり、強力なサポートを受けることができた。
姪っ子いわく「いまは基本的にJavascriptがわかっていればサービス提供できる。さらに言うとJavascriptでクローラーやWebスクレイピングを行うことも可能」らしく、結果的にPythonの学習に時間をかけたことは不要であったらしかった。
それどころかPythonとJavascriptのメソッドの名前が微妙に違っていることなどで詰まることが度々あり(特に配列へのappendとpush)、害悪と言っても過言ではなかったように思う。
その後は結局姪っ子に促されるがままにGoogleが提供するFirebaseというサービスと、Node.jsという言語について同じく入門書とUdemyの講座で学習し、なんとか自分が望む機能を持ったサービスを動かすことができた。姪っ子のサポートを受け始めてから4ヶ月ほど経過していた。
その名を パケ裏.com (https://pakeura.com) という、アダルトビデオのパッケージ裏面を延々と眺めていられる、人類の夢がパンパンに詰まった代物である。スマートフォンでの閲覧を想定して作った。
「結局エロかよ」と思った諸君、ブラウザバックは早計だ。人類の技術の進歩を支えてきたのはいつだって戦争とエロなのだ。まずは開発の動機について語らせてほしい。
自分に物心らしきものがつき、色を知りはじめたころから常々思っていたのだが、AVのパッケージというのはオモテ面と比べ、ウラ面のほうが遥かにエロいと思わないだろうか?
なんらかのオトナの事情があるのかもしれないが、オモテ面には美少女が斜に構えて微笑んでいる写真や、クソデカフォントで商品タイトルがババーンと大部分を占めているものが大半である。
それに比べてウラ面には、そのAVのなかでも特にエロいシーンの切り抜きが多々あったり、性欲を煽ってやまない官能的な文句がこれでもかと並んでいる。パケ裏にはエロさという概念が所狭しと集っているのである。そんなパケ裏を延々と眺めることができたら…これは私にとって長年の悲願であった。
物理店舗でAVを購入することのない私にとって、FANZAでいちいち商品ごとにパッケージ画像をクリックし、裏面を覗いていくのはなかなかに面倒な作業である。
その点 パケ裏.com を使えば、条件にマッチしたジャンルのパケ裏を無限にしゃぶりつくすことができる。作りたいサービスの要件が私の中でかなり明確だったこともあり、思った以上に短い期間で理想的なサービスを形にすることができた。
少し大仰な物言いではあるものの、こうして自分にとっての積年の夢を叶えることができた。
趣味というか、金銭の発生しない範囲でプログラミングに触れることはとても楽しく、少しずつサービスが形になっていくなかで自分の成長も日々感じることができた。システムエンジニアとして生きていくことは今後もないとは思うが、コロナ禍のおかげで人生でもなかなか得難い、貴重な時間を過ごすことができたように思う。人間万事塞翁が馬とはよく言ったものだ。
最後にくどいようだが、この パケ裏.com(https://pakeura.com)、主観だがかなり実用的なサービスとなっていると思う。ぜひ使っていただき、感想をいただけるとありがたい。
また事前に断っておくと、FANZAの商品ページへのリンクはアフィリエイトになっている。このサービスを通じてパケ裏の偉大さに気づく人が増え、さらに私の懐にちょっとした小遣いが入ってくれば、望外の喜びである。
https://nuc.hatenadiary.org/entry/2021/03/31
を読んで、ブコメ群を見ると病的だとか、「悪い意味で」頭を殴られたような感情になってしまう人が一定数いそう(私含め)と感じたので、エンジニア向けのみならず、もっと一般向けに上の話を例えてみる。なお、上の記事を批判してるわけでも称賛しているわけでもないのであしからず。
これは、モテる男性から、「自然に女の子と話せば彼女できるよね」というモテアドバイスを貰ったときの気持ちにとても似ている。
モテる人の立場からすると、普通の、だが実体験に即したアドバイスに聞こえるだろう。一方で、真剣に女子にモテたいと切望する諸君の立場からすると、これは3つの点で期待はずれな回答だと思う。
1: 自然にやっててダメなので、再現性のあるメソッドが聞きたかった。
2: 自然にやっててもやっぱりダメな自分という劣等感、コンプレックスが増長される。(そういう感情を抱かなければこの後の文章はスルーで良いよ)
「自然に振る舞っていてもモテなければ」意識して異性から好かれるように日々努力を重ね、可能性を高めるしかない。ということである人はサークルに入り、ある人は清潔感を保ったり、ある人は結婚相談所に駆け込んで第三者からのアドバイスを貰う。こうした自発的な行動によって場数を踏んでいくことで次第に良い感触を掴んでいく。
上の記事にもどると、なんとかgoogle(や他の外資系の待遇の良い企業群)に入りたいという気持ちから、おおよそ普通~ある程度経験の積んだエンジニアはleetcodeなどをやって競技プログラミングのスキルを身に着けたり、コンピュータサイエンスに近い分野の本を自分なりに理解するように努めたりする。(競技プログラミングの善悪の話をしているのではなく、そういう手段で面接に通過する確率を上げるというだけの事実の話をしてる)
しかしながら、「自然とコンピュータサイエンスに向き合っていれば、面接は友達とお茶をする程度で済む」と言われても、いやいやそれはモテる側の立場の強者の理論でしょとなる。
必要な能力は「椅子に座れること」「四則演算ができること」「本が読めること」というのは、モテる人の比喩に例えれば、「椅子に座れること」「会話ができること」「スマホを持っていること」となろうか。
強者にとってまっとうな実体験に即したアドバイスでも、弱者にとって見れば残念ながらコンプレックスをえぐる言葉でしかない。万人にとって良いアドバイスというものは存在しない、といえば聞こえは良いだろうが。
ということで、上のgoogleの面接対策の記事は、意識して努力するよりも自分の得意な(友達とお茶をする程度で自然とできる)分野で勝負すべき、という身も蓋もないという小噺だと思ったほうが良いです。面接対策でleetcodeなどをやって苦労してるんだけど、という感想を抱いたり、ソフトウェアエンジニアでのステップアップに限界を感じていれば、それは「友達とお茶をする程度」の感覚の人には勝てないので、得意なこととの掛け算で勝負するのが現実的な勝ち筋にみえます。
前提
・○○は子供の頃なら大体誰でも一回触れるようなものである。(例:ドラえもん、ポケモン、ガンダムなどのシリーズが何年も続いてると効果的)
・親や兄、親戚、隣の兄ちゃんから与えられる。(そこがターニングポイントとなりやすく見えて効果的で時代を考えなくても良いので辻褄を合わせやすい)
こうすることで「子供の頃から今までずーっとその○○が好きでした」と語ることが可能。
本当は2~3年溝があったり、モチベーション低いときがあるのにね。
おっし、じゃぁポケモンでやってみるか!俺(32)の場合はちょうど赤・緑世代なんでええやろ!
兄が赤バージョンがほしいといったので自分が緑バージョンだった。
金銀、RS、DP、BW、XY、SM、そして今剣盾。
HGSS発売のときなんかは深夜からゲームショップの前に大学の友人と並んで9時を待ったなぁ。
あの友人も剣盾を買ったらしい。
7と8。
技術的なところが気になる人はこれだけ読んでくれたらいい
最後に技術的な観点からエアレペルソナが純国産ではないということを指摘する。
RocketChatという海外で開発されたOSSチャットアプリをフォーク、改変したもののよう。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://rocket.chat
フォーク元はバリバリ多国籍、外資である。(RocketChat自体は問題のないアプリであり、このエアレペルソナとはフォーク関係を超える関係はないと思われる)
冒頭のこの部分に関してである。
ttps://play.google.com/store/apps/details?id=chat.airlex.reactnative
Google Playで公開されているエアレペルソナのAndroidアプリをリバースエンジニアリングして調べてみた。
ちなみに、エアレペルソナには利用規約のようなものは見当たらず、リバースエンジニアリング禁止条項も無いようだった。
ttps://apps.evozi.com/apk-downloader/
ttps://github.com/pxb1988/dex2jar
この辺を使ってapkをダウンロードし、apkを解凍し、chat.airlex.reactnative/classes.dexをjar fileに変換した。
classes.dexから変換されたjarファイルを展開するとchat/airlex/reactnativeというフォルダ、パッケージが見つかる。
このパッケージ内のファイル(.class、クラス)がエアレペルソナの処理を行うもののようである。
このクラスをJadを使い、デコンパイルしてみた。その結果が以下である。
ちなみにここからapkをアップロードするとdex2jarをしなくてもJavaのソースコードにまでデコンパイルしてくれた。便利。
package chat.airlex.reactnative; import android.content.Context; import com.ammarahmed.mmkv.SecureKeystore; import com.facebook.react.bridge.ReactApplicationContext; import com.tencent.mmkv.MMKV; public class Ejson { private String TOKEN_KEY = "reactnativemeteor_usertoken-"; String cardId; String host; String messageId; String messageType; /* access modifiers changed from: private */ public MMKV mmkv; String msg; String notificationType; String rid; Sender sender; String senderName; String type; public Ejson() { ReactApplicationContext reactApplicationContext = CustomPushNotification.reactApplicationContext; if (reactApplicationContext != null) { MMKV.initialize((Context) reactApplicationContext); new SecureKeystore(reactApplicationContext).getSecureKey(C0617Utils.toHex("com.MMKV.default"), new RNCallback() { public void invoke(Object... objArr) { if (objArr[0] == null) { MMKV unused = Ejson.this.mmkv = MMKV.mmkvWithID("default", 1, objArr[1]); } } }); } } public String getAvatarUri() { if (this.type == null) { return null; } return serverURL() + "/avatar/" + this.sender._id + "?rc_token=" + token() + "&rc_uid=" + userId(); } public String token() { String userId = userId(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || userId == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(userId)); } public String userId() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || serverURL == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(serverURL)); } public String privateKey() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; if (mmkv2 == null || serverURL == null) { return null; } return mmkv2.decodeString(serverURL.concat("-RC_E2E_PRIVATE_KEY")); } public String serverURL() { String str = this.host; return (str == null || !str.endsWith("/")) ? str : str.substring(0, str.length() - 1); } public class Sender { String _id; String username; public Sender() { } } }
フィールド名を見てみると、cardId, host, messageId, messageType, mmkv, msg, notificationType, rid, sender, senderName, typeが存在する。
メソッドには、getAvaterUri、token、userId、privateKey、severURLが存在する。
ところで、RocketChatというOSSのチャットアプリが存在する。
ttps://rocket.chat
そのRoketChatのAndroid実装の中に同名のEjsonというクラスが存在する。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/android/app/src/play/java/chat/rocket/reactnative/Ejson.java
見比べてみると、フィールドにcardIdが追加されている以外はフィールドやメソッド名、そしてその処理の内容まで一致している。
他にもReplyBroadcastなど、同様のクラスがエアレペルソナに見つかる。
以上のことからエアレペルソナはRocketChatをフォークして、パッケージ名を変えて作られたチャットアプリであり、開発の大部分はRocketChat社の努力と多数のOSSコントリビュータによってなされたものであると思われる。
そもそもこのOSS時代に純だの何だの言っている時点で怪しい。
さて、エアレペルソナがRocketChatをフォークして作られたものであるとすると、気になるのはライセンスである。
RocketChatのOSSライセンスはMITライセンスである。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/LICENSE
MITライセンスは非常に緩いライセンスであるため、エアレペルソナの様にフォークして別のアプリケーションとして公開することにはおそらく問題がないということは強調しておく。
現状エアレペルソナにログインできておらず(2要素認証のコードが送信されないといった問題が起きている模様)、使用している各OSSのライセンス表示が適切に行われているかまでは調べられていない。
最初に結論から書くと、「毎日新聞さん正論すぎる」「だけどまだちょっと時間あるで」。
『「COCOA」がグーグルとアップル基本ソフト最新仕様に未対応』
→ https://mainichi.jp/articles/20210315/k00/00m/020/165000c
うん。コード見てる人はだいたい知ってる。
まあ、そうですね…。
COCOAの動作の基盤となっているのは、Exposure Notification API(曝露通知API)というやつで、GoogleとAppleが共同で開発した、AndroidとiOSの両方で使えるAPI。OSと近いところで動くライブラリみたいなもので、おかげでBluetoothを使っても電力消費は最小限で済むし、アプリがプライバシー関係でよからぬ手出しができないようにもなってる。iPhoneではiOSの一部として組み込まれているし、AndroidはGoogle Play経由の「Google Play 開発者サービス」の新しい版に含まれてる、みたい。
このAPIにはバージョンがあって、V1ってのが最初のやつで、もう少し検出方法が洗練されたV2ってのがある。Exposure Notification APIのセットの中にV1とV2が重複しつつ混在してて、今から作るアプリなら使えるAPIバージョンをアプリ側で確認して、使える方を使う、という感じになるかと思う。
現在、COCOAがまがりなりにも動いていることからも分かるように、API V2が使えるようになっても、後方互換性のためにV1も使えるようになっている。Apple/GoogleはV1のメソッドとかには「deprecated」(使用不可)っていう印をつけて、今後は使わないように、と言ってる。
「deprecated」になったやつは、Apple/Googleは「もう使わんでね。いつ使えなくなっても文句言わんでね」という扱いをする。だから、「ソフトの更新次第で作動停止」という指摘は間違いではない。間違いではないが…。
Apple/Googleのデベロッパならよく知っていると思うけれど、「deprecated」になったからといって、そのAPIを予告なく使えなくすることは、まず、ないのです。
増田はIOSのデベロッパなのでiOSの例をあげると、画面を表示する基本的な部品であるところの UIWebView っていのうがあったんだけど、これはiPhone OSの頃からあった古い古い部品で、これまでずっと使われてきた。これはwebの画面を表示するのと同じやりかたができるので、iOSのアプリはほぼみんな使ってたんだけど、いろいろ問題もあるので、iOS 8の頃に WKWebView っていう新しい部品を出したのです。で、UIWebView をdeprecatedにしたのがiOS 12のとき。
ここからAppleは、「UIWebViewを使ったアプリをApp Storeに提出したら警告するからね」→「今後新規アプリやバージョンアップのときUIWebView使ってたらリジェクトするからね」→「UIWebView使ってるアプリはAppStoreから削除するからね」という感じにデベロッパの様子を見て期限を延長したりしながら段階を踏んで、ほんとに削除(一時的な非表示)始めたのは去年の12月ですよ。しかもiOS 14でもまだ既存アプリのUIWebViewは動く。
もちろん、滅茶苦茶使われていたUIWebViewと比べたら、Exposure Notification APIみたいなマイナーなAPIでこんな丁寧なことはやらないかもしれないけれど、でも重要度で言ったらExposeure Notification APIなんて「超重要」でしょ。V1が全然使えないならまだしも、一応動いてるし。
Exposure Notification API V1は、使えなくなる前には必ずデベロッパに期限を知らせるはずで、いきなり切るはずはない(ないよね(ないんじゃないかな(まちょっと覚悟はしておけ)))。
だから、COCOAが急に使えなくなっちゃう! と不安になる必要は、当面はないと思っていい。かな。
これはスレたデベロッパであるがゆえの油断であると言われてしまえば、そのとおりです。「deprecated」は「deprecated」。普通のプロジェクトなら、すぐさま対応を検討して、バージョンアップ計画を立てるのが正しい。普通のプロジェクト、なら。
記事中では「21年2月になって、ようやく最新使用に対応するための具体的な検討に着手した」って言ってて、まあこれはダメなんだけど、そもそもプロジェクト運営がグダグダだったんでしょうがねーんじゃね? というのがいちヲチャーとしての感想ではある。だって、Android版動いてなかったんじゃよ? プロジェクト立て直す時間はあるはずなので、体勢立て直してから検討してもいいかな、という気はしている。それくらいの時間はある。はず。
そういう意味で、毎日新聞の記事はちょっと叩きすぎな感はある。正論ではありますよ。正論では。
で、ここでぶっちゃけてしまうと、実はもうCOCOAは要らないっちゃ要らないのです。
保健当局がアプリを作れない/作らない国/地域のために、iOSでもAndroidでも、AppleとGoogleが用意したCOCOA相当機能「Exposure Notification Express」というやつが、OSに組み込まれている。これを使うことにすれば、当局はサーバ側のバックエンドだけ用意すればいい。
『グーグルとアップルの新型コロナ接触確認機能に新たな仕組み「Exposure Notification Express」――日本には影響なし』
→ https://k-tai.watch.impress.co.jp/docs/news/1274374.html
『Supporting Exposure Notifications Express』
「だけ」って簡単な言うな。そりゃ大変だけろうれど、わざわざ使いづらい/どマイナーなミドルウェアXamarin(Microsoft謹製)使って、頑張ってクロスプラットフォームなアプリを開発/運用するよりはずっと負担は少ないよね(必要な予算も)。
もう、バンザイして、Expressにしたらいいんじゃね? と、増田は考えるんじゃよ。知らんけど。
COCOAは嫌いになっても、Exposure Notificationの仕組みは嫌いにならないでください…(´・ω・`)
COCOAは出自がアレで、採用の意思決定が不透明で、契約もテキトウで、アプリ運用も誰が何をどうしたらいいのかわかってない/身動きができない、という悲惨なアプリです。
でも、2月以降変わってきたんですよ。COCOAの立て直しチームにCode for Japanの人やオープンソースの知見を持った方が参加して、githubでのissue解決の動きも再開している。ちょっと見てみてくださいよ、いろんな人が寄ってたかってコードを検証して、それが反映されつつあります。
『Issues・cocoa-mhlw/cocoa・GitHub』
→ https://github.com/cocoa-mhlw/cocoa/issues
いままでよりはまともに動くようになるはず。
前述のように、Exposure Notification APIで消費されるCPU資源も、通信も、ストレージも、バッテリも微々たるものです。
Exposure Notification API自体は非常によくできており、プライバシーに関しても、よくまあここまで、というくらい考慮されています。アプリ側でいろんな悪さを仕込むことは技術的には可能ですが、小細工を仕込んでもAppleやGoogleのアプリ審査で弾かれます(通常の小細工入りアプリが弾かれる程度には)。運営への不信からプライバシーについても疑ってしまう人もいるけど、COCOAはその点まず心配ありません。
だから、渋々でいいので、もうしばらくスマホの奥においといてもらえませんか。そんなにお邪魔にはならないですよ?
そして万が一曝露通知が届いたりしたら宝くじ大当たり級の驚きが(うれしくない)
アイヌの差別用語をそうと知らずネタに用いてしまった芸人が謝罪した。
内容はかなり誠実な物なのに、画像でツイートしたことのみに触れてそれは悪と脊髄反射で叩いてる人間が多くて呆れた。
いやさ、でけー会社とか、バックに大きな事務所が付いてる売れっ子芸人とかが同じことをやって叩かれるのはわかるよ。
そういうところが本気を出せば個人サイトのバッシング記事なんかは消させることができるだろうし、いやなんなら個人でないニュースサイトからも消させることができるかもしれないし、そもそも検索結果をいじる事だってできるだろう。
別にそんなことしなくたって、規模の大きい組織が活動し続けていればいずれ他の情報で埋もれるだろう。
そこで最後まで扱いに困るのは、自分たちの領域のどこかに置かざるを得ない「謝罪文」だ。
だからこそ謝罪文から本題を辿られるのを嫌って画像でツイートする。そうして謝罪にアクセスし辛くする。
じゃあ大して売れてない芸人はどうだよ。
事務所からも大して守ってもらえないだろうその辺の芸人はどうだよ。
ただでさえ「加害」の情報で本人の検索結果は埋め尽くされてるだろう、そしてそれはこの先も大きくは変わらないだろう、そんな中で謝罪にアクセスし辛くするメリットなんかない。デメリットですらある。
じゃあなんでそんなことをするのかって言えば「せめて手書きで、自分の言葉で、誠意を伝えたかった」以外にないだろうがよ。
謝罪文をちゃんと読んだか?ただ手書きってことじゃなく、テンプレでもなく、自分の言葉で書かれていることは読み取れるはずだ。
結果的にアクセスし辛くなってることは短慮だしバカだよ、しかしそこにはメリットなんかない。
少し考えれば力のない個人に「画像ツイ=悪」メソッドが適用されるわけではないことがわかるはずだ。
自分の言葉で自分の意思を伝えると言うのは人として正しい誠意の示し方だろうがよ。
そんな簡単なことも分からず脊髄反射で「正しい謝り方(笑)」を口にする奴に腹が立つ。
あーむかつく。
困った人に何かを諭そうとしているとき、
架空の人物を作ってメタ認知させるのはいい方法かもしれないと思った。
つまりどういうことかというと、
例えば自分に非があっても全く謝らない、間違いを認めない御仁がいたとして
そのまま諭すと、普通に反発される。
Aくんは絶対に謝らない、間違いを認めない人でこういう謝ったら死ぬマンの精神の根底には、自分の責任だと受け止めたくない
、誰かのせいに事象のせいにしたいという弱くて醜い心があると思う。
間違いを認めず、修正しないのが、一番の間違いだということにこいつは気づいてない。
実に哀れで弱く醜い精神だよねー、愚かだよねー。間違いを認めて、先に進むほうが素敵な人間になれるのにねー
みたいな話をして、Aくんについてどう思うか話してもらうと、
自分自身のメンタルの問題について気づいてくれるかもしれない。
あと問題がある御仁のAくんに対しての考えも聴ける
こういう奴はだいたい自分を客観的に見れない、メタ認知ができないので、こうやって自然とメタ認知させるのはどうか?
という話でした
10年以上使ってたが同じスポーツをやる仲間を中心にした狭いリアルの繋がりでしか使ってなくて、特に沢山の友達と繋がるでもなく仲間内でゆるく近況報告をするくらいの使い方しかしてなかった。
最近になって、いろんなフォーラムやグループに参加して使うということがわかり、トレーニングのメソッドを紹介し合うとか、同じローカル地区のグループとか、クレイグスリストみたいに不用品を交換したりとか、同じゲームをやっているグループに参加したりだとか、そういう使い方をするもんなんだなあということがわかった。当たり前だけどこれインターネットのグループだったんだな。
redditとかよりも雑多じゃないし、基本的にポジティブなリアクションしかないし、(意地悪なやつはグループマスターからBANされる)世界中で繋がってる感あるし、なんかすごい90年代のパソコン通信の黎明期みたいな治安の良さがあっていい感じだ。