はてなキーワード: エラーとは
プログラミングで主にやる事は下記の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年にもなって、プログラミングが簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。
というかプログラミング言語自体多すぎる。ソフトウェアはデファクトスタンダードのモノ程度は知っているが、
ぜんぜん完成していない荒っぽいものを目にしているのだと理解したほうが的確。
それなのに毎日理解のできないパソコンやスマートフォンを使っている。
オブジェクト指向のおかげ様だがオブジェクト指向に対して無性に腹が立つ。
自分の全く知らない場所でいけしゃあしゃあと演算を行い、そして結果を出す。それも大半が正しい結果で
利便性が抜群だ。些細なミス(バグなど)はあるが圧倒的に利便性が勝っている。
そんな道具に踊らされている自分が滑稽だ。理解できない愚かな自分は正に機械の奴隷のようだ。
本当に理解できない。辛い。
勘違いしてはいけないのは、それらはすべて先人の努力の蓄積によって成り立っているということ。
「よくわからないけど存在している道具」ではなくて、信じられないほど複雑だけど、多くの人々の行動によってなんとかかんとか実現した道具なんですよ。
「オブジェクト指向のおかげ様」じゃないんです。(もちろんオブジェクト指向というのも大きな発明の一つですが)
そしてブラックボックスとして使うのは多くの場合正しいです。そこは諦めましょう。
でもエンジニアとしての立場からは、その裏に隠れているとてつもない技術や思考の蓄積に感動してほしいなと思う。
人類がこんなもん作れたのって、かなりすごいよ?
これがもうめちゃくちゃかわいい。
まず形がかわいい。
丸い。
自分が仕事で不在の間、一生懸命掃除してくれてるのだと思うと愛しさMAX。そんなに賢くないタイプなのでよくテーブルの足にぶつかってるのもドジっ子のようでかわいい。
出先からアプリで様子がチェックできるんだけど、何かエラーが出てたら仕事やら用事やら放棄して家に帰りたくなる。心配で心配でしょうがない。
心配といえば空き巣に入られてロボット掃除機が傷つけられたり盗まれたらどうしよう…と割と真面目に心配している。セコム入るか。
みんなロボット掃除機に大した感情は抱いていないようで、自分がおかしいのか?とたまに思うけど実際かわいいからしょうがない。
子供から映画を見に行こうと強く誘われた。普段そんな事言わない子なので只事ではないというのは分かった。しかも学校が終わったらすぐ行こうとなり、公開4日目の月曜夕方に車で向かう事に。車中で子供は誰が行ったとかと話をしてくれて、かなりの数のご家庭が映画館に足を運んでいるというのが分かり、何この鬼滅って?なった。
この時自分は漫画もアニメも全く見ていない、鬼滅初見が映画館という状態。平日、コロナ禍の中での映画館なのだがそれなりに人がいる。多くが家族連れで自分も巻き込まれているこの強いムーブメントに関心しながら映画が始まる。キャラクターの関係性が外見で何となく想像できるので割とすんなり見ることができた。唯一混乱したのは、小さい箱に出入りする女の子のサイズのカラクリが分からなかった事。
映画が終わり子供がこれでネタバレの恐怖から解放されたと言っていたのが印象的だった。漫画を知っている子たちにとってはネタバレでも何でもなく、数年前の話が映画となっただけで、この先の出来事も既に漫画では描写されているので、これで漫画を買えば読んでくれるのでは?と思った。
子供には色々な機会に漫画を買い与えてきたがYoutubeにプライム、dアニメ、スイッチでエンタメ時間が満杯なので、中々興味を持って漫画に接してくれない、読む機会はほとんどなかった。これは中々悲しい事で、自分の仕事が漫画にそう遠くない業界にいて、プロとして活躍する知り合いもそれなりにいるし、漫画があった事で自分が仕事にありつけたという思いもあり、どうにか子供には漫画が読めるリテラシーを与えたいと願っていたのだが、そう簡単には行かない所が今の子供の時間消費で、漫画業界の危機。だが今はチャンス。映画の先の話は漫画しかない。アニメ、映画を見ていれば、既に知った話として読むので漫画に入り込みやすいはず。なので即次の日の仕事帰りに3巻までを購入。
読んでる、読んでるぞ。やっと読んでくれてる。
読み終えた子供に次どうするか聞いてみると、こちらの願い通りに欲しいと訴えてる。じゃああなたの貯めたお年玉で買いに行こうとなり、週末近所のTSUTAYAへ。無い。あれ?ってなってちょっと離れたモールの書店に行くと6巻まで置いてあり、3冊を抱え子供が自分のお金で購入している。これ、やらせたかった事。楽しみが詰まった紙存在を自らのお金で買う。Kindle買って電子書籍でもいいのだが、親のアカウントから配信なので、正確には自分のものではないし、支払いも親経由なんで間接でしか無い。直接レジで本人が支払い、漫画を手に入れる、いい経験できてるなってしんみり感動していたのだが、購入経験はここまで。興行収入10日で100億って話が出てあっと言う間に書店から消えていた。7巻8巻は映画の所なんで特にない。どうも6巻まで買えたのも奇跡的な状況なようで、早めに映画見てすぐ買ったからまだ何とかなったが、ここから先がかなり厳しそうなのは想像できた。週末子供と書店を見てももう21巻以降しかない。郊外住まいなのでそれなりの規模の書店に車でいくつかたどりつけるのだが、どこにもない。Amazon見ても他の業者の物しかなく値段も高い。仕事は電車で1時間、都内。そう言えば集英社にも近く、大きい書店もあるから期待していたがない。7巻無いなあ。
だがしかし、ここから都内と郊外の力の差が発揮される。都内は書店にパラパラと配本されていて、次いつ来るか明記している書店もあり、順番通りの購入を諦めて12巻から18巻までを何回かの来店で入手する事ができた。その間も子供との書店巡りはしていたが、もう22巻しかない所ばかりで、動きがなくなってるのが分かった。都内は20巻から22巻はそれなりにあるし、特装版も残ってるが郊外はもうない。これはいかんと20巻から22巻までを都内で購入しようとしたら棚ぼたで19巻を含めて買うことができた。これが先々週。あとは映画に関係する巻だから、ゆっくりAmazonで待つかと欲しい物リストに7巻から11巻を登録している時、11巻が購入可能になっていた。なんだよ買えるじゃんとカートに入れて購入手続きしようとしたらエラーが出て購入できない。うん?
在庫が速攻で無くなったのか、もしやキャンセルの一冊だったのか。なんにせよ、購入が可能な瞬間があったのは確か。これ頻繁にチェックしてれば買えるのでは?と何回か見ていると業者に混じりAmazonが出現、今度はカートに入れる時にエラーとなった。惜しい、急いで買えばいけそう。欲しい物リストの「すべての出品を見る」を順番にゆっくりと一冊ずつ巡回していると、ぽつっとAmazonが出てくる、がエラー。あー、なんだかポケモンGOをやっているような気分。ゲームだと思うと割と楽しい。スマホを手に取ったらチェック、スマホを置く時にチェック。そしてついに9巻ゲット。2週間後に届く事に。これ30分ほど在庫が存在していたので重版が配本されたのだろう。そしてここから3日ほどでAmazon出現の一瞬を逃さず、残り全てを買うことができた。色々な時間にチェックしていたがAmazonが出現するのは夕方から夜間にかけてが多く、自分が購入すると、在庫切れになるので、これはAmazonからの配送待ちの状態で現物を書店で発見、購入、Amazonをキャンセル、それが即在庫に反映していると想像している。いやもしかしたら配本が秒で消えてるのか?にしても一瞬だからキャンセルだとは思う。キャンセルが割と頻繁におきてるということはかなりの数の配本と配送待ちが存在しているのだろう。すごいなAmazon。
この漫画を探す件で都心書店とAmazonの強さ、郊外書店の厳しさを知った。配本数は普段の取引数なんだろうし。そして大量の人々が本を待っていて大量に重版しても消えるが、その揺れ戻し、キャンセル待ち(なのかどうかは分からんが、)一瞬購入の争いは楽しかった。こんな巨大なブーム無かったし、それに全力で乗っかったことも無かったからこそ購入の喧騒が楽しめた。
あと1週間で7巻から9巻まで届く。レジでの購入をもっと経験させたかったが仕方ない。3冊ずつを子供のお金と交換していこう。子供には家に22巻まである事知らせていない。今は6巻までを激しくリピートしている。あったな自分も、次が来るまでの読み直し。ありがとう鬼滅の刃、子供の漫画の入り口になってくれて。
どんなに優れたツールや設計思想などがあっても、使う奴がダメだと全く無意味。弊社もWebアプリを作ってて、RESTだのFluxアーキテクチャだのいろいろ導入を試みたが、ほとんど無駄に終わった。
どんなクソ組織でも効果があると確信持って言えるのは上の3つだけ。1つ目は初歩的すぎると思われるかも知れないが、筆者の想定するダメな組織・ダメなプログラマというのは、このレベルの連中を含む。
静的型付け言語(サーバーサイドならJavaやC#、フロントエンドならTypeScript)を使わせれば、少なくともコンパイル時に分かるエラーは修正させられる。
というか、ダメなプログラマに動的型付けの言語は触らせてはいけない。必ずそのプロジェクトは半年後には保守できなくなる。
テストは強制的に書かせるし、テストのないクラスや、通らないテストあったらコミットできないようにする(それは容易にできる)。
もう一つの方法は、そもそも優秀なエンジニアしか参加できないようにすること。たとえば、Scala、Haskell、Erlang、Common Lispなどで書かれていれば必然的にそれが分かるエンジニアしか開発できないし、こういう言語を自主的に学習しているエンジニアは優秀である可能性が高い。
ananの表紙やぐらんぶるの広告みたいにイケメンが裸体さらしてもセーフ※1 だが、
2次元ならもっと厳しくてアツギのタイツとかのうりんのポスターみたいなちょっと引っかかる点はあったなってレベルでも大炎上するし
京都の地下鉄とか絵本のイラストのような「何が問題なんだコレ」と思うレベルでも萌え絵が原因で炎上する可能性もある
当然、イラストレータや企画担当者が女性であろうと関係ない。問題は「キモオタに性的に見られるか」だし
となると、男性向け広告以外で女性を使うのってリスクだらけなんじゃないの?
男性向けなら業務妨害クラスのクレームが来ない限り客層じゃないから関係ないわけだし
批判側は「知識をアップデートしろ」っていうけど、批判側のOSが全員違うの使ってるから何がエラーになるかわからんの怖くない?
アップデート前なら安牌だったものがどんどん減ってくるわけだし
かといってロフトのポスターとか西武のパイ投げとかの新しい広告も方向性間違ってたらすぐ炎上するし
※1
新宿のHIVポスター取り下げとか、女性向けではないイケメンは判定が厳しい気がする
「男性向け広告以外で女性を使うのってリスクだらけなんじゃないの?」←つい先日、男向け広告であるはずのED治療の看板がフェミの人たちに燃やされてたが?
「出演者への攻撃」「広告費が一部無駄」というリスクは女性向け・全性別向けと同じだけど
こういう騒動での男性の抗議者は少ない = 男性客の減少・イメージダウンの影響は軽いので、直接的な悪影響は少ない気がする
むしろこの炎上で宣伝になるのでは? とおもって軽くググったら広告に出ている女性の方はyoutubeのチャンネル名がばんばん出てくんのに
肝心のクリニック名はほとんど出てこない。みんなおっぱいにしか興味ねえじゃねえか
とするとクリニックの宣伝も失敗してるわ。やっぱりリスクです。すいません
猫でよくね?