Programmer's Note

コード読み書きの備忘録。

React Nativeことはじめ

何週間か前に、何気にyoutubeでVue.jsを勉強してみたところ、けっこうエレンガントな思想で面白かったので、がぜんWebアプリ開発に興味を持ちはじめた。

Webアプリ関連の技術はいまや結構応用が効いて、PCアプリやiPhoneアプリを開発できるフレームワークもある。

Electron  ... Web技術でPCアプリを開発できる
React Native ... Web技術でiPhone/Androidアプリを開発できる

この2つはデファクトらしい。ReactとかReact Nativeは名前だけは、ずいぶん前から知っていた(super popularだからな)。

ちょっとかじってみると、2つとも敷居も低く、かなり入りやすい感じだ。 (iPhone nativeアプリなんざ、Xcodeがあっても学習コスト高かったしな)

ここ数日は、React Nativeを勉強してみた。

これのベースになっているReactは、簡単にいうとJavascriptでHTMLのレンダリングが簡単にできてしまうフレームワークかな。(まだ入門も入門) カスタムComponentが簡単でできてしまうのがいいね。

なんかExpoというプラットホームもできているみたいで、これがびっくりするくらい簡単にiPhone上にアプリの実行を試せる。 エディタでコードを変えたら、即座にiPhoneの画面が変わる。 なんつー開発効率のよさ!こりゃあもう革命的だ!と感激した。

しかし、最終的にアプリをリリースしようとすると、Expoのプラットホームに乗っからないといけないみたいで、本格的に乗っかると月額で料金とられるっぽい。 (友達に見せる分にはタダだけどね)

かなり良くできているが、ちょっと違うかな。と思って、普通のReact Native環境を導入しようと思ったのでした。

久々ブログ再開&振り返り

戯言でもあとで読み返すと楽しいものだ。久々ブログ。

振り返ると、Clojureを始めたのが2016年、Haskellが2018年。 時間が経つの早いな。 去年の始めは、iOSで簡単なアプリも作って遊んでいた。 (Swiftはくそだな。というのはさておき)

その前にAndroidもやろうとしたがこれは挫折したな。 自分がiPhoneユーザなので、使っていないプラットホームのアプリを作るのは辛い。

関数型プログラミングが面白くて、実用的なものは何も作ってなくても、 codewarsで簡単な問題を解いて遊ぶのは楽しい。

2年くらいやってみた感想として、 Haskellは実に簡潔で美しく、純粋世界だけなら完璧な言語だなと。 しかしMonadが微妙。美をぶち壊している。簡単なことをするのに記述が一気に汚くなる。 Functor、Applicativeまでは美しい。 型があることですごくエレガントなことができる、というのに大いにエキサイティングした。

すべてシンプルなコア仕様に集約されるところは美しいし、言語仕様の一貫性は非の打ちどころがない。 しかし結果としてプログラムの記述が複雑になってしまうところは、やる気が失せる。 プロダクションコードに使うなら純粋な世界だけにして、あとは別の言語から呼び出すがベストかな。

Haskellに比べるとClojureは記法の簡潔性では負ける。 そもそも括弧が無駄だしね。 Haskellの分かりやすいシンタックスはやっぱ楽だ。 Clojureは結局Mapに尽きるかな。Data Oriented。

最近javascript, typescriptを触っているが、利便性は高いけど美しくない。 ごちゃごちゃしている。 関数型じゃないともはややる気にならない自分がいる。(趣味としては) 美しいとかラクを知ってしまうと戻れないってやつだな。

趣味としては面白くないけど、実用性からすればtypescriptだな。というところだな。

XcodeでMGIsDeviceOneOfType is not supported on this platform.

iPhoneアプリ開発入門しようと、アップルのチュートリアルに従いなら、アプリを作ってったのだが、 コードを追加したあとエミュレータを実行すると、XCodeがエラーを吐いて止まってしまう。

  MGIsDeviceOneOfType is not supported on this platform.

スタックトレースが表示される。ネットで調べると 解決方法は、XCodeを古いバージョンに戻すか、OS含めた最新バージョンにするしかないようだ。

一回 Xcode を 9 に戻したが、自分のiPhone SEiOS 12に対応してなかった・・・・。 仕方なくMac OS AirのOSを10.13から10.14にアップグレード。 ぎりぎり自分のAirが対応リストに入ってたからよかった。

そのあとXcode 10.1を再ダウロード&インストールした。6GB弱あるので、インストール完了まで随分と時間がかかった。

一応、めでたくチュートリアルのサンプルが動いた(まだ途中だが)。

まとめると

以上。

Linux Mint日本語環境(US配列キーボード)

最近Linux Mintを使い始めた。古いiMacにインストール。 しかし、ブート領域を上書きされてMac OS Xの環境がおかしくなってしまった。 まあもうほとんど使わないからいいか。Linux MintGUIシンプルだし超サクサクだし、自分好みだわ。

さて、最近まで日本語入力環境がいまいちだったのが、やっとまともな環境になった。 自分はUS配列キーボードを使っているから苦労している、というのもあるかもしれん。

とりあえず、うまく行った設定のメモ。

1. Input MethodはIBusを使う

Menu->Control Center->Input Method で設定できる。

2. IBUS ReferenceでMozを追加

Menu->Search:でIBUSを入力すると項目が出てくるの選ぶと設定ダイアログが出てくる。

このサイトを参照: https://qiita.com/Justmeaning/items/17fdd149952d6785b23d

3. IME起動のホットキーの定義を変更

このサイトを参照:   Ubuntu17.10で「日本語入力と英語入力」を切り替える方法

Linux Mintの場合タスクバーの右に「あ」というアイコンが現れるので、 左クリックしてTools->Propertiesを選び、ダイアログのGeneralタブのKeymap style のCustomize...を選ぶ。

もとのCtrl Spaceの設定を消して、Hankaku/Zenkakuと設定されている項目をCtrl Spaceに置き換える。


これでCtrl + Spaceで変換・無変換の切り替えができるようになった。 素晴らしい。

ちなみにInput MethodにFcitxも選べるが、こっちの方はぜんぜんダメだった。 設定メニューすらうまく起動できなかった。

以上。

STM32F103 Nucleo開発環境リンクメモ

STM32F103 NucleoボードでLチカまでやったが、このレベルでもMPUがリッチすぎるな。 H/WダイレクトのBare metal progurammingをやろうとすると面倒。 メーカー提供のライブラリを使わないとLチカするのも大変。もう少しシンプルなので遊びたいなと。

とりあえず環境の導入に参考になったサイトのメモ。

RaspberryPiでSTM32開発環境の構築

フリーだけの開発環境(gcc)の導入で参考にした。

Home · OliviliK/STM32F103 Wiki · GitHub

libopencmというライブラリ開発してる。これが便利そう。

  Lチカは結局ここのひとつの記事を参考にした。

  Tutorial3_GPIO · OliviliK/STM32F103 Wiki · GitHub

SunMoonSim/STM32F103-MD.ld at master · barrybingo/SunMoonSim · GitHub

STM32F103のlinker scriptが置いてある。

GitHub - avislab/STM32F103: STM32F103C8 Examples

STM32F103の初期化コード(startupルーチンとか)が置いてある。

以上。

STM32 Nucleo Board買う

久々に寄った秋月でSTM32 Nucleoボードを購入した。 ボードのデザインに惹かれ、調べたら中身もなかなか良さげだったので、ほとんど衝動買い。 ジャケ買いみたいなもんだな。

STM32 Nucleo Board STM32F103: マイコン関連 秋月電子通商-電子部品・ネット通販

Coretex-M3積みで1500円という驚きの安さ。 Arduinoより安い。この系統のマイコンボードの中では一番安いシリーズではなかろうか。

さて、ここ2、3日は環境構築。 STM32は結構昔から出てるから情報も多く、メーカーから出している開発環境もかなり充実してる感じ。 オープンソース環境ではEclipse + CDT + ARMクロス環境が定番のようで、ネットにも Eclipseの環境のセッティング方法が転がっていたが、ビルド→実行までいろいろ面倒そうだ。

結局、下記の記事を参考にCLI環境を構築した。

RaspberryPiでSTM32開発環境の構築

自分のMac環境だとARMのクロスコンパイラは入れてたから、結局ST-LINKを新たに入れただけだった。 (これもbrew install stlinkを打つだけだった)

ボードのマニュアル読むと、これぐらいシンプルなのは自分にとってはいいな。

スペック:

・最高動作クロック:72MHz
・内部メモリ:128KB(Flash)、20KB(SRAM)

もいいねえ。 20KBはちと狭いが、SPI RAMつけて遊ぶのも面白そうだ。