プログラミングが分かってる相手に気軽に挙動について訊ける機会なんてありませんね。仕事なら同僚に訊けばいいと思いますけど、同僚が暇とは限りませんし、学生ならそういった相手がいないことが普通ではないでしょうか。

ということで、独りで言語を学ぶ方法について考えます。

作りたいものを決める

大変重要なところです。どの言語でも書けて、どの言語も多少の個性が出て、そこそこ簡単なものがいいですね。

ぼくの場合は blosxom という「テキストファイルをスキャンしてHTMLにするだけのブログツール」なんですが、まぁなんでもいいと思います。ぼくはウェブエンジニアなので、ブラウザに何か表示がでるとそれだけで嬉しいというところがあります。

リファレンスをひけるようにする

どの言語も必ずどこかに言語リファレンスがあります。必ず公式のものを一式見れる状態にします。そしてできれば Chemr とか Dash みたいな瞬間的にリファレンスをひけるツールを用意します。

リファレンスは無限にひくことになるので、多少ここに時間をかけても良いところです。

書きはじめる

とりあえず Hello, World! しましょう。Hello, World! をバカにしてはいけなくて、これは print デバッグという原始的でほとんどどんな言語でも通用するデバッグ方法を習得するために必要なことです。高級なデバッガは言語ごと、エディタごとに使い勝手が異なることが多いので、デバッグが辛すぎる状況になってから考えます。

このとき、公式にチュートリアルがあるならやってみても良いです。が、どうせチュートリアル見ても Hello, World! のやりかたぐらいしか分からないので無視しても良いです。

重要構文を覚える

  • 条件分岐 (if)
  • ループ (for)
  • リテラルの表記方法 "foo" は文字列、123 は数字など

これぐらいあればベタっと動くコードを書くことができるはずです。

クラス構文とか、そういうものはとりあえず無視しましょう。Java とか C# だとエントリポイントを書くために最初っから必要になりますが、まずはできるだけ無視します。言語特有の機能はとりあえず置いておいて、動くコードにします。

設計をなおす

多少動くものが書けそうなら、その言語で「最も良い書きかた」にできるだけ全てを直します。ここではリファレンスの特に文法をよく読んで「ぼくの考える最高に読みやすい書きかた」を探ります。とはいえ、だいたい言語ごとにセオリーが決まっているので、言語公式のライブラリとかを読むとてっとり早く雰囲気をつかめます。ただ、公式ライブラリが十分綺麗に書かれているとは限らないので、できるだけリファレンスに頼ったほうがいいと思います。

このとき大事なのは「これは読みにくいぞ」とか「オレはこう書きたいんだけど」という気持ちです。そういう自分の信念と、言語ごとの雰囲気の擦り合せを行います。できるだけ言語特有の良さを出すように書きます。最終的に「このコードは(他の言語名)から来たヤツが書いてんな」みたいな田舎臭さを消滅させることを目標とします。

友達がいなくても言語は学べるか

リファレンスをひけば大丈夫です。安心しましょう。そして Google で検索すれば大抵のわからない問題は解決します。わからなかったことは公開される形で記録しつつ解決して、検索できるようにしましょう。そうすると後続の友達がいない人に優しいインターネットになります。

  1. トップ
  2. tech
  3. 友達がいなくても新しい言語は学べる

ZenFone2 を使っているけど、お世辞にも画質が良いとはいえない。後処理でなんとかする試行錯誤をしたので記録しておく。

  • 「ノイズの低減」→「カラー」を適切に設定する
    • 画質悪いカメラのノイズで一番うるさいのでカラーノイズだと思うので…
  • 「シャープ」を適切に設定する
    • 全体的にノイジーになるが、カラーノイズを消しておけばあまり気にならず、解像感が増す
  • 「効果」→「かすみの除去」を多少強めにかける
    • レンズが多少汚れていること多いけど、これだと全体的にモヤがかかった感じになってしまう。「かすみの除去」によってかなり全体的に綺麗になる

「明瞭度」はシーンによって上げたり下げたりする。

STM32CubeMX でジェネレートされるコードは MCD-ST Liberty SW License Agreement V2 というライセンスになっています。これはコード上で以下にリンクしています。

http://www.st.com/software_license_agreement_liberty_v2

Copyright � 2015 STMicroelectronics International N.V.. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted, provided that the following conditions are met:

1. Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of STMicroelectronics nor the names of other contributors to this software may be used to endorse or promote products derived from this software without specific written permission.
4. This software, including modifications and/or derivative works of this software, must execute solely and exclusively on microcontroller or microprocessor devices manufactured by or for STMicroelectronics.
5. Redistribution and use of this software other than as permitted under this license is void and will automatically terminate your rights under this license.


THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  • 1はライセンス表示をそのまま残せといってるやつです
  • 2はバイナリ配布する場合もライセンス表示をどこかに表示しろという話です
  • 3はライセンス表示の名前について商標とかを気にしなくてよいという話だと思います
  • 4はこのソースコード及び派生物についてはSTマイクロのハードウェアだけで動かせということです
  • 5は許可外のことをすると権利失効しますという話です

大文字の部分は免責事項です。

基本的にSTMのデバイスで使う限りは広い使用が認められているように見えます。が、ハードを制限しているのでちゃんとフリーとはいえなそうです。

  1. トップ
  2. tech
  3. MCD-ST Liberty SW License Agreement V2 はフリーなライセンスか?

博多に行く機会があったので、合間を縫って周辺神社に行ってきました。それほど時間が余ると思っていなかったので、まともなカメラを持っていかず、全部スマフォ写真です。

住吉神社


博多駅から近い。歩いて15分ぐらい。それにしては境内が広くて気持ちがいい。住吉神社という通り本殿は住吉造り。ただ、本殿以外に住吉造りはない。三大住吉の一つらしい。筑前国一宮。

太宰府天満宮

いうまでもないぐらい有名なところ。菅原道真が主祭神。

境内は広いけど、本殿は案外こじんまりしている。

17時ごろに行ったけど、人が全然いなくてものすごく良かった。境内までの道にある店もすべて閉まっていた。

奥の方の山にある稲荷神社(天開稲荷社)にもいった。そこそこ登る必要がある。

本殿の裏側に梅が結構植えてあって、梅の季節は良さそう。

山のぼるときテンションが異常で、走って登ってしまった。おれの幸福はノスタルジーと孤独の中にあるのだと思った。夏の神社は最高だ。

宗像大社

東郷駅からのバスが1時間に1本あるかないかって感じで厳しい。駅前にタクシーは数台あった。

宗像大社は沖津宮・中津宮・辺津宮と三カ所に分散していて、そのうち一般に参拝可能なのが中津宮・辺津宮の二カ所、中津宮は大島という離島にあって、時間が足りないので、辺津宮だけ行った。

境内がすごく広い。17時30分ごろに着いたので、本殿は閉門していた。残念。しかし本殿が見れなくても神社は割といろいろ見ることができて良い。

高宮祭場という、神籬の木と、それを囲う石垣だけがある神域があってとても良い感じ。沖津宮がある沖ノ島は島自体がご神体であるという神奈備だったりするし、古い形が残ってる数少ない例。沖ノ島は今も厳しい神奈備のルールが適用されていて、自由な立ち入りができない。

第二宮、第三宮があるところは、入ってみるとかなりのデジャヴを感じることができる。というのも、伊勢神宮別宮の月讀宮 (ref. 神宮参り - 氾濫原 )とほとんど同じ構成になっているからで、実はこれ実際に月讀宮にあった伊佐奈岐宮と伊佐奈弥宮を移築したものという由緒がある。

交通安全で有名。交通安全祈願とは神前で交通ルールを守ることを誓うことを含むというのが面白かった。

  1. トップ
  2. photo