はてなキーワード: 互換とは
プログラミングで主にやる事は下記の2つ。
①IFでAかBを選択させてどっちかの設定を実行
②Whileで決められた回数分繰り返す
とてつもなく複雑で冗長な処理によって実行されている。
わかりやすいので画像処理でいうと、数十万から数百万の画素(RGBAの24bitで表される数値)を小さなブロックに分解し、数学的に周波数の重なりとして計算して変換、含まれる頻出パターンをテーブルにして圧縮伸張を行なう。みたいなことが瞬間的に行われている。
「まさかそんな事できるわけないだろ」というレベルの処理が実際に行われており、これまた直感的でない。
だからそれをどう書くんだよ。という答えはコレ。有名なjpegの実装だ。
libjpeg というライブラリを書くことはできるだろうか?画像の圧縮の理論から考え始めることはできるか?
正直無理だ。自分はプログラマだがそんなに数学が得意ではなく、頑張ったとしても下手するとコレを作るのがライフワークになってしまい、他のことができなくなる。
例えばブラウザを0から作るとして、jpegの処理以外にも画像だけでpngとかgifとかwebpとか、その他もろもろとてつもない作業が必要になる。
「とてつもなくて想像もできないので流石に無理だろう?」
いや、でも、実際動いてるのよ。ここ何十年、コツコツと積み重ねて実現している。
「積み重ね」とはライブラリであったりフレームワークであったりOSであったりする。
「どういう風になっているのか」
外部に向けたインターフェイスがどうなっているのかは理解する必要がある。「使う」ために必要だからだ。
この2つは分けて考えなければならない。
ちなみに、たとえばChromeのコアであるChromiumはのコードはコレだ。
つまり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず
プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。
これがもう滅茶苦茶イライラする。
「これで判定と繰り返しという基礎ができます」というのが基本的な理論(定理的なもの)で、その他に必然的だが唯一無二ではないベストプラクティスというものがある(法則的なもの)。
後者をうまく説明する入門書に出会っていないんだろうな。という印象。イライラはやめよう。つかれる。
ベストプラクティスはいろいろあるのだが「層の構造にする・レイヤーに分ける」というのは重要なアイデアだ。
libjpegというのはjpegの処理を行う「ライブラリ」だ。他のアプリケーション...たとえばブラウザはこのライブラリを「使う」。
ブラウザではjpeg画像の圧縮展開というとてつもなく難しい処理を「libjpegの使い方」の理解までで済ませ、過去の蓄積であるlibjpegのコードを利用することで真の意味で0から実装しないようにしている。
この場合、libjpegが「低レベル・低レイヤー」の存在であり、中身については「使い方」つまり「仕様」の理解までしか行わないことで、実際に作りたいものを作れるようにしているわけだ。
完成しているプログラムは二例ほど挙げたがどうですかね?
複雑なことをする、特に低レイヤーのコードはとてつもなく難しい。
でも、とりあえずこんな感じのコードなら解るよね?
こういうレベルから理解して、ちょっとずつ難しい処理を学んでいくしかない。
ハードルは高いんですよ。実際。
なので、木材からだと難しいからプレハブのキット的なものを探すとか、ログハウスのカタログを読むとか、あるいは100人乗れる物置を買うのがいいかもしれない。そういうところから始める。
それらがフレームワークであったりライブラリであったりする。目的に合うものを探して、自分がやりたいことをどう実現するかとにかく考える。
「テキシコー」https://www.nhk.or.jp/school/sougou/texico/ で言われる通り、「小さく分けて考える」「手順の組み合わせを考える」「パターンを見つける」「大事なものだけ抜き出して考える」「頭の中で手順をたどる」をひたすら実行する。
unityはコードが公開されているので、本当に読みたいなら。。
オブジェクト指向は一旦忘れよう。
オブジェクト指向の「隠蔽」というのは層の構造が持っている重要な要素ではあるけど、「低いレイヤーについて考えない」のが基本的な作戦だという理解の方が重要だ。
前述の通り「できる限り作らない」んですよ。「使う」だけ。知るべきことを最小化する。
そして本当に作るべきものに関しては、利用する下のレイヤーのライブラリなりを探して・仕様を理解して、どう組み合わせてfor, if, あるいは計算させれば実現できるのかをひたすら考える。
単に翻訳がしたいのか?表示に割り込む方法を知りたい?日本語に翻訳するのは実行時なのか開発時なのか?
要求される表示エリアが言語によって異なるために、デザイン調整が必要になる問題をどうするか?
分解が甘いので何をしたらいいか調べることができないんだと思う。
ちなみに、アプリ内の文言というのはアプリの外部から変更できないように実装されている事が多いので、利用者が上書きする仕組みはかなり難しい。
AndroidなりiOSの仕様にもそのへんに割り込める機能はないはずなので、OSの開発に入っていく必要がある。結構大変だとおもう。
アプリの開発者が、そういう機能を備えた多言語化のためのライブラリを使うようになれば実現可能ではあるので、そっちの方向で頑張るのがおすすめだが、英語圏の開発者には多言語化のモチベーションが低いという基本的な問題はあるのよね。
この辺の「できる・できない・むずかしい」の判断は、いろいろな勉強をすると常識としてある程度みえてくる...気がする。
ついでに。ウェブサイトやウェブサービスの翻訳だとこういうサービスがあったりする。
ブラウザはページの描画処理のなかに割り込む余地が大きく取ってあるので、ブラウザのExtensionとかならできることがいくらかあるかもしれない。
個人的に気に入らない話はOSのアップデートは使いやすくなるからとてもいい事だからすぐにやった方がいいと宣伝されている事。
まあ、半分は嘘だよね。古いものが残っていると先に進めないんだよ...。
現在のクライアントOSは、巨大なプラットフォームのパーツの一部として理解したほうが正しくて、古いパーツが残っているとツライんですよ。
そして「サービスを受けるための道具であって、あなたが何でも好きにできる機械ではないです」みたいな世界になりつつあって、ちょっと問題と言われてもいる。
これはかなり困った傾向なんだけど、全体としての流れはあんまり変わりそうにない。
オブジェクト指向好きですな...。ここではオブジェクト指向は特に気にしなくていいですよ。
とてつもなく複雑なことをやっているために、すべてのバグを潰すことはコストが高すぎてできないんですよね。
それよりバグは未来を先取りするコストと考えて、本質的に価値のある機能を増やしていくというのが基本的な方向になっている。
だからパソコンはたまに不具合を引き起こすんです。しゃーない。
しかし中途半端に理解している老人などは、そんなことじゃ分からん。自分に分かるように説明しろと言い出す。
説明は出来る。しかし相手はイライラするし理解されない。よって説明をしてはいけないという状況に追い込まれる。
ここでどうすればいいのだと理解不能に陥る。
まあ、説明って得てして難しいよ。しゃーない。
そのとおりです。
オープンソースのプロダクトなら原理的には調べられるけどね。Androidとかはオープンになってる。
それを許容することで先に進んできているという事実は受け入れたほうがいいと思う。
「把握・理解可能な範囲」に留めていたら、数十年前のコンピュータの世界から抜け出せなかった。
deep learningの世界ではそれがより一層進むかも。この辺は詳しくないけど。
ここでの「理解」についてはそのとおり。これはもう諦めるしかない。
これが常にある。IT関連は常に新しい情報が出てくるのでそれに送れると無知になってしまう。
なんでこんなことも分からないんだとか言われ放題で、IT系の企業に努めている人は常に新しい知識を入れられる
面倒くさがらない人が向いている。
「面倒くさがり」の方が問題に気づいて「頑張って面倒じゃなくする」ことができるので、プログラマにとっては美徳なんて言われますけどね。
同時にくじけないとか諦めない、しつこいみたいな素養は必要かも。
応用まではとろうな。がんばれ。
このへん自分も知らんですよ。べつに全部知っている必要はない。
(追記: はてな記法の引用すらもさっきまで知らなかったしな!そんなもん)
層の構造をとっているということと関係があるんですが、仕様が変わると、その上に乗っているものを全部なおさないといけないんですよね。
でも革新のために互換性を捨てなければいけないケースも多い。このへんはハードでもソフトでも同じ。
そして、メンテのコストが上がっても使い続けたほうがトータルで安上がりという場合は、古いものが残ってしまう。
あるいは「(多少の問題はあっても)動いているものは変えるな」という経験則から意図的に残す場合もある。
西暦2020年にもなって、プログラミングが簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。
というかプログラミング言語自体多すぎる。ソフトウェアはデファクトスタンダードのモノ程度は知っているが、
ぜんぜん完成していない荒っぽいものを目にしているのだと理解したほうが的確。
それなのに毎日理解のできないパソコンやスマートフォンを使っている。
オブジェクト指向のおかげ様だがオブジェクト指向に対して無性に腹が立つ。
自分の全く知らない場所でいけしゃあしゃあと演算を行い、そして結果を出す。それも大半が正しい結果で
利便性が抜群だ。些細なミス(バグなど)はあるが圧倒的に利便性が勝っている。
そんな道具に踊らされている自分が滑稽だ。理解できない愚かな自分は正に機械の奴隷のようだ。
本当に理解できない。辛い。
勘違いしてはいけないのは、それらはすべて先人の努力の蓄積によって成り立っているということ。
「よくわからないけど存在している道具」ではなくて、信じられないほど複雑だけど、多くの人々の行動によってなんとかかんとか実現した道具なんですよ。
「オブジェクト指向のおかげ様」じゃないんです。(もちろんオブジェクト指向というのも大きな発明の一つですが)
そしてブラックボックスとして使うのは多くの場合正しいです。そこは諦めましょう。
でもエンジニアとしての立場からは、その裏に隠れているとてつもない技術や思考の蓄積に感動してほしいなと思う。
人類がこんなもん作れたのって、かなりすごいよ?
働いたらお金を返すと言うことで買ってもらった。(ちなみに本当に返した。うちの親はそういうことをきっちりノートに書いている。)
ゲームを作るにはドットを書かないといけないし、作曲も必要だと思っていた。
そして、高校の音楽の先生が作曲をする人で、授業で作曲があった。(普通の地方の公立高校である。)
そういった経緯があって電子ピアノを買ったのだった。
今思えば、別にピアノを習っているわけではなく(別の楽器は習っていたが)何も弾けないのによく買ってくれたものだと思う。
基礎練もせずに定番の曲とかエヴァとかジブリとかを練習していた。
ゲームを作りたかったので、もちろんRPGツクールはやっていたし、音楽ツクールかなでーるもやっていた。
そんなときに買った電子ピアノには、フロッピーディスクに曲を保存できるようになっていた。
そして、当時使っていたであろうフロッピーが刺さったままになっていた。
使い方を忘れたので電子ピアノのマニュアルをダウンロードしつつ(良い時代になったものだ)何か曲が入っていないかロードしてみた。
すると、8〜16小節ぐらいの曲が2曲とジブリの曲が1曲入っていた。自分が録音した曲である。
自分が作った曲は、基本的にゲーム用なので短い曲かループ用である。
それらを聞いていると、ふつふつと上記のようなことを思い出して非常にノスタルジックな気分になったのであった。
電子ピアノを買ったときはパソコンを持っていなかったし、知識もなかったし、フロッピーが何なのかあまりよく分かっていなかった。
いや、当時もMIDIで他の機器と互換性があると説明されていた気がするが、それがどういうことなのかよく分かっていなかったのだ。
当時のフロッピーディスクはボロボロでいつ壊れてもおかしくないので、新しいフロッピーディスクを買った。
PCでも読み込みたいので、フロッピーディスクドライブも買った。
一時はMIDI作りにハマっていた(そのときは電子ピアノのことはさっぱり忘れていた)ので、作曲のソフトも少しは使える。
フロッピーディスクを買ったことで、ピアノで曲を弾く → MIDIで保存する → PCで楽譜として開く、ということが20年越しに出来るようになった。
今となってはピアノを弾くこともないし、曲を作ることもない。(Scratchで簡単なゲームは作った。いい時代になったものだ。)
両機種とも今世代は前世代のブースト互換が来た以上、機種移行のハードルは超高い
多くのコンソールゲーマーにとってゲームパスの本数<<フリープレイとPlusコレクション含めたPS4の保有ライブラリになるので、その点での魅力がとても弱い
しばらくゲームから離れていたという事で知らないのだろうけど、PS+加入者に毎月配布されるフリープレイタイトルはもう200本
なら新作はどうかといっても、今年のGame of the Yearの候補やTwitter等で流行ったものを見ればXBOXがかなり見劣りすることがわかる
一眼レフの落ち込みが凄く、撤退する企業も出てきて、このまま市場が消えていきそうだ。
Webが出始めた頃だと写真のクオリティによって変わるので、綺麗に撮るために一眼レフに需要があったのではないだろうか。
それがフォトストックで探してきたのとアクセス数が変わらなくなったのではないだろうか。
YouTuberで動画の需要はあるし、スマホで撮ったのと差別化もできているが、動画編集は手間がかかり過ぎるし、Webサイト以上に素材が必要となる。
結果、ゲーム実況というのに落ち着き、ゲームという盛り上がる演出が既にされた素材を組み合わせて儲ける方が楽だと気づいた。
映像素材、演出、BGM、テロップなどを1人で一から作っても広告収入は得られない。
見てる側はそこまでのオリジナリティなんて求めていないのだ。
アイドル業界だとチェキが流行っているが、あれは画像に価値があるというより、手渡ししてもらえるとか、
チェキも儲かるから買われているのであって、儲からないなら費用がかかりすぎるので減ってくだろう。
スマホと一眼レフを比較で、数値化しやすい性能面が比較されがちだが、スマホは端末割がある。
携帯電話の時からそうだが、端末割でかなり消費者の価格基準がおかしくなっているのではないだろうか。
「スマホならこの価格で出来るのに」というのが基準としてできてしまった。
割賦で買えるスマホと、現金で買う一眼レフというのも違うだろう。
スマホのように熱が多少出ようが高速で処理ができ、かつ外付けバッテリーで対応してくれるハードと、
熱は出せず、大きなバッテリーを内蔵できない一眼レフで差が出ている。
じゃあスマホと合体できるようなハードにすればいいじゃんというのもあるが、結局データ転送するIFだったり、
2年置きに交換するスマホと更新タイミングを合わせられない一眼レフとで互換性が取れない。
あと自然な色が出るのを強調していたりするが、ディスプレイが一体となっていて、表示される色までコントロールできるスマホの方が一歩上だった。
普通の人はディスプレイをキャリブレーションなんてしないし、わざわざそれ用に万単位のお金は使わない。
Apple製品を買う理由の一つに、中古での値下がり幅が小さいというのがある。
買う時にこのスペックだったら1年後の新作が出る前に価格はそれほど下がらないだろう、といったのを考えるだろう。
M1チップが載ったMacの8GBを見て、今時8GBか、という素直な意見と同時に、8GBだったらすぐ価格下がりそうだなというのがあるだろう。
一眼レフだと新作が出たら10万下がるといったかんじで、最低価格は安定するが、ハイエンドの価格急落が激しい。
新作のたびにそれだけ負担するのはできないな、となる。
しかも組み込みとして独立しているので、1年後のOSアップデートで重くなって使えなくなるといったこともない。
他にも理由があるだろうが、買い替えサイクルが長くなって市場が衰退していく。
OCNモバイルはドコモグループで、近々UQやワイモバに近い立ち位置になりそうだけど現状は評判良いMVNOだぞ
まあ俺は今やちょっと時代に遅れ気味だなあと感じつつもキャンペーンで月額下げながらIIJmio使ってる
機種自体は日本ブランドに特にこだわりがないならおサイフ必須ならOppo不要ならXiaomiでいいと思うぞ
このへんのメーカーのミッドレンジはコスパ異常だから下手に業者に修理頼むくらいなら新しいの買える値段だし使い潰せるから精神衛生的にも良い
ちなみに俺は電池もち悪くなった親のiPhone6やSEを分解してバッテリーをAmazonで買ったYarbarの互換バッテリーに換装してたりもする
どちらも交換して数年経ってるが電池持ちもだいぶ改善して不具合もないようだから自分で替えるならおすすめのブランドかな
自身は'17に個人輸入したXiaomi機を3年ほど大事に使ってるけど特に何も悪くなっていないから現役
仮に電池やパネルなど壊れても個人輸入できると修理部品も安く手に入る、親の修理では急ぎだったからAmazonで買ったけども
Intelは過去のしがらみがあるのはわかるのだが、しがらみを気にしなければ、そこまで性能上げられるものなのだろうか。
また日本で互換性気にしないCPUを作ったら性能上がる余地があったのだろうか。
CPUのアーキテクチャなど話題になるが、いざ作ろうとすると資料がない。
ソフトから見えるアーキの解説は多いが、ハード目線がないのだ。
大学でCPU実験をした人なら分かるのではないだろうか。ALUは作れても、他が作れなかったりしないだろうか。
富岳が高い性能が出てたが、多くの人にとってArm凄い、だ。
富岳がこれだけ結果を出せたのだから、日本の産業界から導入が進むとか、ソフト開発の人が参入するなどがあれば、
また違った流れになるのだろうが…。
買って使ってみた後に、こんなはずじゃなかった、みたいなやつ。
1. USB/Thunderbolt 周辺機器の互換性の懸念
何千、何万とある周辺機器を、Appleだけで検証するのはまず無理だろう。
iPad Proで使えたものは恐らく大丈夫だろうが、それ以外はどうか。
特に自身が必須と思っている周辺機器が使えないとしたら大問題。
参考 https://japanese.engadget.com/jp-2019-10-26-ios-13-macos-catalina-6.html
その状態で更にApple Silicon版、という大きな追加要素が加わることになる。
例えばある機能において、Intel版では正常動作しても、Apple Silicon版では動作異常、という可能性はあるのでは。
あまり不具合を聞かなかった前バージョンのRosettaとは、動作の仕組みがかなり違うので、個人的には気になるところ。
さすがに有名どころのアプリは大丈夫だろうが、それ以外はどうか。
最近だと、MacBook Pro(2020) 13インチの動画編集アプリ(Final Cut Pro 等)の不具合が話題になった。しかも最初の頃は問題なく、使っていく内に徐々に調子が悪くなるという時限爆弾であった。
参考 https://gori.me/macbookpro/127174
5. (MacBook Airのみ) サーマルスロットリング
MacBook Proがファンを内蔵しているということは、最高性能を引き出すには本来ファンが必要ということになる。かつサーマルスロットリングに関しては、悪名高いMacBook Airの筐体である。
参考 https://gori.me/macbookair/125873
どの程度かは未知数だが、ゲームや動画のエンコーディング等、高負荷な状態が続くとサーマルスロットリングにより速度低下が起こるのは想像に難くない。
例えばあるソフトウェアメーカーが、Apple Silicon MacにはiOSアプリを使わせないという選択も可能。
参考 https://www.gizmodo.jp/2020/11/apple-silicon-mac-ios-app.html
ただそんなことも知らずに、iOS/iPadOSのアプリは全て動作可能と思っている方もいるのでは。
またこれは余談かつほぼ冗談だが、iOSアプリをApple Silicon Macで起動した後、画面をタッチ操作できないことに気づいた、みたいな方もいないとも限らない。
もしかして知らない方もいるかもしれないので。SoCである故、99.999%メモリ増設不可である。
参考 https://ringosuki.hateblo.jp/entry/Bye-bye_Intel%2C_Hello_Apple_M1
プラス8GBで2万円は高いので後で増設すればいいやと思い、8GBのまま購入した方は後の祭りである。
8. 原価率
莫大な研究開発費や広告宣伝費等がかかっているはずなので、本来あまり意味がないが一応。
IntelからCPUを購入する必要が無くなったので、本来値段が安くなるはずなのに、あまり安くなっていない。
iFixitあたりから製造原価を公表されて、マジすか、みたいに感じてしまう方もいるのでは。
以上、思いつくままに書いてみた。
1から5は個人的な懸念事項、6と7は確定事項かつ注意事項、8は余談である。
懸念事項として書いた内容を含め、不具合は起こってほしくはないが、初物である故まったく不具合がないというのは難しいだろう。
赤ちゃんかよ👶
下記のようにガチでファミコン実機/互換機用の新作を作るわけじゃなきゃ擬似的にやってんだから、
何したってスーファミより上に決まってんだろ。ついでにどう見てもファミコンモチーフじゃん
https://news.denfaminicogamer.jp/news/180907c
そもそもファミコンは特殊チップとか基盤からとか当たり前なので
興味がなきゃ知らないのは当たり前だと思うけど嘘ゴリ押す理由ナニよ?
父ちゃん母ちゃんがゲーム好きで家にファミコンもあった(わざわざ捨ててない)
歳の離れた兄弟・従兄弟がいたのでファミコンもあった(わざわざ捨ててない)
ある程度大きくなってから、ファミコンブーム・レトロゲーブーム・エミュブームに乗った
そういうヤツがいたら困んのか?