「スコープ」を含む日記 RSS

はてなキーワード: スコープとは

2019-04-01

anond:20190401222051

resultはともかくvalueいいの?

狭いスコープだったとしても使われたら嫌な場面多くない?

いや場合によってはvalue全然いいことも多々あるけどさ

新しい現場コードレビューがうざい

resultとかvalueって変数名にすると

もう少し具体的なものにして頂けませんか?とか言われる

スコープいか別にいいじゃんってのを言っても

いやあ、後で読むの大変になるじゃないですか?とか言われる

こんなのか一日中あるんだけど書いてて楽しくない

動けばなんでもいいだろ

2019-03-07

あたらしいウォシュレットの音

先月15年間使ってきたトイレを新品に交換した。

ウォシュレットも新しくなった。

新しいウォシュレットは、洗浄ボタンを押したときに、「ピシャッアッ」という妙に高い音とともに温水が放出される。

この音が何かに似てるよなーと思っていたけど、ようやく最近気づいた。

宇宙戦艦ヤマト波動砲を撃った時の音だ。

うちの波動砲ターゲットスコープの中心には、肛門がある。

2019-03-03

中国語技術書ジャンル分けの話

Amazon中国語の本のカテゴリーを見に行くと下のようになっている。

  1. テクノロジー
    1. 写真技術
    2. 建築
    3. エレクトロニクス通信
    4. 電気工学
    5. 軽工業手芸産業
    6. 林業
    7. 化学工業
    8. 冶金産業
    9. オートメーション技術
    10. 冶金および金属加工
    11. 機械器具産業
    12. 石油およびガス産業
    13. 油圧工学
    14. マイニングエンジニアリング
    15. エネルギー・電力工学
    16. 原子力技術
    17. 武器産業
    18. 情報科学と知能の仕事
    19. 車と交通
    20. 産業経済
    21. 産業技術
    22. 参考書
    23. 一般産業技術

本の内容をみた印象だが、日本だといくら本を読んでも実務との間に溝がありOJTで頑張らないといけないが、

中国本だと実務にすぐ使える印象がある。


写真技術普通に写真を撮ったりRAW現像する類のものだ。ストロボスコープのようなものではない。X線撮影はこのジャンルに入っている。

ライトフィールドのような計算機を使っての撮影も入っていた。


建築Autodesk Revit、BIMなど。コンクリート下水処理などもある。


エレクトロニクス通信は、FPGAPLC光ファイバレーザーなど。

日本と違う点だと、衛星からターゲットトラッキングするといった本がある。

Space-TimeAdaptiveProcessingというのがあり、Google検索かけたら英語がほぼなく中国語ばかりだった。

ステガノグラフィなどの暗号もそこそこ見かけ得る。

MATLABの本も定期的に出ている。

LTE-V2Xなどの無線系の書籍もある。MIMO、5Gの信号アルゴリズム実装など。


電気工学は、送電関係スマートグリッド太陽電池パワーエレクトロニクスなど。

品質管理事故防止についても目立つ。


軽工業手芸産業は、なぜかCNCが入っていたりすが、食品加工高分子など。

食品ハイパースペクトルで検出するもの食品トレーサビリティエビの加工技術微生物、精度保持技術食品大量生産する際の技術

3Dプリントもここ。光硬化樹脂。


林業ザリガニ繁殖方法と疫病予防があるのは流石と思う。鯉やガチョウやうさぎ、亀もある。

ぶどう野菜きのこなど商業的に育てるのに着目した本が目についた。


原子力に関しては、もう日本タブー化されていると思うが、普通にある。

原子力発電所のモデリングシミュレーションといったエンジニアリング寄り。


武器産業が一番違うところかと思う。

ミサイルシミュレーションや、弾頭のデザイン兵器開発のプロセス品質管理ミサイル誘導制御システム設計

武器テスト化学兵器毒物魚雷発射システム原理設計スーパーキャビテーション理論基礎、

砲兵弾道学、核兵器防護技術弾薬製造技術などなどガチ理論本がある。


情報科学は、検索エンジン関係がある。


車だと、AUTOSARの制御ソフト開発といったニッチものがある。

自動車コーティング技術タイヤ力学など。

トラック修理ように内部の電線回路図エンジン制御回路、シャーシ制御回路)もある。

2019-02-07

未来COBOLくらいの単純な言語覇権を握ると思う

変数スコープ概念が薄くて、データ構造配列くらいで、IFとループだけでロジックを組むみたいな。

記述が膨大で、静的型なのが欠点だけど、そこらあたりを克服したらすごいことになると思う。

オブジェクト指向言語を使ってる現場でも、オブジェクト指向らしい書き方をしてるところは皆無だし。

(世の中、イキってるWeb系の会社くらいでしかオブジェクト指向機能なんて使われてない)

オブジェクト指向やら関数型やら人類には難しすぎる。

2019-02-02

レーダー照射事案での「低空飛行」と防衛省

今回のスコープ

ここでは、レーダー照射事案での防衛省対応について述べたいと思います。「韓国の主張は正しいか」は論点しません。

「なぜ、韓国の主張を責めないのか」というご批判はあるかと思います。それは、極端に言えば、「韓国政府のことを考えるのは無意味」と思っているからです。

台風被害が出たとき、「原因は台風なんだから政府防災対策検証しても無意味だ」と言う人はいません。

それに近い感覚で「各国は自国利益のために動く。『そういうもの』なんだから日本政府がそれにどう対応するかの方が大事」というのが自分価値観です。

さらに、ここでは、「「低空飛行」問題への防衛省対応」に絞って考えます

もちろん、今回の事案の唯一最大の論点は「レーダー照射」です。しかし、その点については日韓双方の主張が食い違っており、また、防衛省がどのような証拠(=交渉材料)を握っているか不明です。

一方、「低空飛行」問題については、防衛省動画を公開したこともあり、基本的事実関係は、ほぼ明らかになっています防衛省対応について外部からでも評することが可能なはずです。

また、1月21日防衛省が「最終見解」を出した後に生じた「低空飛行」問題についても、ここでは述べません。

末尾に、「低空飛行」に対する日韓両国の発信を時系列でまとめましたので、そちらをご覧になりながら読んでください。

具体的な反論韓国論点そらしにハマる

韓国側の「威嚇飛行」の筋が通らないことは、各所で検討・指摘されているとおりです。

一般的軍事行動として危険性があるものではなく、また、過去の同じ行為に対する抗議がなかったことも1月21日防衛省によって主張されています

(ただ、これについては、「人命救助活動中だった」という反論があることは留意必要です)

そもそも、「威嚇されたかレーダー照射した」ならともかく、「レーダー照射はしていない。それはそれとして威嚇はおかしい」というのは主張として不可思議です。

韓国側としては、今回の事案の中で一定の「落ち度」が自国側にあったことを認識しており、それとの交換材料にするために持ち出したと考えるのが合理的です。

(その「落ち度」が、「レーダー照射」なのか「無線に応答しなかったこと」なのかはわかりません)

しかし、言うまでもなく、今回の事案の最大の問題は「レーダー照射」です。「(防衛省示唆するような形で)レーダー照射をした」ことが確定すれば、他のことは誤差の範囲です。

韓国側が「低空飛行」を持ち出しても、大した問題にはならないはずでした。ただし、威嚇飛行を論点として戦線が拡大していくと「どっちもどっち」という状況になりかねません。韓国はそれも狙っています

防衛省は、12月25日という比較的早い段階で、具体的な反論しました。結果、戦線は拡大し、韓国に付け込む隙を与えました。今日に至るまでグダグダが続く原因です。

本来なら、「低空飛行」はまともにとりわず、「我が国は適切に飛行していた」の一点張りで、「レーダー照射」のみを取り上げ続けるべきでした。

…というか、「韓国問題すり替えようとしてくる」ことぐらい、過去経験から、わかってたと思うんですが。

忖度リークに頼った広報戦略国際広報戦で後手に

防衛省12月28日動画公開した際、「参考資料」としてPDFファイルが公開されています

このPDFファイルの2ページ目には「航空法規における船舶航空機の離隔距離規定」として「航空法施行規則」「国際民間航空条約第2付属書」の引用が書かれています

しかし、この引用が、今回の事案にどう関わるのか、あるいは同時に公開された動画とどう関わるのかは、何も記述されていません。

今回の防衛省の発信は、この手の表現が非常に多いです。

この時点で、この事案は、国際世論に対する広報戦の様相を持ち始めていました。

公的な発信がなくても、国内メディアは、防衛省の言いたいことを忖度して、あるいはリーク等で得た情報から防衛省の主張を伝えますしかし、海外メディアが、防衛省のためにそこまで労を取ってくれるとは限りません。

国際世論へのアピールを考えたとき公的な発信は必須です。しかし、防衛省が出している表(末尾にURL)を見てもわかるように、12月28日から1月21日まで、約3週間にわたって公的な発信はありませんでした。

その間、韓国国防部は、1月4日動画で「軍用機には適用されない」と反論しています防衛省から、それに対する反論1月21日まで出ませんでした(その間の1月14日実務者協議があったというのはありますが)。

国際世論への広報戦としては、完全に後手に回っています

さらに、このことは、別の大きな問題を孕んでいます

国内メディア報道に触れていると、「日本はこれだけ主張しているのに…」という印象を受けますしかし、実際には、防衛省は「ほとんど主張してない」のです。上に書いたように、1ヶ月間、ほぼ沈黙し、その発信でも、主張が明確に述べられていません。

国際的な発信と国内向け発信に齟齬がある」ことは、「国際世論国内世論齟齬が生まれる」という事態を生みます

これは、非常に由々しき事態です。「国民国際世論から切り離された国」がどのような姿になるかは、古今東西、様々な例が思い浮かぶと思います

このことは、防衛省だけでなく、国内メディアも含めた大きな問題だと考えています

国際民間航空条約を持ち出す→自衛隊活動制限

防衛省12月25日に「低空飛行」への最初反論します。その中で、「国際法国内関連法令」という言葉が登場します。

これに対しては、すぐに韓国メデイアから国際法国内法が何か分からない」というツッコミが入ります。実際のところ、軍用機の飛行を制限する国際法はないので当然のツッコミです。

(本来国内メディアこそツッコむべきだと思いますが、そうした報道は無かったと思います)

それに対して、上に書いたように、12月28日に「国際法」が「国際民間航空条約第2付属書」のことだと示されます

この条約では、「地水面から150m(500ft.)未満の高さ」での飛行の禁止が決められています

すなわち、これを持ち出した時点で、「自衛隊機は高度150m未満では飛ばない」と明確な数字で線を引いて宣言したことになります

まり、その宣言以降に、もし150m未満で飛べば、韓国から抗議が来る形になるわけです。

そして、実際、1月24日には「60mで飛行した」という抗議が行われ、泥沼化してるのが今の状態です。

実際に60mで飛行したかはわかりません。しかし、数字を出して線を引いた段階で、遅かれ早かれ、こうなることは充分に想定できたはずです。防衛省は、自分から、難癖を付けられるポイントを作りに行ったのです。

難癖を付けられまいとすれば、本来なら守らなくて良かったはずのルールを守ることになります

おそらく、自衛隊内の規定として「高度150m」が決まっていて、普段から遵守しているのでしょう。しかし、「組織内の規定」と「外交案件」では重みがまったく違います

北朝鮮の「瀬取り監視のために、朝鮮半島周辺海域監視重要なこの時期に、自衛隊機に要らぬ枷をはめてしまった大愚策です。

上で書いたように、そもそも、具体的に反論したこと自体が失敗でした。まして、民間機向けの条約を持ち出しても、何の根拠にもならないどころか、ツッコミどころを増やすだけです。そして、同時に、自衛隊機の飛行に要らぬ制限を加えます一言で言えば「何がしたかたかわかりません」

(12月25日の時点で、「150m」の根拠国際法にあると誤解してたと考えるとスジは通るのですが、さすがにそんなことは無いと信じたいです)

結言

以上、「低空飛行」問題に対する防衛省対応について語ってみました。

もちろん、2度にわたって非公開の実務者協議が行われており、そこで何が話し合われたかは、我々には知る余地もありません。しかし、ここで書いたように、表に出た部分ではマズい対応が多いです。そして、実際、事態を収められず、泥沼化させています

韓国の術中に見事にはまった…いや、韓国の想定以上に自分から泥沼にツッコんでいったように見えます

さらに、今回、防衛省は、最前線にいる自衛隊に対しても、後ろ弾を撃つようなことをしています

こんな防衛省に、大切な自衛隊員の命、日本国土、そして自分たちの命を任せられるのでしょうか。

「本番」の敵は韓国とは限りません。中国ロシアは、国力・軍事力を背景に、より狡猾に立ち回ってくるかも知れません。

非常に不安が募ります

…とは言っても、僕たちは、「もっと頑張って!」と応援するしかないんですけどね。

日韓双方の発信

基本的には双方の公的な発信に絞っていますが、報道を踏まえた発信については、元となった報道記述しました。

防衛省の発信については以下に一覧化されています

http://www.mod.go.jp/j/approach/defense/radar/index.html

2019-01-29

女湯に幼稚園男子入れるの禁止で良いだろ

ブコメ見ててなんか違和感あると思ったら、みんな一様に男児の性欲にだけスコープあてて悪者扱いしてんだよ。むしろ男児可哀想から禁止すべきだろ。

これが性別反対で、幼稚園女子を男湯に入れるって話だと非常識!って絶対言うだろ。おっさんにジロジロ見られて女の子可哀想!ってな。

男女逆のケースが成り立たないわけないだろ。大体、男児の様子を見て、こいつ明らかに男の目をしてる!って言い出すやつこそ危ないわ。反対のケース考えてみろよ、男湯に入ってきた女児を見て、デュフフ、この女の子明らかに女の目をしてますなぁ、なんて言ってるおっさんがいたら通報もんだわ。

anond:20190131223833

2019-01-24

男は昨年5月14日、ペリスコープ自身映像配信していた神奈川県内の女子中学生コメント投稿し、裸の映像などを配信するよう仕向けたほか、映像パソコンで録画、保存した疑い。

 女子中学生は、埼玉県警事情聴取に対し、「みんなやっているので『いいや』と思った。コメントで(あおられて)やってしまった」と話しているという。

2019-01-16

anond:20190116233253

日本と違って海外性犯罪者は暗視スコープ装備しとらんから

日本レイパーなら深夜のド田舎だろうとキッチリ露出度を測定できるやで

2018-10-29

anond:20181029160025

MSの目とスコープで捕捉できる情報と、増田の言うようなコネクタから取得できるセンサー情報の両方で誤差を最小化してる。

あるいは片方が故障がした場合に片方で補完できるようにしている。

ジムスナイパー2とかでライフルスコープ覗き込んでる描写あるけど

手あたりにコネクターつければ

物理的に覗き込む必要なくね?

2018-10-21

プログラミング論理的思考の訓練

プログラミングを教えててよく分かるのは、ちゃん論理的思考が出来ているかどうかを計る道具として非常に有用だということ

口先だけで乗り切ってきた人はプログラミングを教えてもちゃん理解してくれない

知識化するときに表面上だけを理解することに慣れきってしまっていて

試験とか面接突破できるんだけど実際のところ分かってない

からプログラミングを教えて新しい物を作らせようとすると全然作れない

からあるソースを少し触る、とかもできない

例えば

def hoge(a, b):
    c = a + b
    return c

def gaga(a, b):
    print("Hello ", a, b)

っていうソースがあったとして、gagaっていうメソッドhoge演算結果が表示されるように変更してみよう、っていうことをさせると

def gaga(a, b):
    print("Hello ", a, b, c)

って答える。

もちろんスコープとか名前空間とか、そもそもそれが生まれてきた経緯とかメソッド意味とかはちゃんと教えてるんだけど

それでも理解してくれない

この問題に関して正解を教えると、この問題は解けるようになるが、しばらくすると似たようなミスを連発する

一方で論理的思考が出来る子は全然分野違いから来てる子でもそんな間違いはしない

頭の中を整理して理解しているからなのか、とんでもない間違いはほぼない

入試とか面接だと両者の区別は付かないし、下手したら普段業務でも顕在化しなかったりするんだけど

しばらく一緒に仕事をしたりすると

「あ、なんかそもそもを分かってない」

っていう子はプログラミングができない

プログラミングで何かを作らせるっていうのはそういう人間を見分けるテストとしてすごく有用だと思うし、重宝してる

2018-10-20

増田プログラマー養成講座 その8 OOPの仕組み(後半)

前回に続いて、今回もオブジェクト指向プログラミングOOP)の基本的な仕組みを見ていこう。

 

教材は、ドットインストールPHP入門です。

OOP関係してる#18から#24までのうち、後半の#22から#24までを一緒に見てみよう!

 

#22 staticキーワードを使ってみよう

動画でこんな用語が出て来た。

 

 

static

クラスベースOOPオブジェクトを使う場合普通は「クラスからインスタンスオブジェクトの具体的な実体)を作ってから使う」と説明した。

実は、newでいちいちインスタンスを作らなくても、クラスメンバープロパティーやメソッド)を直接呼び出して使える仕組みも用意されている。

それが「static」(静的)という仕組みだ。

 

「静的」(static)という言葉は、「動的」(dynamic)の対義語になっている。

newでインスタンスポンポン作っていくのが「動的」なら、new無しでコッソリとメンバーを呼び出すのが「静的」というかんじ?

 

PHPでは、インスタンスを作らなくても、直接(静的に)呼び出せるメンバーには「static」という目印を付けておく、という文法になってる。

さらに、

 

それではstaticなメンバーを入れたクラス定義してみよう。

class User {

 // プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name;

 // プロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $count;

}

 

文法的には「static」という印を付けるか、付けないかの違いしかない。簡単だ!

次は、staticなメンバーの呼び出し方を見てみよう。

 

::演算子

ちょっと待った!「演算子」という言葉は初めて出てきたね?意味確認しておこう。

1+2は3になる等、対象(1とか2とかの数値データ)を操作(=演算)して、3という結果を得られる。

 

「::」はスコープ定義演算子とか、ダブルコロンと呼ばれている。PHPマニュアルでは以下のように説明されている。

static, 定数 およびオーバーライドされたクラスプロパティメソッドアクセスすることができます

静的メンバーを呼び出す専用の記号として「::」という演算子記号)が用意されている、というわけだ。

まり、「::」という演算子を使うことで、静的メンバー操作できる。

 

それでは、「::」を使って、静的メンバーを呼び出してみよう。

class User {

 // プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name;

 // プロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $count;

}

 

// new無しでいきなり使える!

User::$count = 1; // 1を代入する。

echo User::$count; // 1と表示される。

 

実験で以下のコードも追加してみよう。

// staticが付いてないインスタンス変数(new無しで使えない)を呼び出す。(本来は呼び出せない)

User::$name = "yamada";

echo User::$name;

実行すると

PHP Fatal error: Uncaught Error: Access to undeclared static property: User::$name

というエラーメッセージが表示された。

「staticなプロパティーとして定義されてないから、アクセスできないよ!」と怒られた~~~(涙)

staticじゃないメンバーには、ちゃんとnewしてインスタンスを作ってからアクセスしないと、使えないんですね。(面倒)

 

キーワード「self」

オブジェクトメンバープロパティー、メソッド)に、オブジェクトの中のメンバーアクセスするとき

という使い分けになってる。単にこれはPHP文法なので、特に悩む余地はない。

 

this=インスタンスメンバー操作する場合

class User {

 // 普通プロパティー:インスタンス変数(staticなし。newした後じゃないと使えない)

 public $name; // ←この$nameをこの下にあるをhello()から使いたい

 // 普通メソッド

 public function hello() {

  echo "Hello, " . $this->name; // this->で指定する

 }

}

$taro = new User;

$taro->name = "Yamada Taro";

$taro->hello(); // Hello, Yamada Taro

「this」が自分自身オブジェクトを指し示す。

$this->nameで、オブジェクト(この場合インスタンス)内の$nameアクセスできる。

 

self=クラスの静的メンバー操作する場合

class User {

 // staticなプロパティー:静的変数(staticあり。newなしでいきなり使える)

 public static $name; // ←この$nameをこの下にあるをhello()から使いたい

 // staticなメソッド

 public static function hello() {

  echo "Hello, " . self::$name; // self::で指定する

 }

}

// new無しでいきなり使える!

User::$name = "Suzuki Hanako";

User::hello(); // Hello, Suzuki Hanako

「self」が自分自身オブジェクトを指し示す。

self::$nameで、オブジェクト(この場合クラス)内の静的な(staticな)$nameアクセスできる。

言ってる意味、分かる?(説明が分かりにくい?)

 

スコープとは?

「this」とか「self」とか、いちいち使い分けていて面倒くさいなーと思うだろう。

なんでこんなことをやってるか?というと「スコープ」という仕組みが関係してる。

ドットインストールPHP入門でも、#16でちょっとスコープについて説明してあった。

PHPスコープの種類は3種類しかありません

  1. ローカルスコープ
  2. グローバルスコープ
  3. スーパーグローバル

 

スコープ有効範囲

スコープ」(scope, 可視範囲)は、元々は潜水艦に付いてる望遠鏡(潜望鏡)のこと。

プログラミングでは、あるデータ変数とか)がどこまで見えるか、覗けるか、という範囲のことを「スコープ」と呼んでる。

変数関数がどの範囲まで有効なのか、使えるのかは、その変数関数スコープで決まっている。

Wikipediaで「スコープ」の説明を見ると、ゴチャゴチャ書いてあるけど、要するにスコープには、広い範囲や狭い範囲があるってこと。

 

thisやselfをわざわざ使い分けているのは、範囲を指し示すときに、

それとも

という場所の違いをハッキリと区別するためなんだ。

 

クラスオブジェクト設計図)を眺めたときに、

thisを使ってたら、「ああ、newしてインスタンスを作らないと使えないんだな」と分かる。(インスタンスの中の話)

staticとselfを使ってたら、「newしないで、静的に使えってことだな」と分かる。(クラスの中の話)

 

太郎の$nameとか、花子の$nameとか、インスタンス場合は、各インスタンスメンバーは、明確に分かれていて、両者が混ざることはない=別々のスコープになってる。

クラスの静的メンバーは、そのクラスに1個しかないので、そのクラスをnewしないで(インスタンス無しで直接呼出しときは)、いろんなところから呼び出されても、共通の中身になってしまう=スコープが1個、同じスコープになってる。

 

インスタンス変数クラスの静的変数は別物なので、thisとselfで使い分けてる、というわけだな!

 

ここまで読むと「staticって面倒くさいやつだな!なくてもいいじゃん!」と思っただろう。その通り!

staticは使わなくて済むなら、なるべく使わない方がいい。

「static 欠点」で検索してもらえば、staticを使った場合問題点が紹介されている。

どうしてもstaticじゃないと実現できないこと、staticの方が便利な場合だけ、staticを使うようにしよう。

 

(参考)PHPのstaticの使い方

 

#23 抽象クラスを使ってみよう

動画でこんな用語が出て来た。

 

 

抽象クラス

これはドットインストール説明そのままでOKですね。

 

具象クラス(今まで勉強してきた普通クラス)だけではなく、「抽象クラス」という特殊クラスを作る仕組みも用意されている。

抽象クラスは、継承してその子クラスを作るとき、「必ずこのメソッド自分で作れよ!」などと強制できる。

まりクラスの利用方法継承とか)について、プログラマーに指示を出せる働きがある。

 

抽象クラスの特徴として、具象クラス(通常のクラス)との違いを挙げます

 

1. 抽象メソッド定義する事ができる。

抽象メソッドとは、実際の処理を自身にではなく子クラス記述させるためのメソッドです。

この抽象メソッド記述できることが、抽象クラスの最大の特徴です。

抽象クラス継承したクラスは、この抽象メソッドを必ず「オーバーライド」しなければなりません。(オーバーライドしないとコンパイルエラーとなります。)

 

2. 抽象クラス単体でインスタンスを生成する事はできません。

抽象メソッド定義している。

まり、実際の処理を記述していない訳ですから当然インスタンスを生成して使用する事は出来ません。

JavaPHPも同じですね。

 

#24 インターフェースを使ってみよう

OOP継承には、「単一継承」と「多重継承」という種類がある。

普通は、「単一継承」といって、親クラスからクラス継承して作るとき、親クラスは1個だけしか指定できない。(1:1)

クラスA、クラスB、クラスCの3つを親クラスとして、クラスZという子クラス継承して作る仕組みは、「多重継承」という。多重継承可能場合、子クラス複数の親クラスを持てる。(多:1)

 

PHPJavaでは、多重継承ができない代わりに、「インターフェース」という仕組みが用意されている。

インターフェースを使うと、多重継承と似たようなことができる。

 

↑ここにクラスインターフェースの相違点がまとめられてたので、参考にしてみてください。

 

インターフェースの使い方、文法を見ておきましょう。

  • class」の代わりに「interface」を使う。
  • 「extends」の代わりに「implements」を使う。
  • 継承する」という代わりに「実装する」という言い方をする。

interface sayHi {

 public function sayHi();

}

interface sayHello {

 public function sayHello();

}

class User implements sayHi, sayHello {

 public function sayHi() {

  echo "hi!";

 }

 public function sayHello() {

  echo "hello!";

 }

}

$taro = new User; // コンストラクターに渡す初期データがない場合「new User();」みたいに「()」を付けなくてもOK

$taro->sayHi(); // hi!

$taro->sayHello(); // hello!

 

PHPOOP機能

#22から#24までを見て、PHPOOP基本的な仕組み~使える機能について見てきました。

PHPには、他にもいろんなOOPで使える機能が用意されています

 

その他のOOP機能

Javaなど他のプログラム言語には、PHPにはないOOP機能も用意されています

オブジェクトを利用するときの仕組みとして、いろんな方法が考えられてます

 

使う機会があれば調べてみましょう。

 

ここまでで、やっとOOP基本的な仕組み、用意されている機能テクニックを学びました。

次回は、なぜこんなOOPの仕組みが考え出されたのか?どうやってOOP活用していくのか?を見ていきましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半) ←★今ここ★

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-17

増田プログラマー養成講座 その5 オブジェクトとは何か?

今回は、手続プログラミングの後半となる「オブジェクト指向プログラミング」(OOP)について学ぼう。

OOPは内容が多いので数回に分けて説明してみます。(説明が下手だったらフォローお願いしますw)

 

オブジェクトとは何か?

オブジェクトobject)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象抽象化する概念である

 

オブジェクト指向プログラミングパラダイムでは、関連するデータを束ね、代入、演算手続き(関数メソッドなど)を介した受け渡しといった操作対象にでき、またメッセージ受け手になれる実体オブジェクトと呼ぶ。

多くの場合オブジェクトは他のオブジェクトを要素として格納することができ、複雑なデータ構造表現できる。

 

Wikipedia説明は分かりづらいね。(初心者だったときの私が読んだら意味理解できないと思う)

 

増田プログラマー養成講座 その2 https://anond.hatelabo.jp/20181016164341説明した「プログラム構成要素」を思い出して下さい。

プログラムは、

  1. データ
  2. 「処理」

の2つから成り立っている。

プログラミング歴史は、この「データ」と「処理」をどうやって使いやすくするか?の試行錯誤になってる。

 

Java入門書にも、データ構造について説明があっただろ?

 

構造体の発展=オブジェクト

複数データをまとめて入れておく箱は便利な道具なので、だいたいどのプログラミング言語でも用意されている。

この講座では、複数データをまとめて入れる箱を「構造体」と呼ぶことにしよう。

 

構造体の各箱には、普通データ」を入れておくんだけど、データだけじゃなくて「処理」も入れておけると便利だ。

データ」も「処理」も保管できるように拡張した構造体に、「オブジェクト」という名前を付けた。

オブジェクトとは、言い方を変えれば、「データ」に「処理」をくっ付けたものなんだ。

 

このWebページ最初の方に「図: オブジェクトフィールド(データ)とメソッドを一つにまとめたもの」という説明図があるだろ?

この図で、オブジェクトの中に、いくつか箱があるけど、

なんだ。

オブジェクトそれ自体特別ものじゃなくて、ただの箱でしかない。データ構造一種であることが分かっただろうか?

今の段階では、難しく考えなくていい。

ややこしくなるのはこの後だ。オブジェクトを使うときに「なんでそんな使い方するの?」という段階になってからだ。(気を緩めないように、ちょっと脅しておこうw)

 

クロージャ

が「オブジェクト」なら、その反対に、

もあるんじゃないか?と思ったそこのキミ。正解!

「処理」に「データ」をくっ付けた仕組みもあって、「クロージャー」と呼ばれてる。

 

クロージャ(closure)、関数閉包はプログラミング言語における関数オブジェクト一種

いくつかの言語ではラムダ式無名関数で実現している。

引数以外の変数を実行時の環境ではなく、自身定義された環境(静的スコープ)において解決することを特徴とする。

関数とそれを評価する環境ペアであるともいえる。

オブジェクトインスタンス変数とは、オブジェクトインスタンスではなく関数の呼び出しに束縛されているという点で異なる。

この説明文読んで、クロージャーの仕組みがスパッと理解できる初心者っていねーだろ?(いたらビビるw)

Wikipedia説明は「何言ってるか分かんない」状態だけど、サンプルを動作させてみれば、仕組みは簡単に分かります

 

第1級オブジェクト

ここまでの説明で、「プログラミング言語は、機能自由拡張できる」と分かっただろう。

から、「データ」と「処理」の扱い方を工夫する歴史の中で、「オブジェクト」という仕組みを閃いちゃった奴がいたんだねw

 

オブジェクトの特徴をもう一度振り返ってみよう。

普段は「データ」をぶち込んでおく箱の集合体に、処理も入れられるように改造しちゃったのが「オブジェクト」だったね?

…ってことは、処理とデータ水と油みたいに別々のものじゃなくて、実は処理もデータと同じように扱えるものだってことになるよね?

そうなんです!

実は「データ」と「処理」は全然別なものじゃなくて、同じようなものとして(扱おうと思えば)扱えるんです!

それで、このデータとして扱えるような「処理」に名前を付けてあげて、「第1級関数」とか「第1級オブジェクト」と呼んでます

(「第1級データ」という呼び名が使われてないのは、データデータとして扱えるのは当然なので、わざわざ第1級データという呼び名を付ける必要がないから)

 

第一オブジェクトファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数戻り値としての)受け渡しといったその言語における基本的操作制限なしに使用できる対象のことである

ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクト意味しない。第一オブジェクトは「第一データ型に属す」という。

言語によって異なるが、第一オブジェクトは概ね次のような性質もつ

上記説明文の中で「制限なしに使用できる」って部分が重要

 

第一関数(first-class function、ファーストクラスファンクション)とは、関数第一オブジェクトとして扱うことのできるプログラミング言語性質、またはそのような関数のことである

その場合その関数は、型のある言語では function typeなどと呼ばれる型を持ち、またその値は関数オブジェクトなどになる。

具体的にはプログラムの実行時に生成され、データ構造に含めることができ、他の関数引数として渡したり、戻り値として返したりすることのできる関数をいう。

上記説明文の中で「データ構造に含めることができ、」って部分が重要

 

フリーパスでどこでも入れちゃうVIPみたいだからファーストクラス(第1級)と称されてるんだね?

ドラえもんの「オールマイティーパス」を持ってる奴みたいなのが、「第一オブジェクト」「第一関数」ってわけ。

ドラえもんオールマイティーパスは、どこでも入れる通行証です。

これを係員に見せるだけで、どんな交通機関でも無賃乗車できて、どんな有料施設でも無料入場できます

通常なら入ることの許されない立ち入り禁止区域でさえ入れます

 

 

オブジェクトまとめ

 

混乱するようなら、上記説明で、クロージャー以降の話はとりあえず無視してください。

 

参考

オブジェクト説明をどうしようか?と考えるとき、参考にしたページも紹介しておきます

 

 

次回、オブジェクトの使い方=オブジェクト指向プログラミングについて学びましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か? ←★今ここ★

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-14

anond:20181014232604

西欧的ではあるけどな。最上段に「産めよ、増えよ、地に満ちよ」があり、中長期的な政策合理性があり、最後短期経済合理性があり、資源分配は短期ほど多く、権限は長期ほど強い、という階層構造的な考え方が背景にあるから

日本ではどうしてもこういった長期的な合理性短期的な合理性完全に一致せずしか優越関係がある、階層構造があるという考え方は受け入れられにくいな。すべてが同じ階層、同じスコープの中で大小関係による闘争があるとした方がウケがいい。キリスト教布教が全く響かないというのもこの辺りだろうから、受け入れられるようにしてしまっては沽券に関わるのかもしれないが。

2018-10-13

anond:20181013011421

はてサとして補足するとスコープの違いだと思う 社会的正しさは十年百年スパン人類繁栄のためなので四半期単位の行動戦略との整合保証されないんだと思ってる

2018-10-11

anond:20181010165019

日本銃器描写交戦距離が短すぎ、視力よすぎ。敵の弾切れなんか遠くて分かんない。敵が何持ってるかなんか肉眼でもスコープでも分かんない。狙ったところに弾が飛んで行ったりもしないし。

2018-10-07

anond:20181007233815

最初スコープが「はてな民」なのに、文章の後半で「乳袋問題提起するはてな民」に焦点を当ててるのは何で?なんで?

知識人を気取ってる人に対して冷笑してみせるために詭弁を弄してしまうのはなんで?

なんでばっかり言ってる私は何で?

ナンライスナンで!

2018-09-28

anond:20180928171840

〜が終わったらお前も助けてやるから、今はしゃしゃり出てくんなデブ

とでも返しとけばいいのに

「今はスコープが違うから」で相手にしなければオッケーでしょ

まあ実際はKKOなんぞ助けませんけどねえ

2018-09-20

anond:20180920115827

荒川区とか台東区で同じ地域でも~って語るならともかく、

大田区とか荒川区の6倍も広い地域で「同じ地域でも~」は流石にスコープデカすぎ。

道民かなんかか?

2018-06-30

https://anond.hatelabo.jp/20170918194630

2ロック破錠シリンダー交換してるんでしょうし、賃貸から同等品に交換せなならんと考えるとその値段もありえるのでは。

と思ったらドアスコープ破壊だけなんですね。お疲れさまです。。

月額とか年会費とか取る会員制サービスで鍵解錠とか水回りやります、みたいなのありますが、契約によるけど業者出張費しか負担しないのが多いかも。

部品代・特殊作業費等の別途費用はお客さん負担で、別途費用分が高額になる場合もあります

とにかく見積もりを事前に出してもらった方がいいです。あと賃貸なら営業日まで待って管理会社相談した方が結果的スムースかつ安い気も。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん