はてなキーワード: 変数とは
の具体的になんて本(ネットのpdfでもよい)の何ぺージあたりからが元増田の問いにとって核心なのって話よね
てか、ラムダ計算よりむしろ記号論理学のほうが学問としての領域が気持ち広くなってね?
2. ラムダ項M, Nに対して (M N) はラムダ項。この形のラムダ項を適用(ラムダ適用)という。
(後略)
という定義があるんだけど、これに基づけば(x x)というのもラムダ項じゃないのって思ってた。
でもラムダ式で(x x)なんて形のは見たことないし、違うんだろうなと。
でも論理的にはなぜ違うのか全く納得できてないので(納得感が正しさにとって問題じゃないとはいえあえて言うが)(x x)だってラムダ式でしょって胸を張って言い張れる。
「Aかつ¬Aの証明を得ることができる」に対して、「いいや得られない。お前がそのように見せかけているだけだ」おれの計算(記号処理)手続きこそ推論規則に適っているし正しいと、反論されたら?
また、「そもそもここでいう『得る』とは」どういう意味か?と突っ込まれたら曖昧でなく『得る』ということが『得る結果の具体例ではなく』『どういうことか』記述できるのかという話です。
¬¬A→Aという規則に基づいた結果が
¬¬¬¬¬A→¬¬¬(¬¬A)→A
なんだよ!と言い張られる。もちろん常識的にはおかしいと思えますが、いまは突き詰めたことを言っています。
一般には、¬¬¬¬¬Aを書き換えるために、この記号列の一部分¬¬Aに着目して、規則からAと書き換えられるから、この結果を¬¬¬(¬¬A)に代入?して、¬¬¬Aに書き換えられる、という思考プロセスをとるでしょう。
しかしあくまでものとしては、ここで考えているのは¬¬Aではなく¬¬¬¬¬Aなわけです。
規則通りに書き換えられてない、言い換えるなら同じ規則を使っていないという主張に対して、そもそも同じ規則が適用できているということ、規則が同じとはどういうことか自体を定義や公理に組み込むことはできるのか。
矛盾や証明ということはまだその概念を記号列で示す余地があるが、規則が同じかどうかという定義もとい「規則」は厳密に定義可能かということです(無定義語として関係性の定義でもよい)。図形が合同か、みたいな合同の概念の定義など比べてもまたレイヤーが一段メタ的になっていて厄介というか。「違うのは自明じゃないか!」といっても、自明は説明できてこそ自明なのですが、ここでいう同じかそうでないかということについてはそれを根拠だてる定義は原理的に無理なんじゃないかと思えてしまいます。
さきほど『得る』という言葉に突っ込まれたら云々ということを言いました。
ブコメには「自然言語の曖昧さで数学をの厳密さ否定しようとしてるだけだ」というのがあります。
別に私は自然言語の曖昧さを問題にしていません。そこは問題の本質ではないです。
むしろこうした言葉は一般に疑いようなく明らかなものです。「左右」とか「これやあれ」みたいな近称や遠称の概念などもそう思われるでしょう。
しかしむしろこれらの概念には一切曖昧さはないという前提に立っても、これもごく単純な話で、曖昧でないからといって、いままでその概念を持ってなかった知性的存在に対して、「これ」や「左右」といった「概念」を、対面やジェスチャーを使えばいざしらず、記号列を用いて一意に定義できる保証はないよね、ということです。定義の厳密さを担保する必要条件が、記号論理学に基づくということにあるのなら、数学を厳密とのたまうかぎりにおいて、当然対面やジェスチャーではなく、これとか同じとかみたいなもっとも原始的な部類の言葉まで全て記号で一意に定義できることを示せなければならないでしょう。
あとあなたが↓のトラバと同一だと言ってくれたら以降↓の方のツリーに返信書いて一元化するのでそのつもりで
https://anond.hatelabo.jp/20240216215810
ちなみに関連しそうな話題として自分自身ラムダ式を勉強した経験があるけど
2. ラムダ項M, Nに対して (M N) はラムダ項。この形のラムダ項を適用(ラムダ適用)という。
という定義があるんだけど、これに基づけば(x x)というのもラムダ項じゃないのって思ってた。
でもラムダ式で(x x)なんて形のは見たことないし、違うんだろうなと。
でも論理的にはなぜ違うのか全く納得できてないので(納得感が正しさにとって問題じゃないとはいえあえて言うが)(x x)だってラムダ式でしょって胸を張って言い張れる。
分かってる人からみれば、そして俺にとっても¬¬¬¬¬A→Aと同程度にバカげた主張なんだが、そのわかってる人にとっても「この規則ならこういうことが言えると思うのに、なんで正解とされてるのと自分が思ってることが違うの?」ってなることはあるはずで、それはこの世で一番数学ができる人であってもありえること。この世で一番数学ができる人さえ規則を正しく適用できていないらしいとき、そもそも正しい適用とはなんだってなりそうに思うんだが。
青年向け漫画の編集者をしていた。といっても若い頃の話だ。都内にある編集プロダクションを辞めて田舎に帰ったのが36の時だから、おじさんの入り口に立った頃か。今では完全なるおじさんである。
働いていた会社というのは、講談社とか小学館とか秋田書店とか、そういう大手出版社ではない。あくまで編集プロダクションである。出版社と編プロがどう違うのかって……ざっくり言うと元請けと下請けだ。出版社が出版事業(今回だと青少年向けの漫画作りや商業展開)の企画をして、漫画家が作品そのものを作って、編プロは雑誌本体を作って、その制作過程で印刷所やデザイン事務所といった専門集団と関係することになる。
イマイチな説明になってしまった。一般社会の例で説明する。民法でいうところの委託(準委任契約)に当たる。公共建築の分野でいうと、公共機関の建築技師が新しい建築物のマンガ絵を作り、建築事務所が基本設計~詳細(実施)設計をして、出てきた成果物を元に大手建設会社が施工監理し、地元にある中小事業者が実際の土木建築作業をする。
自分が勤めていたのは、この例でいうところの建築事務所だ。受益者(国民=漫画読者)の希望に応えたい組織があって、そこから依頼を受けて動いている関係会社のひとつ。そういうアナロジーだ。
出版社との役割分担は、そこまで分離しているわけでもない。漫画編集者といえば、昔の手塚治虫ほかの自伝みたいに、漫画家とアツいやり取りをしているイメージがある。ああいう、企画経営と制作現場の間にあるような仕事は、出版社の社員が直接することもあれば、編プロが出版社(編集部)のオフィスを間借りして行うこともある。
前者の例だと、マガジン、サンデー、チャンピオンなどだ。コンビニや書店にほぼ必ず置いてあるレベルの漫画誌。大手出版社に総合職コースで入社した人が、(編集、取材、制作、資材、宣伝、マーケティング、総務経理人事その他事務)といった多くの部門のひとつである漫画編集部に割り振られて其処に居る。
後者の例だと、大手出版社が出している漫画誌でも、あなたが聞いたことのないやつもけっこうあると思う。そういうのは、編プロが出版社(編集部)の仕事を丸ごと請けて実施していることが多い。自分は、そういう会社で働いていた。職場自体は大手出版社の中にあるが、いわゆる委託先の社員だった。別の言い方をすると、親雑誌に対する子雑誌の関係。
ほかの長文増田の記事を見るに、あまりたくさん書けない仕様のようである。何文字までかは知らないが、文字数制限があると思う。本当は何万字でも書きたいのだが、あくまで自分が書きたいだけであって、あなたが読みたいとは限らない。一万字以内になるよう心掛ける。以下に、自分が関わった漫画家を2人だけ紹介しよう。最後に所感を述べて終わりにする。
その2人(A先生とB先生。どちらも若手)と私は、分水嶺のような関係(追記;わかりにくい表現ですいません。ブクマカのBuchicatさんのコメントのとおりです)だった。ある日、私が担当していた漫画家のA先生が新作の企画提案に来ていて、同じタイミングで別の編集者のところに持ち込みをしたのがB先生だった。その別の編集者が不得手なジャンルだったこともあり、A先生との話が終わった後で、私も一緒にB先生の作品を読んだ。
その後、編集部の責任者を交えた会議で、私が引き続きA先生の新作の担当者に決まった。新人であるB先生の担当になる可能性もあったが、そうならなかったのは、今の漫画界の一界隈にとって幸運なことだった。
A先生は、雰囲気が暗めだった。人間性まで暗いというわけではなく、心を開くと明け透けになるタイプだった。モードに入ると饒舌になる。
弊誌では、読み切りを何度か掲載したことがあった。アシスタント経験あり。小さい賞を取ったことがある。ヒット作はないが、若き漫画家としてはキャリアがあった。
画力が抜群だった。小学校や中学校で、学習ノートにフシギダネの絵とかをソラでゲームパッケージそのまんまに描く子がいただろう。とにかく天賦の才を持っていた。最小限の画量で、それでいて迫力と感情に溢れた1枚1枚を描く。そういう人だった。
難点は、マジメすぎるところか。少し前にやっていたアニメだと、チェンソーマンに登場するアキくんか(少し前……?)。とにかくマジメだった。いや、やはり『直向き』に訂正する。
A先生は、少年誌に見合わない重たいテーマに挑むことがあった。今でもそうだ。彼のマンガには『緩さ』がない。それもいいところなのだが。私は好きだった。はっきりいって。が、読者の傾向に合っているかは微妙だった。
子どもの頃から漫画が好きだったらしい。中学生の頃のイラストを見せてもらうと、俄然キャラクターへの愛に溢れる作画を見ることができた。中学生らしい、プロには程遠いクオリティなのだが、しかし見ていて違和感がないというか、自然にくっきり入ってくる。
私という人間は、具体例で物事を説明する癖がある。上の「中学生らしいイラスト」を別の事例で表現すると……「うるせ~!!知らね~!!FINALFANT ASY」(短縮URL:https://x.gd/L5cc4)だろうか。以前、いつぞやかのid=pptppc2さんのブックマークコメントがきっかけで元ネタを知ることになった。
あの時のA先生のイラストは、ベルセルクのセルピコだったと思うが、力強い表現だったのを覚えている。セルピコがファルネーゼを抱きかかえて、
「申し訳ありません 道案内を頼まれまして 少し席を外していましたもので」
と言うシーンの模写だった。
さて、そんなA先生だったが、ある時これまた重量級のテーマで描きたいものがあるという。先ほどの、編集部での新企画提案の話だ。
その際、A先生からプロットをもらい、私のデスクで拝見させてもらったところ……うちの雑誌では持て余しそうだった。作品の質が低ければ普通に打ち切りになりそうで、作品の質が高くても――弊誌の売上規模だと会社グループ全体の機会損失になりそうだった。私の前でパイプ椅子にかけているA先生は、不安げな面持ちだった。
内部の話で悪いが、例えば「甲」という雑誌の亜流の「乙」という雑誌があるとする。ビッグコミック(オリジナル、スピリッツ、スペリオール)みたいな感じだ。この時、甲と乙に明確な上下関係があった場合、乙誌に掲載された漫画が甲誌に引き抜かれることがある。その際、甲誌の編集部から言われるのが、
「なぜうちの編集部に見せなかった?」
という意見だ。これは、ストレートに言われる場合もあれば、暗に言われる場合もある。だが、事前に上流の雑誌に見せていたとして、多くの場合は玉虫色の返事があるだけだったりする。
話を戻そう。この時の自分は、編集部の自分のデスクのあたりでA先生の次回作を見せてもらっている。確か缶コーヒーを飲んでいた。
自分としては、A先生のマンガを弊誌に載せたいと思っていたが、先ほど述べたとおり、後ろ髪を引かれる思いもあった。社会派の少年漫画というのは扱いが難しい。その作品が「あしたのジョー」の影響を受けているのは明白だった。「A先生であれば、きっと面白い作品にしてくれるのだろうな」という期待はあった。
うーん、大いに悩むところだ。どうしよう。思いあぐねていたところで、別の編集者から声がかかった。要約するとこんなところか。
「持ち込みに来た人がいる。私の専門じゃないので判断が難しい。門前払いにするレベルではないので、あなたの判断を仰ぎたい。上の人間は今出かけている」
要するに、自分の専門外なので判断できないよ、と言っている。ここも会社なので、編集者の上には当然上司がいる。その人達がいなければ同輩に相談するのが基本だ(余談だが私は後輩だった)。こういう原則は一般の会社と変わらない。
その『別の編集者』というのは、儚い感じの純文系が得意なタイプだった。一番わかりやすい喩えは……『はちみつとクローバー』みたいなやつだ。ああいうのが得意な人だった。
その時は、A先生との話が終わったら行くと告げた。それで、しばらくそのまま話を続けた。
「この作品はいい意味で重たいね。ちょっと考える時間がほしい」
と言って、その日は解散した。A先生は、「お願いします!」と言ってパイプ椅子を立ち、そのまま帰っていった。いつもだったら喫茶店でご飯をおごっている。
A先生は、『いい子』だった。あまり感情は出さないけれど、人間に対する愛を持っている。そういう子だった。私が当時、A先生にご飯を奢って、彼がおいしそうな表情で食べている時、私は幸せだった。A先生が幸福だと、自分も幸福だと思えた。A先生が漫画という手段で自らを表現している時、まるで自分もそれに劣らぬような喜びを得ていた。
ヘンな表現かもしれないが、例えば読者がA先生を褒めている時、自分とA先生との区別がなくなっているというか。彼のことが、自分のことみたいに嬉しかった。これは愛なのだろうか。
持ち込み部屋に行くと、別の編集者と、持ち込みに来た子が対面で座っていた(ちょこんと挨拶をしてくれた)。自分が座る席には作品が置いてあった。綴じられていない原稿用紙がある。ページ数にして30枚ほどだった。もっと多かったかもしれない。記憶があやしい。
実際、B先生の作品は面白かった。コテコテの学園ものかと思いきや、登場人物それぞれに適度な制約があって、キャラクターも立っていた。これまでのキャリアを聞き取ったところ、作品が雑誌に掲載されたことがあるようだ。アシスタント経験もある。
絵の方は、自分がこういうのも大変失礼だが、上手な方ではなかった。どちらかというと、脚本や設定、キャラ作りが得手のように映った。当人が情熱を注いでいる箇所はすぐにわかる。キャラ絵が有名漫画家の影響を受けているとか、キャラクターの台詞回しがハリウッド映画風とか、背景や小物を手を抜くことなく全部描いているとか、そんな具合に。
光るものがある作家だった。これを見抜けないようなのはモグリ――そんなレベルで輝いていた。
私は作品を読み終えた後で、「ちょっと待ってね」と自席に戻り、少し残っていた缶コーヒーを飲み干して、思案を重ねつつ持ち込み部屋に戻った(どうするのが最良かわからないケースだった……)。
それで、テーブルではこういうやりとりをした。
私「イイ作品だと思います。特に、セリフ回しにセンスを感じます。掲載ができるとかここでは言えないけど、話は通してみますね」
B「ありがとうございます」
私「それで、担当はね……縁なので。あなたがするのがいいのでは?」
編「私よりもほかの人がいいと思います。もっと才能を引き出せる人が……」※小さい声で
私「いや、でも恋愛描いてるよ。エンタメだけどいいんじゃない」(こいつ、作家の前でアホなこと抜かしよって)
編「難しいです」
私「でもこれ、縁だよ」(意識が低すぎる……)
編「ほかの作家さんも抱えてるので。いっぱいいっぱいです」
私「わかりました」(トラブル回避のため後で編集長に説明しとこう)
B「すいません。僕の作品はどうなるんですか?」
私「後日連絡しますね。必ずしますから、それまでは他誌への持ち込みは待っていただけますか」
B「あの、はい。できればですが、早めでお願いします。一週間くらいでなんとかなりますか」
私「なんとかしてみます」
作品そのものと、作家プロフィールと、付属資料のコピーを取らせてもらって、彼には外で缶コーヒーを奢った。ビルの入り口まで送ったところまではいい気分だったが、正直、身に余る事態だった。
持ち込み作家の才能がありすぎるのも考えものだ。嬉しい悲鳴というやつ。誰が担当に付くかで今後の雑誌の売り上げに影響がある。重大な意思決定ということになる。
最悪、『進撃の巨人』の時みたいに優れた作家を逃してしまう可能性がある。あれも、実際は諌山先生は門前払いではなく、週刊少年ジャンプの担当が付くか付かないかの微妙なラインだったらしい。それで、誰が担当になるかを押し付けあっている間に諌山先生が他雑誌に持ち込んでしまった、という話が業界団体の公的な飲み会で囁かれていた。
B先生についてだが、一週間後に担当編集が決まった。「別の編集者」でもなく私でもない。当時、若手のひとりだった20代の子が任されることになった。編集部のトップを交えてB先生の原稿のコピーを読んだのだが、「若い感性が光る。年齢が同じくらいの人と組ませる方がいいのでは?」という結論になった。
その20代の子は、上の組織からこっちに出向してきている子で、いわば武者修行の身だった。一流大学出で、本社のプロパー社員。いわゆる総合職である。
最初は、私に選択権があった。B先生の担当になる道もあった。だが当時の私は多忙であり、月に何度も会社に寝泊まりするレベルだった。新人は抱えるべきではない。しかし、才能のある子だから迷いがある。
A先生のこともあった。彼のあの作品を世に出してやりたい。もっと有名にしてあげたい。そんな想いがあった。
私が悩んでいるうちに、例の20代の子が手を挙げたのだ。私としても、彼のやる気と知性と直向きさは買っている。諸手を上げて賛成した。
今思えば、正しい選択だった。もし私がB先生の担当になっていたら、面白い恋愛エンタメを楽しめる読者の数は減っていただろう。これでよかったのだ。
以後のB先生は、例の持込漫画のブラッシュアップを続けた。翌年には、晴れて弊誌に第一話が掲載されることになった。さらに以後は、担当編集とともに二人三脚で躍進を続け、イケイケドンドンの勢いを保ったまま、一度も息切れすることなくスターダムに上り詰めた。今では漫画家として世に知られている。
上で挙げたA先生の意欲作は、読者層に合っていなかった。それでも、高い画力とシナリオ構成の上手さがあったのだろう。その意欲作は、連載期間を積み重ねる度にファンの数が増えていった(業界的には、Amazonの第一巻のレビュー数が人気の代替変数になることが知られている)。
今では、A先生は親雑誌で連載を勝ち取るまでになった。去年だったか。彼の作品をコンビニで立ち読みする機会があったのだが、やはり突き抜けた画力だった。週刊連載であそこまでの画力というのはまずない。
2024年現在、私は東京を離れて田舎で暮らしている。地元の町役場にUターン就職して、実家の農業を手伝いながらスローライフに近い生活を送っている。
実は、編集者だった当時、働きすぎて病気になった。ある日、下腹部の辺りに違和感を覚えて、血の塊のようなものが血管を這っている感覚があった。病院に行くと、「遅くても明日中に入院しなさい」という医者からの指導があった。
それなりに重い病気にかかってしまった。一応は死亡リスクもある。数か月ほど入院した後、どうしようかと考えて、考えて、考えて……編集部に復帰後は、労働を最小限にしつつ転職活動をスタートした。
A先生については、幸いだった。彼の意欲作とは最終回まで付き合うことができた。私が退院した後、無事完結を迎えることができた。あしたのジョーに比べればハッピーエンドだった。
入院中に、A先生とB先生がお見舞いに来てくれたのを覚えている。ほかの編集仲間も来てくれた。A先生は、テンションが低めで、何を考えているのかわからないこともあるのだが、人間への基本的な愛というか、思いやりがある人だった。
もう40才を過ぎている。はてなユーザーの中では平均的な年齢か。思えば齢を重ねたものだが、当時の日々は今でも夢の中に出てくる。
若い頃から編集者をやってきた。身体を壊さなければ続けていたのかというと、多分そうだろう。でも、今の生活も悪くないと感じている。自分語りはここまでにして、締めにしよう。
もしあなたが、Webでも紙媒体でもいい。気になる漫画作品を見つけたとする。面白いものを見つけたと感じたら、ひとまず買ってみるのがいい。Webだと1話単位で売っている。
ひとかどの漫画家というのは、自らが産み出すモノを本気で高めにいっている。あなたのフィーリングが合ったのなら、ひとまず1巻だけでも読んでみる方がQOLが高まると思う。ハズレを引くことはあるだろうが、アタリだってちゃんとある。人生は運試しである。
pythonコードの速度のボトルネックを見つけるにはline_profilerが使える。
だが一部の開発者は「速度に凝り過ぎるとコードが読みづらい」という。
これには異論がある。
大幅に速度を改善するようなコードの改善は、むしろコードをシンプルに保つ上でも重要な働きがある。
傾向としては、マルチプロセッシングなどを使わずに速度を改善した場合は、プログラムの長さは減少する。
速度を改善すれば、特定の出力をするコードの最小長(コルモゴロフ複雑性)に近づく。
速度改善によってわかりにくくなるという人は、数学ができないのかもしれない。
物理学では、変数を単一の文字で表すことが多いが、こういうのに慣れていると「シンプル」の概念に差が開く。
こういった科学的な「シンプルさ」を理解できない人に対して、意味を説明する形で変数名を決めても、結局コードは理解できないだろう。
確かに、ビジネスドメインに近いコードであれば変数名をドメイン語に合わせるのがわかりやすい。
しかし「ボトルネックを改善しなければシステムが要件通りの速度にならない」ようなケースでは、数学的なコードの方がわかりやすくなるのである。
1. **条件式の曖昧さ**:JavaScriptでは、`if (value)` は `value` が「truthy」(真と評価される値)である場合にのみ実行されます。しかし、このコードは明確ではありません。`value` が何を意味するのか、どのような値が期待されるのかがコードからは読み取れません。`null` でも `undefined` でもないことを確認するには、より明確な条件式(例:`value !== null && value !== undefined`)を使用する方が良いでしょう。
2. **ログメッセージの不明瞭さ**:ログメッセージ `'null でも undefined でもねーわ'` は、`value` が `null` または `undefined` でないことを示しているようですが、これはコードの実際の動作と一致していません。`value` が 0、空文字列(`''`)、または `false` の場合でも、この条件は偽(false)と評価されますが、これらは `null` または `undefined` ではありません。
3. **コードの可読性**:コメントやより記述的な変数名を使用することで、コードの意図や動作を明確にすることができます。現在の状態では、このコードの意図を理解するのが難しいかもしれません。
JavaScript でさあ
変数 value が null でも undefined でもない事を確認するのに
if (value) { console.log('null でも undefined でもねーわ'); }
これほんとやめろって。
おかげで value に 0 とかが入ってる時に、このコンディションが false になるわけだ。
色んな会社さんのコード見てきたけど、このタイプのバグ本当に多い。
昨年は、世界的にも有名な会社さんのフレームワークがこれでバグってた。
でももう既にシステムの一部は本番稼働しててフレームワークはいじれない。
仕方ないので value には一旦文字列の '0' を渡しておいて if (value) {~} の中の重要なロジックを動かして
(めっちゃ幸運な事に、数値 0 のかわりに文字列 '0' でも正しく動くような、型について緩いロジックだったから)
その後で改めて value に数値 0 を入れなおすという、きったないハックで誤魔化した事もある。
ITエンジニア達がこぞってクソコードの話をしている。他人様が書いたコードにいちゃもんをつけて悦に入ってるのだ。
書いてあるコードの変数名にいちゃもんを付けたり設計にいちゃもんを付けたりするのが奴らの生業だ。
Xでは今その話題で持ちきりである。クソコードだと揶揄するのは構わないが、ところでお前らはちゃんと風呂に入っているのか?
他人様にいちゃもんを付けているのにまさか、風呂に入ってない奴なんていないよな?
リモートワークだからと胡座をかいて、稀にある出社日に洗ってない犬のような匂いとカビ臭い服の匂いをオフィス中にプンプン漂わせてないよな?
コードの重複があるわけでもない状況で、コードを関数ごとに分離するメリットデメリットを知りたいという話ですよね。
コードの重複がある場合に関数などに切り分けていないと、同じコードを何度も書くことになり、不具合があった時にコピーされたすべての個所に変更が必要となるというデメリットがあるので理由がわかりやすいですが、重複が無いとその点が不明確ですね。
画面に収まらないサイズのコードは複数の関数に分割するのが一般的だとは思います。
理由は元増田も書かれている通り、長いと理解の限度を超えるからです。
コードは意味があるまとまりで短ければ短いほど理解がしやすいと思います。
グローバル変数を使わないようにすると、入力・出力が関数を読むだけで明確にわかるので、さらに理解がしやすいです。
また、関数に分けておけば、関数が仕様通りに動くかの確認するユニットテストも簡単に書けます。
ユニットテストでは関数がさらにほかの関数を呼び出している場合、呼び出される関数の代わりにテストダブルを用意することもあります。
分割して、複数の関数を呼び出すようにすることのデメリットは、
下手糞が切り分けるとなんでそういう切り分けになったかわからないところで切り分けられてかえって可読性が損なわれるとか、
関数の機能が拡張してより多く・あるいは少なくの情報が必要な時に関数インタフェースの変更が必要になることとか、
関数を置いているファイル内の場所を変えたときにバージョン管理システムが追っかけてくれないことがあるとか
くらいでしょうか。
いずれにせよ、分割するメリットの方がデメリットを上回ることが大半なので、大抵は機能ごとに分割して小さい関数を作り、それをメインからは呼ぶようにすると思います。
まず、関数の名前をやっている工程を表すものにすることですね。
「データの取り込み」 とか 「データの突合せ」とかを明示すると、それを呼んでいるということはそういうことをしてくれると思うので。
また、関数が何をしてくれるのかも関数のコメントとしてつけておくとよいと思います。
例えば、
filename引数で指定されたファイルからデータを取り込み、JSONフォーマットで返す
返値: JSONフォーマットされた取り込まれたデータ。例: [{'employee name': '山田 太郎', 'employee id': 1}]
例外: filenameを開けない場合はFileOpenError、JSONにコンバートできなかった場合はConvertError
みたいなコメントをつけておくと何をする関数なのかわかるので、その機能を調べたいとき以外は読まないでいいかなと。
あと、コードを連続で読みたい場合、ソースを解析してタグジャンプをつけてくれるツールやらIDEやらを使うことが普通だと思います。
これはどういう意味でしょうか?同じものを表すのに関数ごとに別の変数名を付けているとか?
もしそうだとしたら、使っているプログラミング言語の制約やプログラミング規約によるものなのでしょうか?
ある関数のローカル変数が他の関数のローカル変数に影響を与えることは無いはずなので、ローカル変数は大抵適当な名前が付けられるイメージです。
今時のプログラミング言語なら変数のスコープが関数の中にとどまるような書き方ができると思うのですが。
関数インタフェースを定義し、そこにいちいち引数を書くのが面倒というなら...まあ、それは必要税って感じがします。
そこに引数を書いておくことでこの関数が何に影響されるのかわかるので。
参考までに。
複数の機能で成り立っている長いコードを分割して実装することののメリット/デメリットを教えてほしいです。
「コードの分割」が指してることを大まかに言うと、「メインの関数は各機能を呼び出すだけで、実際の機能の部分はサブルーチンとしての関数(って表現が正確かも謎)に持たせ、サブルーチンを順次呼び出すことで総体としての機能を成す」ような方式にするってことです。
より具体的に言うと、1.データの取り込み2.取り込んだデータの突合3.帳票の出力の3手順を別々の関数とし、メインの関数から1,2,3の手順の関数を順次呼び出すという具合です。
上記の方法と、全ての機能を詰め込んだ一つの長い関数にする方法と、どちらが結局よかったのかなと思っているんですね。
今のところ私は自分のわかりやすさのためにコードを分割する書き方をしています。理由は、1機能1関数で分けておいた方がステップインじゃないですけど「ここまでは完走できた」の切り分けがしやすいのかなーと思うのが一つ。もう一つは単純に上下に長くなっていくとどの変数がどれでと特定していくのが辛いってのがあるためです。
ただこの方法にも問題があると思っていて、一番はメイン/サブ関数間で右往左往するので今やってる工程が何なのかがよくわからん、他人が読むならなおのこと、ってことです。一応の対処として、メインの関数は目次的に「総体としてこのような機能を持っている、また分割した関数の機能はそれぞれこうである」とコメントアウトし、サブの関数にも「この関数はここからここまでの作業をします」とコメントアウトすることにしています。
あとは関数ごとに変数をいちいち定義し直すのがだるいみたいなのもありますね。グローバル変数は後々の修正とかのために使わないようにしています。
自分では思いつけてない部分でコード分割することのやばみってあるのかなーと思ったので質問させていただきました。近々退職する予定なので、他人への引継ぎって観点からどうなのかなと思っています。
以下自分語りです。語彙とか概念のインストールが足りないと適切な調べ方ができなくて困るんですねー。あと問題があることを認識できなかったり効率悪かったり車輪を再発明したりとか。
私は無学のバイトなんですが、あるとき上長から「暇なら適当にエクセルでも勉強しといて」と漠然と言われて、このVBAっちゅうもんを学べばええんか?と勘違いしたのが始まりでした。本当はセルの結合とか別のセルを参照するとか、エクセル方眼紙的なものをある程度作れるようになってほしかったらしいです。折角なのでなんとか役に立つものをと思って、ある集計作業を自動化させたところ、今後も暇なときはよろしくということになりました。
いろんなものを作りましたが何をどのように作るかから、その後の運用保守までほぼ一任してもらって大変面白かったです。しかしなにぶん仕様や実装方法について相談できる方がおらず全ては私の泥縄式学習術によって成り立っているという恐ろしい状態でした。体系的な知識や組織の経験知みたいなものが一切ないので自分がどこにいるのか、努力の方向性が合ってるのかも結果が出るまでわからない。先達のあらまほしきことなり。
それは人によるな
俺はマルチプレイで嫌な思いすることがあるジャンルよりもソロプレイ主体のジャンルの方が好きで10年20年と続けてる
交流必須なやつは本当に若いうち(せいぜい30歳前半くらいまで)しかできん気がする
俺がインドアで対象がゲームで交流必須なジャンルは20代前後が多いせいだと思うが
むしろ一人でやりこめるゲームほど自分で効率とか計算して好き放題にめんどくさい遊び方ができるのが良い
べつにライトに遊ぶこともできるんだけどせっかくなら色んな要素を考慮してめちゃくちゃ複雑に考えながら計画立てて遊んだほうがやりがいあるだろ
めんどくさくなりすぎたら取り込む変数を減らしてガバ計算にするとか、ルーチンを省略するとかでライト寄りのプレイスタイルに修正すればいいだけだし
先日とある話し合いの場のような所に参加してきた。
そこは哲学的に議論しようというスタンスの集まりで、ある話題について色々と話したんだ。
どんなことを話し合ったのかは身バレしてしまうので詳しくは書けないんだけど、それでも話を聞いていて一つ思ったことがある。
x + 1 =
xは変数で、どのような数も入れることが出来る。このとき正確な答えを導き出すことは可能か?
当然、無理だ。
話を聞いていて、ふとそう思ったのだ。
そもそも答えのないものを哲学的と呼ぶようだし、人によって価値観は違うのだからxの数値は常にバラバラになってしまう。
それなら答えが出ないのも当然で、答えのない答えを求めたところで意味はあるんだろうか?