はてなキーワード: バックエンドとは
最初に結論から書くと、「毎日新聞さん正論すぎる」「だけどまだちょっと時間あるで」。
『「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はその点まず心配ありません。
だから、渋々でいいので、もうしばらくスマホの奥においといてもらえませんか。そんなにお邪魔にはならないですよ?
そして万が一曝露通知が届いたりしたら宝くじ大当たり級の驚きが(うれしくない)
記入する項目の例
「やりたいこと、興味のある仕事・分野」記入例
開発環境について触れる
今まで小さなチームでインフラからフロントエンドまで全てを担当してきたが、次は少し大きなプロダクトでバックエンドのパフォーマンス改善に挑戦できるような環境で仕事がしたい。
------------------------------------------------------
興味のある分野・領域について触れる
Railsアプリケーション設計・開発から、Heroku, AWS, GCPなどのインフラ構築もできるような、Webアプリケーションエンジニアになりたいと思っています。興味のある分野は、医療・健康などです。現在転職活動中です。 ------------------------------------------------------
より具体的な記入例
例1
# 目標 新しい技術に柔軟に対応できるようにしたい 自社開発のサービスに携わり、常に機能の改善・拡張を考えながら開発がしたい
# 興味のある仕事 自然言語処理や画像分析など、データを扱うアプリケーションの開発
# 転職先に求めること 新しい技術に対して敏感に反応し、プロダクトにマッチする場合はどんどん導入してゆく風習があるような職場で働きたいです。
日本の超大手企業(繊維系)の内製システムのエンジニア採用を受けて落ちた時の記録
虚実織り交ぜて書いてるので真にうけないように
受かった人の話を聞いてみたい
割と普通の内容だったがRubyのコードを見せられたときは面食らった
サービスのアーキテクチャ設計するときに気をつけていることは何?
セキュリティ面で気をつけていることは何?
唐突にRubyのコードを見せられ、このコードの悪いところはどこですか?
サービス規模の割に社員数が少ないけどどんな編成になってるのか
なんでもクラウドベンダーの特定技術に縛られたくないからKubernetes使いたいみたいなことを言っていた気がする(そういうための技術じゃないけど)
なぜアプリエンジニアと面接したか不明(当方の専門はバックエンド)
経営陣がクラウドの予算を出さないが24/365守れと言われたらどうする
交渉してだめだったら
24/365関連の質問です。サービスをスパイクさせないためにはどうしますか?
あなたの考える最強のバックエンドアーキテクチャをおしえてください
質問を変えます、月の予算1億円もらったらどんな構成にしますか
// 過去にアプリ開発をしたことがあったのでアプリ開発について質問を受ける
iOS/Androidのアーキテクチャを設計するとしてどこまで同じ技術を使うように強制しますか
SwiftUIはメモリ食いまくりで大規模アプリでは使い物にならないことですね(ドヤ)
SwiftUIではメモリ食いすぎてインフィニットスクロールが使えません(ドヤ)
先ほどSwiftUIについての質問を受けましたが御社のアプリではSwiftUIを導入されてますか?
私はITの開発系のエンジニアだ。(ゲームの開発、Webのバックエンドの開発やフロントエンド開発をやってきて、今は機械学習のエンジニアをやっている)
「一番じゃなきゃいけないんですか?2位じゃなきゃいけない理由は?」という感じの科白をふと思い出した。もうたぶん10年くらい前の言葉だ。ちょうど私がソフトウェアエンジニアとしてのキャリアを積み始めたころだ。当時はあの言葉に憤慨したものだった。そのあと、京や富岳が世界一になった。そのことでふと思うことがある。
京や富岳が世界一になった。でも、日本においてソフトウェアエンジニアの地位が向上したのだろうか?
実感として私はそこまって変わってないように見える。結局はハードだからだ。
もし、あのとき京や富岳のため資金を、ソフトウェアのために使っていたらどうなっただろうか?と時々思う。
いまやっている紙の業務やらを電子化するための資金につかっていたらどれほど、より良い対応ができたのだろうか?
「一番じゃなきゃいけないのは、シェアを守るため。日本のIT技術を守るため。」という発言もいろいろあったが、あれはクソみたいな大企業を守るための口実に過ぎなかったような気がする。
next.js が vercel を提供して CDN からサーバーサイドでの処理までをワンストップに提供しているとか、 firebase がクライアントサイドでの SDK と Cloud Functions をなるべく一貫した体験で提供しようとしていることとか、あるいは今話題の React Server Component とかについて、フロントエンドの最前線がいったいどのような苦しみにあるか、理解できる人は実はあまり多くないのではないか、と僕は思っている。
それは何かといえば、絶望的なまでのサーバーサイド/バックエンドへの忌避感だ。「とにかくフロントエンド領域しか絶対にやりたくない」という人が沢山いるが、しかし一方フロントエンドで無理しないでサーバーを書くだけで楽になるようなタスクはいくらでもある(典型的には API たくさんアクセスするとか)。
そうしたときに、フロントエンドメインだがバックエンドも書けるみたいな人がそういうサーバー忌避患者を介護する層として BFF の需要があり(無論それだけが BFF に求められるのではなく認証などの要素も大きいが)、サーバーサイドレンダリングというタスクもあるため node.js で何らかのサーバーが書かれていった。
アイソモーフィックな JS によりフロントエンドとサーバーサイドを統合する、という試みはこれまであまり成功しなかったので(結局どっちにも詳しくないといけないから正しく書ける人がすくない)、 next.js の getStaticProps や React Server Component は「サーバーサイドだけで動くコードを見た目上フロントエンドのコードの中に含める」という解決策を提示した。
ここまでしないとフロントの人がサーバー側を書いてくれないという現実は、あるわけですよ。「そんな奴言って聞かせりゃいいじゃねえか」とか思うかもしれないけど、これが現実。これが全てという話でもないけど、わりとこんな話が大きいように僕には見える。
起きていることはそういう話なのだけど、これはけして JSP 時代への先祖帰りではなく、この進歩の先にはサーバーとクライアントを跨いで快適な UX を誰でも簡単に実現するという未来が、もしかしたら今回こそ実現できるかもしれない、と僕は思ってます。
■30半ばで年収900万円達成したんだけど、向上心が失われて行って辛い
新卒時は大手SIer(プライムコントラクター)に就職、30手前でユーザ企業に転職して今は上流・下流工程を知ってるITシステムの発注者側の立場にいる。
新卒でIT企業に就職した時はまだ自分がこれからどうなっていくのか明解なキャリアパスは描けていなかったが、
30歳に近づくにつれ、ユーザ側(発注側)に転職してITエンジニアを指揮する立場にならなきゃダメだと思い転職活動を頑張り、結果望み通りユーザ側の企業に転職して現在に至る。
新卒当初はSIerの中でチームメンバー(システム設計・実装・テストをする人) → チームリーダー → PM → 統括PMのようなキャリアパスを描くのが王道だと思っていた。
だが、元請けとは言えどんなに非合理なシステムでも客に言われた通りに作らなきゃいけない下請け企業でPMになったところで大して意味がないことに気づく。
自分に裁量などほとんどなく、理不尽な客に怒られたりバカにされたりする頻度が増えるのに比べて給料は大して上がらない。
担当していたプロジェクトは超大企業のサービス開発。なのだが、ユーザ側の担当者のレベルがびっくりするほど低い。発注担当者は中学生の作文みたいなクソRFP書いてよこしてくる。納期も費用も工数もめちゃくちゃ。しかもやりたいことが全く分からない。多分発注担当の上の奴がテキトーに言ったことをそのまんま真に受けて左から右に流してるだけなんだろうが、有名な大企業にもこんなおバカな社員が堂々と給料もらって平気で定年まで安泰なんだなと思ったら複雑な気持ちになっていた。
だけど、幸か不幸か、そのダメな担当のおかげで20代のうちにユーザ側へ転職しないと仕事のレベルも上がらないしスキルも上がらないことに気づけた。30半ばになって思い返すと、本当に感謝しかない。
まだ30半ばで成功とか失敗とか書くのは時期尚早だとは思うが、給料も大幅に増えてフルリモート・フルフレックス・コアタイム無しの環境を手にしている現状は控えめにいっても成功だと思わざるをえない。
年収も30半ばにして900万円を超えた。
ユーザ企業に転職して思うのだが、ユーザ企業ではITのスペシャリストというのは新卒ではほとんどいない。ゼロとは言わないがSIerのレベルから見ても平均から下のレベルしかない。
なので業務を改善する社内システムの開発や、売り上げに直結するWebサービスのバックエンド・フロントエンドの開発プロジェクトが検討され始めると必ず声がかかり、システムのアーキテクチャを選定する段階から意思決定で主導権を握れる。
こちらとしてもそういう役割を期待されて中途採用されたというのもあるし、何よりこういう会社は新卒採用時にITのスペシャリストを採用することもないので、社内の新卒の誰かと争って主導権をようやく握る、などのようなこともなく、自然と企画、設計、実装、運用まで全て意思決定に関われる。
まさかSIerから転職した身で、自分でTypescript, React, Firebase, Java, C#, C++, SQL, Python, TensorFlowを駆使してゴリゴリ開発して企画を実現し、それがプレスリリースされて正式に会社のサービスとして世に出るようなことになるとは20代の頃は想像していなかった。
ここまでは20代の頃に目指していた理想の30代のキャリアパスそのものだと自負していて大変満足している。
だが、30半ばにして20代の頃ギラギラとした向上心が次第に失われつつあるのを日々実感している。
30前半までは自分で目標設定してそれを達成するのが楽しかったが、30半ば以降は金と評価が欲しくなってくる
30代前半までは日々成長し、技術の選択肢も勉強する度に着実に増え、サービスの企画が持ち込まれるとそれを実現するためには~すればいい、などとパッと浮かんで日夜シミュレーションしてPoCして…というサイクルが楽しくしょうがなかった。
今でも楽しくはあるのだが、これまでとは違って「ただ楽しい」だけでは到底満足できなくなっている自分に最近気づいた。
これまでは金になろうがなるまいが、依頼された仕事は自然と全力で取り組むことができた。報酬はやりがい、のようなところは正直あった。
だが、30半ばを超えてくると物の価値がだんだんとわかってくる。
仕事が忙しくなった時に皆さんはタスクに順位付けをするだろう。
これまではその優先度は難易度で昇順ソートかけて上から順に消化していく方式をとっていた。
すぐできるものから片づけることで、仕事の見かけのスループットが上がる。客観的には仕事が早く進んでいるように見える。
だが、今では、そのタスク・プロジェクトが将来金になるかならないかでタスクの優先順位を検討するようになりつつある。
結果が魅力的でなければそもそも仕事のやる気すら湧き上がってこない。
年収900万円
これは30代半ば、理想のキャリアを追い求めて突っ走ってきた人間の向上心が奪われてしまうような大きな金額なんだろうか。
このへんで満足してあと20数年まったり定年まで過ごすべきなんだろうか。
20代の頃あれだけ将来のキャリアについて真面目に考えていたのに、30代になって40代の理想のキャリアパスが描けない。
うちの会社は年功序列なので、年収も40代になれば自動で1000万円を超える。
このへんで走るのをやめてジョギングに切り替えても、多分未来はそう暗くない。
なのに、アクセルが減速しかかっている自分を冷静に見つめると、何か、本当はもっとできるのに手を抜いている、みたいな罪悪感が湧き上がって止まらない。
はてなを読んでいると、自分と同じ30半ばくらいの年代の人が多くいるように感じる。
30半ばでようやく安定を手にしつつある自分と似たような境遇の人がいれば、
40代に向かってどのような準備をしているのか、さらに上を目指しているのかそれとも今のポジションでの安定を取るのか、それとも会社を辞めて起業を考えているか、など、
恐縮ではあるが共有してほしい。
30半ばでクズになりかかっている自分に、勝手ながら発破と刺激を与えてやってほしい。
よろしくお願いしたい。