かな・漢字の読みを子供に教えるためのWebアプリを公開しました

友達の子供が今年は小学校に入学する歳で、コロナのために学校に行けないので、家で漢字の読みの教えていると聞きました。
最近、ReactやVueというWebアプリケーションを作るフレームワークの勉強を始めたので、その友達のお手伝いとしてWebアプリを開発しました。

友達からは「(子供が)すごい勢いで漢字を覚えている」「とても便利」と好評をいただいたので、公開することにしました。

Webアプリ紹介

親子でかな・漢字の読み学習 | バンブー

読みを分かっている方が付き添って教えてあげるためものです。

使い方

スマホの縦長画面で使うことを想定しています。

設定画面

f:id:knj4484:20200501073834p:plain:w300

  • ひらがな/カタカナ、1〜6年生の漢字の中から教えたいリストを選んだり、自分でリストを入力します
    • 複数選ぶと連結されます
  • リストから全文字を使うか、ランダムに5文字抜き出すか選択します
  • 出題方式を選びます
  • 「設定完了」ボタンを押すと問題画面に移ります
問題画面

f:id:knj4484:20200501074020p:plain:w300

  • 子供に読み方を当ててもらいます
  • 正解だったら「正解」ボタンを押します(花丸が表示されます)
  • 間違っていたら「ミス」ボタンを押します(バツが表示されます)
  • 問題の文字/花丸/バツの領域をタップすると次の問題に切り替わります

Tips


  • 「ランダムで無限に繰り返す」を選んだ場合、以下のような計算に基づいて出現頻度が変化します
    • 最初は、全ての文字が重み4で、均一な出現頻度
    • 正解するたびに、重みは半減する(ただし、1が下限)
    • ミスするたびに、重みは倍増する
  • 「ランダムで無限に繰り返す」を選んだ場合、以下の内容の棒グラフが表示される
    • 得意(緑): 上の説明の重みが1である文字の数
    • 苦手(赤): 上の説明の重みが4より大きい文字の数
  • 「ランダムで無限に繰り返す」を選んだ場合、右上の「継続用データ」ボタンから得意、苦手、どちらでもないの文字一覧を表示できます
    • 苦手な文字をコピーしておいて、次やる時に設定画面で独自リストとして入力すると、苦手の克服になります
  • 出題方式「シャッフルして周回する」を選んだ場合、右上の「継続用データ」ボタンから間違えた文字一覧を表示できます
    • 間違えた文字をコピーしておいて、次やる時に設定画面で独自リストとして入力すると、間違えた問題の復習になります
  • 「N年生の漢字」「シャッフルして周回する」を選ぶと、「どれだけ習得できたか」のような確認が出来ます

公開までの道のり

登場人物

  • 私: 右側の緑の吹き出しの人
  • 友達 神田一郎(仮名): 左側の吹き出しの人
  • 友達の娘 カナ(仮名) 4歳
  • 友達の息子 翔(仮名) 6歳

0日目 4/15 (木)

20:45

友達とFacebook messengerで、なんか作って欲しいものあるかという話をしていると、こんな答えが返ってきた。

小2で習う漢字が画面一杯に、タップ毎にランダムで出てくるのもいいなあ。あってるだの間違ってるだのは俺がやるから。小1の漢字はほぼクリアしたので大丈

f:id:knj4484:20200426165051j:plain:w360
この漢のところをタップするとランダムに漢字が出てくる
子供が言えたら親が正解ボタンを押す→正解音と花丸が大きく出てくる
間違えたら親がミスボタンを押す→大きなバツマークとミスの音が出てくる

f:id:knj4484:20200427092654j:plain:w360
最初に学ばせたい漢字を親が5文字登録する
→写真の画面にうつる
みたいなの。

正解した場合。
f:id:knj4484:20200427093005j:plain:w360
こんなの。
f:id:knj4484:20200427093118j:plain:w360

大体理解した。

いまは紙に手書きで書いてやってる。正解したらたまごボーロを1つもらえて間違えたら奪われるということをやってきたらこれは効果抜群で小1の漢字80文字中いま70字ぐらい頭に入ってる。多すぎると覚えきらないので5文字ぐらいでよい。これなら外食中でもできる

「いや、食事中にスマホいじっててはダメだろ」と思いつつ

なるほど

この日の会話はここで終わり、就寝した。在宅勤務でも早寝早起きの習慣は保つようにしたい。

1日目 4/17 金

翌々日、朝6時に起きて作り始め、会社の業務開始の前に、なんとか使える形にまでは開発できた。
やはり、朝の爽やかな時間、リフレッシュされた心と体は、自分にとって価値のある事に使うのが良い。

13:07

昼休憩時間にWebサイトにアップロードし、友達に報告

音以外は出来た。音は、いい感じのファイル見つけてくれれば入れられると思う

素晴らしい!早速やってみたが効果あり!

そうか。よかった

ようたかつくったんだ。すごいね。byカナ

友達の子供からはヨーダと呼ばれております。「ようた」と言われると電影少女を思い出す…あの漫画どうやって終わるんだっけ

f:id:knj4484:20200427093334j:plain:w360
こんな感じでうつる。もう少し文字が大きくてもいいかも

スマホの画面も色々あるから、画面いっぱいというのは多少難しい。夜にチャレンジしてみるよ

難しいというか、画面作りは初心者なのでやり方分かってませんでした

なるほど。それなら今のままでも大丈夫。
また、下のスペースが余っているので、そこに正解数と間違えた数が表されるといいかも。

f:id:knj4484:20200427093518j:plain:w360
みたいな

5題しかない状況で、それ表示してそんなに嬉しいのかな

○のかずのところは😊
✖️のかずのところは😢
とかでもいいかも。
たまごボーロのやり取りに対応している。
ランダムにでてきて30回ぐらいやるし、繰り返すから嬉しいと思う。

夜に作ってみるわ

どちらにしろ現状で素晴らしい出来だ。ウチの子にぴったりだ

一度に覚えさせる量は3文字ぐらいが適切かも。

それは先回りして出来るようになっているのだ、ふふふ

二文字以上なら何文字でもできるように作ってあるよ

漢字ごとに連続正解を取っておいて、三連続正解したやつは出現確率を下げるとかの方が作る側としては面白い

あ、それ凄くいい!連続正解したら出現する確率凄く下げてほしい。

あと、
トップ画面に
「小2で習う常用漢字からランダムに三文字選ぶ」
「小2で習う常用漢字からランダムに全文字選ぶ」
というボタンがあってもいいなあ。いちいち打ち込むのがそのうち面倒になりそう。
「小1で習う常用漢字全文字テスト」ボタンがあって、それを押すとランダムだが重ならないように80字全文字調べられて、正解数が出たらいま何文字まで覚えたか簡単かるなあ
f:id:knj4484:20200427093641j:plain:w360
こんなの求む。3文字の3は、2とか、4とか変更できると尚嬉しい

「そのUIはどうかな」と思いつつ

大体理解した

了解。小1常用漢字はネットで調べたら出てくるよ。小2も

はいはい

2020/04/17 19:07

文字の大きさは、お前の画面縦長に合わせるだけならある意味簡単なんだが、iPhone Xでいいのか?

俺のはアイフォン6かなんか

おっけー

文字の大きさ調整とボーロ数追加してみた。リロードして確認よろしく

f:id:knj4484:20200427094012j:plain:w360
これだと下の正解が出ない。

なるほど

もう少し上に。

いや、スクロールしてもダメ?

文字は見やすい
スクロールは面倒
文字もずれるし

「面倒?」と思いつつ…

直した

いい感じ!
f:id:knj4484:20200427094211j:plain:w360
こんな、感じ

まあ、これでよしとしよう。レイアウトは完璧を目指すとやはり手間がかかる

技術力が低いためかなり消耗してしまった。やはり基礎からちゃんと勉強するべきである。

f:id:knj4484:20200427094937j:plain:w360
強いて言えば、
もう一文字分だけ、正解、ミスの行を下にして欲しいぐらいだ。
まあこれでも充分

「Wordじゃねーんだから、一文字下げるとかできねーわ」と思いつつ

色々修正中

サンクス。このアプリのおかげで漢字学習がよりスムーズになりそうだ。俺はこれから風呂。

次の問題に進むためのタップ領域が「問題設定へ」ボタンに重なってしまっていることに気づいたが、早寝早起きは崩したくないので「まあ明日の朝直せばいいかな」と安直に考えて就寝

2日目 4/18 土

この日もしっかり早起きしてレイアウト問題に取り組んでいると…

9:23

問題設定へ
ボタンが押しづらくなった。

ヤバい。バレてしまった

問の字しか押せない

もうちょい大きくしてくれたらいいかも。正解と同じサイズぐらい希望
あーなるほど

大きさの問題じゃない

逆ギレする低脳とは私のことです

カナがいま凄い勢いで漢字覚えている。

画面作りは技術力が低いのでレイアウトが難しい。

問題設定へのボタンの押すスペースが小さすぎて。ランダムに文字がかわるになっちゃう

大変なんだね

スクロール許容なら楽なんだが

そもそも問題設定へのリンク必要?リロードすれば同じな気もするけど

うんまあそうだよね
問題設定へ戻ったときに前に設定しておいた漢字が残っていれば、追加できるので楽

ふーむ、そういう流れでやるのね

問題設定に戻ると、ボーロ数は0にリセットしてるけど、それはいいの?

ボーロ数って正解数のこと?
それはまあ良い

そうか

まず紙で全問チェックしたところ80字中66字正解。その後間違えた14問をアプリでやらせた結果
f:id:knj4484:20200427095222j:plain:w360

どう解釈すればいいの?

間違えた問題だけをやらせて最終的に正解がおおくなっている。素晴らしい。

レイアウト直した

f:id:knj4484:20200427102920j:plain:w360
カナはまず80問中67問正解。その後間違えた13問をいまやったところ。

たまごボーロは100個あげるわけ?
69か

f:id:knj4484:20200427103104j:plain:w360

ダメだこりゃ

字をもう少し右上で、正解、ミスの表をもう少し下かな。

むずいな。こっちのシミュレーターだとまともなんだ

この時はMacのChromeのDeveloper Toolsでやっていて、Safariで確認した方がより正確ということに気付いていない愚かな私

笑顔マークを100個とることのゲーム感があるのでたまごボーロなしでやれる。

それiPhone 5な気がする

自分の知識不足を棚に上げて…

まあ今のままでも見れることは見れる。
笑顔が100まで到達したり、
5連続、10連続正解したら
花丸の横に😄が溢れるといったご褒美感がほしい。

アイフォン6か6s

もう一回レイアウト直した

f:id:knj4484:20200427103204j:plain:w360

いまだかつてない出来栄え

うん。強いて言うなら字をほんの少し右

むり

心折れました。

ならこれok

たぶんレイアウトではなくフォントの特性による

自分の技術力の低さを棚に上げてフォントのせいにするダメなエンジニアです。

ふおう

11:45

漢字それぞれ重み4の均一な確率から始まって、正解すると重み半減(下限1)、ミスると重み倍増という確率分布で出現するようにしてみた
これで100回やったときの成長度合がかなり変わると期待

13:35

素晴らしい

19:27 (土)

今日は合計で7-8時間ぐらい勉強させたが、今日はカタカナがらまだまだだと気づいたところ。
そこで吉橋のアプリでこれからカタカナのワークは両面15枚ぐらいやった。カタカナをやろうかというところ。
そこで次は吉橋のアプリでカタカナをやろうというところ。

一文字のクイズなら何でもいけるわな

カタカナをメモで全部一旦残した。今後はこれをコピペすれば良いだけだ。
そう思うと小2の漢字も行けそうだ

ギリシャ文字でもいけるぞ、たぶん

確かに。

3日目 4/19 日

12:47 (日)

選択した文字からN文字抜き出すを押すと、選択したリストの全文字を使うが押されたままになってそのございましたどうなるかわからない
漢字リストの方はまだ漢字が出てこないな

おっとー、開発途中の画面をアップロードしてしまっていた…

あー、ごめん。漢字リストはまだ出来てないや
画面は作ったが選んでも何も起こらない

17:59 (日)

学年別漢字リストも選べるようにしたよ

あれ、バグってるわ

ヤバい

直した

独り相撲取りすぎ…。ちゃんとテストしてから本番反映しよう

3日目 4/19 月

8:44 (月)

シャッフルして周回する出題方式も作ったので、漢字の方は一通り完成した気がする

4日目 4/20 火

9:22 (火)

いい感じ!

ミスした漢字がどこかに表示されたら(たとえば100%の青線の下に並ぶようになったら)嬉しいかも。

それは明日作る予定

さんくす

カナ

2回とも同じ順番だったように思う。できればランダムで1巡してほしい。

直した。設定画面に戻って、出題方式を選び直すと再シャッフルされる

サンキュー

そもそもさっきまでシャッフル効いてなかったな

なんという確認漏れ…

そうなのか

子供達の感想を動画撮影して送ってくれ

「すごいべんきょうになってる。ヨーダのドリル、たのしかった」とのコメントがもらえた

楽しく勉強出来てるようで良かった。まあ、親子で時間過ごせるのがいいんだろうな

20:01 (火)

夜は翔は小2の漢字をやった。よい出来
f:id:knj4484:20200427103551j:plain:w360

結構出来るね

最初に丸つけせず何回も教えた後にやらさた。漢字は昔から得意。

6日目 4/22 木

14:39 (木)

漢字をシャッフル周回モードでやった時に、右上のボタンから正解・ミスした漢字リストが出るようにした

7日目 4/23 金

サンクス。

8日目 4/24 土

9:25 (土)

ひらがなとカタカナのリストも追加した

9日目 4/25 日

習熟度の分布グラフを入れた。グラフが全部緑になるまで頑張ってくれ

そしてこのブログを書き始めた。久しぶりにプライベートで達成感を味わった

まとめ

  • だいたい1週間で人の役に立つものが作れた
  • 画面を綺麗に作るのは難しい
  • 日々の努力が大切である

DUNS Numberを東京商工リサーチで取得してAppleの法人アカウントを作った



App Storeに法人としてアプリを出したいと思い法人の登記は済ませた。
xavier.hateblo.jp

いよいよ本題のアプリを法人として出すため、法人アカウントを作るべく続きの手続きをやった。

目次

  • DUNS Number取得
  • 東京商工リサーチでのDUNS Number登録代行
  • Apple Developer Programへの法人としての登録
  • Appleの法人審査
  • まとめ



DUNS Number取得

法人アカウントを作るためには、法人登記をした上でDUNS Numberというのを入手する必要がある。

ネット上を調べた限りでは、日本でDUNS Numberを取得するには主に二つの方法があり、一つは、Apple Developer Programの法人アカウント登録の途中でApple Developer Programのページから法人情報を登録する方法、もう一つは、東京商工リサーチに登録を代行してもらう方法だ。
Appleのページから登録する方法はすこぶる評判が悪いので、東京商工リサーチに代行してもらおうと思ったが、Web上には実際に代行をしてもらったという具体的な例は一つしか見つけられなかった。これはどっちが茨の道になるのか実際には分からないが、人柱として頑張ってみようと思った。

東京商工リサーチでのDUNS Number登録代行

東京商工リサーチのサイトには、他の人が登録している場合もあるからまずは検索してみろと書かれている。作ったばかりの会社なので登録されているわけはないが、一応検索してみた。

用途・目的から探す : 東京商工リサーチ

思った通り登録はされていないので、予定通り登録の手続きを行おう。

Duns Number Search


スタンダードサービスの「お申し込みはこちらをクリック」ボタンをクリックする。

入力項目は下記の通りでとても多く、げんなりしてしまったが、よくみてみると、必須項目(太字)がそれほど多くなかったのがせめてもの救いだった。面倒なので必須項目しか入力していないことにした。

  • D-U-N-S® Number発行対象企業
    • 正式会社名称
      • (日本語)
      • (英語)
    • 本支店区分
      • 発行対象企業は本社である #=> 選択した
      • 発行対象企業は本社以外の事業所(支店、工場など)である
    • 本社住所 (ビル名・フロア階数まで記入願います)
    • 通称/ブランド名
      • (日本語)
      • (英語)
    • 通称/ブランド名
      • (日本語)
      • (英語)
    • 旧社名
      • (日本語)
      • (英語)
    • 現社名変更年月日
    • 現住所(ビル名・フロア階数まで記入願います) #=> 算用数字は全角で入力した
    • 旧住所
    • 現住所への移転日
    • TEL(代表) #=> 自分ちの固定電話を記入した(携帯番号は入力できない)
    • FAX(代表) #=> 自分ちの固定電話を記入した
    • 代表者氏名
      • (英語表記) Taro Yamada的な記入をした
    • 代表者役職名
    • 業種
      • 製造業 | 卸売業 | 小売業 | サービス業 | その他 #=> サービス業を選択
      • 営業品目 #=> 「ソフトウェア」と記入した
    • 輸出
      • 有 | 無 #=> 海外でも配信されるけど多分そういう意味ではないので、無を選択した
    • 輸入
      • 有 | 無
    • 従業員数 #=> 自分一人だけの会社だけど自分は従業員ではないので0を記入した
    • 従業員数(当該事業所)
    • 親会社(50%超の支配権(議決権、所有権)を保有する法人)の有無
      • 有 | 無 #=> 無を選択した
  • 親会社情報
    • 親会社名(日本語)
    • 親会社住所 (ビル名・フロア階数まで記入願います)
  • 申請者
    • 貴社名 #=> 勝手に補完されてた
    • 住所 #=> 勝手に補完されてた
    • 部署名/役職名 #=> 「社長」と記入した(代表社員と書くべきだったと思う)
    • 氏名
    • TEL #=> 勝手に補完されてた
    • e-mail #=> gmailのアドレスを記入した
    • ご利用目的
      • Ariba Supplier Network
      • RosettaNet | 取引先からの要望 | 取引先名 | データ整備のため | その他の目的 #=> その他の目的を選択した上でテキスト欄に「Apple Developer Programに法人として参加する」と記入した
  • オプション
    • D-U-N-S® Number 証明書発行希望(\7,560)
      • する/しない #=> しない
    • D-U-N-S® Number エクスプレスサービス希望(\10,800)
      • する/しない #=> しない

入力中に迷ったところは

  • 「住所」の算用数字は全角で入力した。
  • 「業種」はサービス業を選択し、「営業品目」に「ソフトウェア」と記入した
  • 「部署名/役職名」は「社長」と入力した。今考えてみると「代表社員」と書くべきだったような気がする
  • 「従業員数」は、自分一人だけの会社だけど自分は従業員ではないので「0」を記入した。
  • FAXが必須とか今時無理なんではないだろうか。とりあえず電話番号。
  • 「輸出」は、アプリが海外でも配信されるけど多分そういう意味ではないので、「無」を選択した
  • 「TEL(代表)」は、携帯電話番号は入力文字数制限に引っかかってしまい入力できない。ただし、あとで聞いてみると携帯電話番号での登録も可能とのこと。システムなんとかして欲しい


一通り入力し、一番下の「確認」ボタンを押す

と、入力にエラーがあったせいか確認画面ではなくログインページに飛ばされた!全て入力し直しになってしまった。

気を取り直して全部入力し直し、内容を確認して「登録」ボタンを押す(修正する場合はブラウザの戻るボタン)。

「請求書の印刷はこちらから」ボタンを押す。

「DUNS Number申請を受け付けました」という件名のメールが届いた。
振込先情報と登記簿謄本の送り先FAX番号が記されていたので、その日のうちに振り込みとFAX送信をしておいた。

これで三日待てばDUNS Numberが取得できているはずだった。

ところが、三日目の夕方6時ごろに入力の不備があるとのメールが来ていた。そんなバカな。
不備のあった項目の追加の情報をメールで伝えておいた。

「Fw: [Duns Number Search] DUNS登録申請」という件名のメールが届いた。添付されたPDFに、代行業務の本質的な部分であるDUNS Numberや英語での会社名、住所が記載されている。

一部抜粋

尚、アップル社が確認している先へ今回ご案内した内容が
反映されるまでに必要な日数及び実際に反映されたかどうかにつきましては
直接アップル社へお尋ね頂きますことご了承下さいますようお願い申し上げます。

四日で法人アカウント作れると思ったんだが、そうではないようだ。

カタカナで検索してみると、弊社「合同会社○○」は出て来ないが「株式会社○○」などは出て来る。
入力ミスかいなと思って以下の内容のメールを送ってみた。

D-U-N-S(R)Numberは分かりましたが、
D-U-N-S Number検索 https://duns-number-jp.dnb.com/search/jpn/find_jpn.asp
で検索しても出てきません。
また、dun&bradstreetでの検索
http://www.dnb.com/duns-number/lookup.html
で検索しても出てきません。

Apple社へのデータ反映に時間がかかるのは仕方ないとは思うのですが、
上記二つで検索できるようになるためにも日数がかかるものなのでしょうか?

返事には、法人格を抜いて検索してほしいこと、自社サイト以外での検索に関しては何も情報を持ち合わせていないことが書かれていた。「いやいや、法人格は抜いて検索しとるがな」とツッコミを入れつつ、試しに漢字で検索すると確かに出て来る。検索方法がまずかったようだ。ただし、カタカナでの検索はやはりダメで、これは謎だがAppleの法人アカウントには関係ないことなので目をつぶることにした。

Apple Developer Programへの法人としての登録

そもそもの目的のApple Developer Programへの法人としての登録に進む。

  • Apple Developer Program - Apple Developerのページの「Enrolle」ボタンをクリック。
  • 説明を読んで「Start Your Enrollment」をクリックする
  • 「Entity Type」で「Company / Organization」を選んで、「Continue」をクリックする
  • Legal Entity Name: PDFに書かれていたもの
  • D-U-N-S Number: PDFに書かれていたもの
  • Website: PDFには書かれていないが、申し込み時に書いたもの
  • Headquarters Phone:
  • Your Work Email:

ただ、ここで下記のエラーが出てしまいgmailのアドレスが使えない。ヤフーメールもダメ。

Enter a valid email address that uses your organization’s domain name.

仕方ないので、t.vodafone.ne.jpのアドレスを入れてみると、これはおk!

しかし、なぜかD-U-N-S NumberもLegal Entity Nameもあってるはずなのに

The information you entered did not match your D&B profile. Before submitting your information, look up your D&B profile.

というエラーが出てしまいSubmitボタンを押しても次に進めない。うーん、やっぱり日数がかかるのかなぁ。

次の日にもう一度やってみてもダメ。二日後も三日後もダメ。一週間経ってもダメ。これはさすがに何かの手違いだろと苛立ちを覚え始めた。

9日目に「これでダメだったらメールで問い合わせよう」と思って試してみたら出来た!

D&Bのサイトで検索しても未だに出て来ないのは謎だけど、Appleの確認画面では東京商工リサーチから来たメールに添付されている通りの住所などが表示されていたので、

This is the correct headquarters address for my organization.

というチェックボックスにチェックを入れてSubmitボタンを押した。

すると、なんということでしょう。

Your enrollment is being processed.
Enrollment ID: 8RTLTHFX7P
Once we verify your authority to sign legal agreements, we'll email you with instructions on how to complete your enrollment. In the meantime, sign in to your account to track your enrollment status.

「法的な契約をするあなたの権限を私たちが検証出来たら、メールでこの続きのやり方を教えるよ」とのこと。権限はどうやって確認するんだろうか。

Appleの法人審査

電話がかかって来ても自分は出れないだろうから母親には、Appleから「こういう内容であなたの会社の人が申請を行ったんだが待ちがないか?」という電話が来るかもしれないから「それで間違いない」と答えておいてもらうように頼んでおいた。

数時間後に自宅の方にAppleから電話があったと母親から連絡が来た。Appleめちゃ速い。本人が出てくれないとダメらしい。まあ考えてみればそりゃそうか。電話番号の存在だけでなく、法人の代表社員に繋がり本人がOKと言わなければ勝手に法人アカウント作ってはダメだろう。この日は、あいにく、会社員としての勤務時間のため電話には出られなかった。しかも金曜日だったので、週明けかなと思いドキドキしながら寝た。

母親曰く、連絡を取るのは9時から5時の間とのこと、ダメ元に日曜に電話してみたが、予想通り録音されたメッセージで営業時間外であることが告げられて繋がらなかった。

月曜日の朝9:10に自分から電話してみた。氏名とAppleアカウントを使えると「これで審査は終わりです」とのこと。これで一安心。

なぜか電話を切った直後に、もう一度Appleの別の人から電話があり同じプロセスを辿ったが、これが俗にいう連絡に行き違いというものだろう。

法人の代表者と申請者が同じ場合は、本人が電話に出るだけで審査は完了らしい。

電話で教えらてもらった今後の流れのポイントは、

  • 英文のメールが来る
  • Programの購入は、Safariで行うことをオススメ
  • Wで始まる注文番号のメールが届く
  • 注文成立のメールから24時間以内に法人アカウントが利用可能になる

はやる気持ちで、メールが来るのを待たずにDeveloperサイトにログインして見たら、すでにProgmramの購入ができた。しばらくすると、「Welcome to the Apple Developer Program」というメールが来ていた。数時間後にApple Developerのサイトを見てみると、アカウントの下に法人名が表示されていたので、これで完了と一安心!

まとめ

  • 東京商工リサーチに頼んでも別に速くないし、そこそこ面倒臭い
  • Appleの法人の審査は単なる本人確認でしかない

あとがき

あとは、銀行の法人口座を作って、アプリの売り上げが振り込まれるようにしたい。


濃縮ソフトウェアエンジニア研修:職務プログラミングで重要な心構え+お勧め書籍

はじめに

この記事の目的は、新しく職務としてプログラミングをすることになった人に、一生忘れないでほしい考え方や姿勢を身につけてもらうことです。
ソフトウェア開発で気をつけるべきことは細かいこと言い出すとキリがないですが、これぐらいは開発者全員が心と体に叩き込んでおいて欲しいという内容を凝縮してあります。

職務プログラミングの趣味プログラミングとの違い

まず、職務でプログラミングをすることは、趣味(や学校の課題や研究室で論文のために作るものも含めて)でプログラミングすることは全然違うという話です。

趣味プログラミングの特徴

趣味プログラミングは、自分のためのものなので、やりたい放題

  • 自分で作りたいものを決める
  • 自分で作る
  • 自分で使う(運用する)
    • エラーで落ちたりフリーズしても、データや動作環境をいじってやりなおせばよい
  • 自分で作り直す(直さないのも自分の勝手)

職務プログラミング

プロダクトやプログラムは、組織(会社やプロジェクトチーム)のために存在し、自分のものではない

  • 他人(経営者、プロジェクトオーナー)の作りたいものを作る
    • だから、対価として給料がもらえる
  • 他人と(場合によってはチームや会社の垣根を越えて)強調して作る
    • 大きな成果を期限内に作るためには多人数でやる必要がある。ビジネス的な価値や責任も大きくなる
  • 他人がそのプロダクトを使う
    • 簡単にフリーズしたりエラーで落ちたりしてはいけない
  • 他人が運用する(してくれる)
    • 自分には休日がもらえることになる。問題が起きた時に自分しか対応できないときついよ
  • 他人にテストされ、ソースを読まれ、バグを発見され、修正される(してもらえる)

職務プログラミングにあたっての心構え

  • 何を作るべきなのか(必要十分な機能)、自分の担当範囲を明確にしておく
    • 限られた時間と人数で成果を上げる必要があるので、余計な機能を勝手に追加しないこと
    • エラー処理をどれぐらい丁寧にやるべきかを明確にしておくこともわりと重要
    • 開発の終盤で作り漏れに気づくと締め切りを守れなくなるので、漏れもないように気をつける
  • いつまでに開発終了させるべきか、間に合わなさそうになったどうするべきかを把握しておく
    • ビジネスにおいて時間や時期は最重要事項なので、進捗によってプロジェクトの変更(締め切りを伸ばす、機能を減らす、仕事の分配を修正する)の判断に迫られる
    • 判断のタイミングが遅いと取り返しがつかなくなる。間に合わなさそうなものを一人でなんとか頑張ったけど挽回できなかったというのは最悪。できるだけ予兆の段階で報告すること
  • 開発の成果物(プログラムやデータ、ドキュメント)をきちんと管理する
    • ソースコード管理ツールに習熟しておきましょう
    • 開発ドキュメントやテストデータなどもメンテナンス時に必要になるので、ぬかりなく
  • 運用の手間を減らすようにUI設計を工夫する
    • 何十年間も無駄な運用コストが発生することにもなりかねない
  • テストしやすいよう設計、プログラミングする
  • プログラムを他の人に読んでもらいやすいように書く
  • プログラムを修正しやすいように予め構成しておく

どう設計すればいいか

テストやデバッグ、修正が簡単になるようにしましょう

  • 重複を避ける
    • 重複箇所にバグがあったり修正が発生した場合、テストやデバッグの手間が倍になる
  • 機能のはっきりしたコンポーネント、クラス、関数に分解しておく
    • 関係あるものをまとめる/関係ないものを分離する
  • 意味的/機能的に(あるいは他の合理的な指針で)、階層構造/木構造になるように構成する
  • 分割したもの同士が必要以上に影響し合わないようにする
    • 余計な依存をなくしたり、一方通行にする
    • 例:関係するモジュール(とかクラスとか関数)A0とB0がある場合
      • AをA1に取り替えようとするとBも変更しなければならず、BをB1に取り替えようとするとAも変更しなければならない→よくない
      • AをA1に取り替えようとするとBも変更しなければならないが、 BをB1に取り替えようとしてもAはそのままでよい→よい
      • AもBもそれぞれ独立に代替物に取り替えれる→とてもよい

よい設計が出来るようなるための参考書籍

どうすれば良いコードになるの?

〜名前編〜

変数名、関数名、クラス名、ファイル名などに気をつけましょう

  • 名前で中身がわかるようにする(変な名前をつけてコメントで説明したりしないこと)
    • 駄目な名前 x、u (ループ変数のようなちょっとしたローカル変数ならOK)
    • 良い名前 user_id、uid (コード以外でも使われる略語はOKだが独自略語は避ける)
  • 命名方針を統一する
    • convert_to_eucとかconvertToUTF8とかconv2sjisとかを混ぜない

〜見栄え編〜

読んでもらいやすく、修正しやすいプログラムを書く

  • 重複を避ける
    • 読む量が増えるし、同じっぽく見えて微妙に違うのかなとか無駄な混乱が起きる
  • 出来る限り短くする
    • 分かりにくくならない範囲で、行数も1行の文字数も減らすこと
  • 構造を見た目で表す
    • きれいにインデントする
    • 必要十分な空白を入れる
    • 必要十分な括弧を入れる

よいコーディングのためのキーワード

  • コーディングスタイル
  • 防御的プログラミング
  • 各言語の仕様を読むこと
  • 言語の機能の意義を理解すること

コーディングのスキルアップのための参考書籍

時間・タスク管理もしっかり

ソフトウェア開発は、試行錯誤の繰り返しで、人によって作業効率もぜんぜん違う。
作るべき内容が途中で変更されることもしばしばある。
計画当初の通りに進むことはまずない。
→ 個人でも、時間管理とタスク(の優先度)の管理が超重要になってくる。

時間管理力アップのための参考書籍

エンジニアのための時間管理術

エンジニアのための時間管理術

おまけのアドバイス:英語も勉強しよう

余力があれば(というか余力のある今のうちに)英語の勉強をしましょう。ソフトウェアの技術や文化はほぼ全て英語に基づいています。英語力があると、適切な関数名・変数名を付けるといった細かい話から、最先端の技術を身につけたり、海外出張に行ったり、転職したりといったエンジニア人生に関わる大きな話まで、色々な点でとても有利になります

あとがき

先輩面したようなことを書いていますが、自分もまだまだ理想のエンジニアにはほど遠いので、これからも頑張り続ける所存です。

理系IT系就活で全然自信がなかったからこそ面接に成功したと思える当時の心構えと今の考え

特に、理系の人やエンジニア志望の人はスキルがあっても口下手で面接が苦手って自分で思ってる人も多いと思うので、そういう人に参考にしてもらえたらと思って書きました。

就活当時の話

人に自慢できる学生時代のエピソードもなかったし、全く内定をもらえる自信がなかった。
基本的に「どこも受からなさそうな気がするし、落ちたら落ちたでいいや」と思っていた。
「ひょっとしたらここは受かりそうだから自分をよく見せておこう」とか微粒子レベルにも考えてなかった。
面接1社目で流れを経験した後は、完全に吹っ切れて、気負うこともなく、全く緊張しなくなっていた。

「エンジニアをちゃんと評価してくれる会社とは?」が就活時の一番の関心事で、面接官がどうやって良いエンジニアを見抜くのか興味があったので、面接中は「さて、お手並み拝見〜♪」と考えていて、面接官の質問はじっくり聴いた上で、素直に気楽に答えていた。

ある面接では、面接官の方が緊張していたみたいで「なんでそんなに余裕で自信満々なんですか!?」と聞かれた。
上記のことをぶっちゃけてしまうわけには当然いかないので「普段通りの自分を見てもらった方がいいと思って、自然体で話すように気をつけています」と、焦りつつ取り繕う場面もあった。

面接は、面接官が就活生を評価する場でもあるけど、半分ぐらいは就活生が会社を良く知るための場でもあると思っていたので、社会見学のノリでこっちの知りたいことはズバズバと(しかし失礼はないように)質問した。
こういう受け答えは、面接官からは自社に対する興味とか積極性と感じてもらえたような気がする。

運とか色々な要素があったと思うけど、大体の会社は最終面接まで行けて、いくつかの会社はこちらから次の選考を辞退した。
最終的に「この辺に受かれば就活は成功かな」と就活開始時に考えていた会社から内定がもらえた。

まとめに、あえて方法論として名前をつけるなら「どうせ落ちる面接なら楽しんだ方が勝ちメソッド」?

ちなみに、Wordで作った履歴書を印刷して提出していた会社の面接は落ちた(他の会社は手書き)ことを、こちらの記事を読んで思い出しました。
履歴書はちゃんと手書きで書こうよ、就活生クンたち!

今の話

ここからは、IT系(というかWeb系)のエンジニア志望の人向けに特化した自分の意見なので、興味ある人だけ読んでいただければと思います。

今、IT系のエンジニアとして働き続けていて、後輩もいる状況で考えてみると、エンジニアってコミュ力がそんなに高い必要はないかなと思います。
上司も社長も友達感覚で会話してもらえるので、一流マネージメント職を目指すのでなければ、友達と普通に社会生活が送れるぐらいのコミュ力で十分です。

今でも面接を特別に頑張る必要はなかったと思っていて、就活で具体的に評価されたポイントは、ソフトウェア開発のための勉強を一通りはやってたことと、自分でWebサービスを作って研究室のサーバーで公開していたことかなと思います。
そのWebサービスは、商店街や街角の街灯の写真をアップロードして地域ごとに整理して楽しめるという超ニッチで自分しか見てなかったんじゃないかという、全然大したものではないです(今考えるとレベルも内容も謎過ぎて、恥ずかしい)。それでも、作品があるとないとでは雲泥の差です。

エンジニアのコミュ力がどれだけ高くても技術力がしょぼければ良い製品は完成しないので、自分が面接官をするときには、同じように評価したいと思います。
エンジニア志望のみなさんには表面的な面接対策をするのではなく、こちらの記事に書いた通りプログラミングの基礎を身につけることと作品制作をお勧めしたいです。

この本を読んで実践できてたら新卒の応募者としては完璧レベルで、面接がよほど酷くない限り、即採用したい。読んで理解できてるだけでも候補には残したい。

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)


あと、面接などの服装で「カジュアルな服装でお越し下さい」と書かれているのに、わざわざスーツ着てくるのやめてねw。部下やチームメイトは、指示には素直に従ってくれる人でないと困るのよ〜

就活生の皆様の健闘と幸運を祈ります。
では。

おまけ

知り合いになった人が書いた記事がヒットしているクックパッドとヤフーの開発者ブログの人気に嫉妬しつつ就職先としてお勧めしておきます。転職しようかな

就活生がITエンジニアを目指す前に伝えておきたい業界の真実と現役エンジニアからのアドバイス

はじめに

日本のIT業界では、技術職求人に対して、ちゃんと専門教育を受けていない(独学で身につけたわけでもない)人の応募の割合がとても高く、絶大なる不幸を生み出しているのが現状です。
これから社会人になる就活生の皆さんには、できれば不幸な人生ではなく幸せな人生を歩める選択をしてほしいとの願いから、このエントリーを書きました。

注意:ITエンジニアとして就活をしてプログラマー的な仕事が主な業務になる人が多いと思うので、この記事に出てくるITエンジニアという言葉は、プログラマーのことだと思って読んでいただけると幸いです。広い括りの題名をつけてしまってすみませんが、インフラ/ネットワークエンジニアやメーカーのエンジニアの話は出てきませんので、ご容赦ください。

目次

  1. 背景
  2. プログラミング言語を覚えよう
  3. データベースの使い方を覚えよう
  4. オリジナル作品を作ろう(ここが一番大事)
  5. IT系の勉強会に参加しよう
  6. GitHubで自分のプログラムを公開しよう
  7. インターネット上に自分のソフトウェアを公開しよう
  8. 自分がプログラマーに向いているかどうか判断しよう
  9. アマとプロのプログラミングの違いを知っておこう(二番目に大事)
  10. 個人的にオススメな応募先

背景

プログラマーの適性(向き不向き)の差は、他の職種よりも非常に大きいです。
ソフトウエア開発 55の真実と10のウソ』に書かれている調査によると、向いていない人は、向いてる人と28倍も生産性が違うという結果が得られたそうです。同じ仕事をこなすために何倍もの時間がかかったり、作った物のクオリティも何倍も低い(バグが多いなど)ということです。

仮に、向いていない人が職業としてのプログラマーになったら、どうなるでしょうか。
他の人と同じように仕事が与えられれば、向いていない人は、深夜残業を毎日して徹夜も普通という生活を強いられることになりかねません。その上、仕事のクオリティも低ければ、給料アップの望みもないでしょう。

最近は、ブラック企業が社会的に大きな問題になっています。ブラック企業のやり方はもちろん問題なのですが、あなた自身でブラックな状況を作ってしまうことも有りうると認識しておいて下さい。

まともに利益を上げてまともに社員に給料を払う気がある会社なら、適性によって生産性が何倍も違う職種の採用で「プログラミング未経験者歓迎」と本当に思っているわけがないことを理解しておきましょう。適性のない人を採用したら、納期を守るのも難しくなってしまいますし、残業代も沢山払わなければいけなくなってしまいます(払ってもらえればマシなんですが)。「未経験でもプログラミングができるよう教育します」といううたい文句の会社も沢山あります。教育されればプログラミング言語の一つぐらいは文法を覚えて書けるようになるかもしれませんが、第一線で活躍できるレベルは全然別物です。最低限はできるけど向いてない人を丁寧に面倒見てくれるほど余裕のある会社はあまりないでしょう。もし、未経験(とか、ほぼ未経験)でエンジニア採用されることが普通な会社に入社したら、相当の修羅場を覚悟した方がいいですよ。

あと、日本の大学の情報なんとか科でちゃんと勉強せずに生ぬるく卒業してITエンジニア人生を安泰に送ろうと思っている人も危ないです。
念のために言っておくと、パソコンの使い方やインターネットに詳しいとか、エクセルがちゃんと使えるとかはプログラミングの適性とあんまり関係ないです(必要なスキルではあります)ので、そこを勘違いをしていると後で苦労します。

そうならないために、ソフトウェアエンジニアを目指すと決める前に最低でもこれぐらいやっておいた方が良いことをあげておきますので、実践した上で応募を検討してみてください。

プログラミング言語を覚えよう

何かを作って適性を見ようというのがこのページの趣旨なので、プログラマーの向き不向きが分かる前にくじけてしまわないように、初心者が手っ取り早く自分の作りたいものを作れるようになる言語としてPHPで話を進めたいと思います(プログラマーになる決意の固い人は、RubyとかPython、ScalaあるいはiPhoneアプリ作りたいならSwiftとかをじっくり勉強した方がいいかもしれません。こっちができた方がイケてる会社の面接では受けがいいと思われます)。

作る内容によりますが、PHPが多分一番簡単にWebサービスを作れます。
ちゃんと勉強すれば他の言語にも応用が利く知識が身につくと思います。

PHPの勉強は、書籍やWeb上のチュートリアルを参考にしてください。
[asin:B00JA179KY:detail]


(ここに挙げる参考書・サイトは一例なので、なるべく自分にあった参考書を探してください。以下同様)

データベースの使い方を覚えよう

現実的なプログラムでデータベースを使わないものはまずないので、データベースも基本知識として必須です。
データベースも色々ありますが、無料で使えて、PHPと合わせて開発しやすいMySQL(マイエスキューエルと読みます)をお勧めしておきます。
MySQL公式サイト MySQL

Web上にたくさん解説記事がありますし、上記のPHPの書籍でMySQLの使い方も解説されているので、一通り勉強するにはちょうど良いと思います。
[asin:B00JA179KY:detail]

オリジナル作品を作ろう

さて、ここが一番大事なところです

教科書や書籍、参考サイトに書いてある通り作るだけなら誰でもできてしまうことなので、向いてるかどうかは判断できません。本当にそれができるというには怪しいところです。

自分の作りたいものを考えて、オリジナル作品を作りましょう!

斬新である必要はありませんし、独自性も高くなくて構いません。
教科書や書籍に書いてあった通りに作ったというのでなければOKです。
色を変えただけとかはダメですよ^^;

見た感じツイッターっぽいものを中身は自分で考えて作るといった程度のことです。
少しで良いので、そのサービスが魅力的であるために自分なりの工夫を入れましょう

実際に自分で作ってみると、分からないことが沢山あったり、エラーがいっぱい出てどうすればいいか分からなくなってしまうと思います。
そこで諦めずに、本や検索で調べたり、詳しい人に聞いたりしてください。
後述の勉強会に参加して、教えてもらうのもよいと思います。
そういうことがソフトウェア開発現場での仕事です。

(作ろうとした機能が意外と難しい場合は部分的に削ってもいいので)
とにかく完成させましょう!

IT系の勉強会に参加しよう

この業界はオープンな勉強会がよく開催されていて、いろいろな会社からモチベーションの高い現役のエンジニアが参加しています。
無料のものが多いですし、懇親会があったりして、公式の会社説明会では聞くことができない(それよりももっと重要な)現場の生の情報を聞けるので、参加しない手はないです。企業が主催の勉強会は、主催側の話を鵜呑みにするのではなく、参加者の先輩エンジニアからも話を聞くように注意しましょう。

IT系勉強会を検索できるconnpassやATEND、dots.などのサービスで勉強会を検索してみてください。

何を選ぶにしろ、三、四回ぐらいは行った方がいいと思うので、ここでは具体的にオススメは挙げません。
なんでも良いので、なるはやで入門的な名前が付いているものに行ってみて、知り合った人にオススメを聞いてみてください。

GitHubで自分のプログラムを公開しよう

最近は、採用面接でエンジニアが面接官になり、実際に自分の書いたコードについて話をすることも多いです。
その場でコードを書く面接も増えています。

GitHubは、共同開発できるようにプログラムを管理・共有するためのサービスです。

ここにプログラムをアップロードしておくと他の人に見てもらえるようになります。
確かにプログラムをかけるということの証拠になりますし、GitHubのアカウントを持っていることが応募の条件という会社すらあります。
逆に他の人のプログラムを見て参考にすることもできますので活用しましょう。

GitHubなどを利用して自分の書いたコードをきちんと管理することはプロとして必須スキルなので、コード管理はなるべく早めに身につけましょう。
使い方は、



などを参考にしてください。

エンジニアがコードを見る面接の場合は、プログラムのクオリティも審査されると思いますが、こちらの本を参考にして作り方にもある程度の工夫がしてあれば、申し分ないです。

就職前にこの本に書いてあること全部ができてる必要はないと思いますが、もし出来ていれば、技術レベルとしては、ほぼ全ての会社から内定がもらえるレベルです。

インターネット上に自分のソフトウェアを公開しよう

インターネット上に自分の作品を公開しておけば、採用担当の人事の方に見てもらうこともできます。
これはとてもよいアピールになるので、エントリーとか初期段階で落とされなくなると思います。

自分でサーバーを持っていなくても、無料でインターネット上に作品が公開できるherokuというサービス(ヘロクと読みます)があります。
Cloud Application Platform | Heroku

使い方は、




などを参考にしてください。

自分がソフトウェアエンジニアに向いているかどうか判断しよう

まずは、オリジナル作品の作成や公開の作業が楽しい・やりがいがあると思えたかどうかが、最低限のプログラマーの向き不向きの判断基準となります。
自分の作りたいものを作ったはずなので、この作業があまり楽しいと思えなかったのなら、プログラマーには向いていません。仕事だと、自分が作りたいものを作らせてもらえるとは限りませんし、くだらなくてつまらなくて苦痛な作業もあるので、モチベーションは続かないでしょう。

この基準をクリアしたとして、ちょっとだけ向いてるのか、すごく向いてるのかを短期間で判断するのは難しいですが、プログラマー職に応募する意味があるレベルだと思います。やる気と時間の余裕がある人は、プログラミングのコンテストに出てみたりするといいと思います。

アマとプロのプログラミングの違いを知っておこう

採用ページとか説明会ではよく分からないと思いますが、実際のプログラマーの仕事の内容を、ちゃんと知ってから応募したほうがいいです。

職業としてのプログラマーになるということは、単に動くプログラムが書ければ良いということではありません。

初めてオリジナルのソフトウェアを作った人は、おそらくエラー処理はほとんどしていないと思いますが、仕事ならあらゆるエラーに対応できるように面倒臭いコードも沢山書かなければいけません。
ユーザーから遅いと言われたら、速く動くアルゴリズムを考えたり、実装方法を工夫して速くなるように作り直さなければいけません。

アルゴリズムを学ぼう

アルゴリズムを学ぼう

機能追加や修正がしやすいようにプログラムを構成する工夫も必要です。

仕事は共同作業ですから、他の人にも読みやすいように書かなければいけません。

動作テストもちゃんとしなければいけませんし、バグがあれば、何千、何万行もあるプログラムの中からバグを探したりもします。

色々と難しそうなことを書きましたが、プログラマーの仕事は、言語を使って複雑なパズルを解くような仕事なので、パズルの解き方を考えるのが好きで文字を読むのが好きな人と相性が良いと思います。

現実的には、Webサービスやアプリを安定稼働させるためにサーバーやネットワークの知識も勉強する必要があります。

変化の早い業界なので、時代や目的に合わせてプログラミング言語や関連技術を常に新しく勉強する学習意欲や向上心も必要です。プログラミング言語は10個ぐらいは覚えることになると思います。


そういったことを踏まえた上で、「もっと勉強して上達したい」「この仕事にチャレンジしたい」と思える人は、きっとプログラマーに向いています。
是非、ソフトウェアエンジニアになってください!

個人的にオススメな応募先


クックパッドさん、一番オススメしたいのにリンクの埋め込みが表示されません >< 助けて*1
http://hr.yahoo.co.jp/fresh/



などなど、他にも私の知らない範囲でもあると思います。

自分がWeb業界の人間なので、挙げるのがWeb系ばかりになってしまいました。ごめんなさい。BtoBやSIerにも良い会社あると思います。でも、Web業界も楽しいです。

IT系の勉強会に参加して、転職経験者の経緯とか聞いてみると良いですよ!

オススメできない応募先はここにはちょっと書けない(笑)ので、自己判断してください。

面接について


あとがき

今までの日本のIT業界は歴史的な事情で、向いていない人もたくさんプログラマーになっているので、向いている人にとってはむしろチャンスの大きい職種とも言えます。現に、トップレベルのプログラマーは年収1000万円以上もらっていたり、ベンチャー企業を立ち上げて資産が何十億円という人もいます向いてそうなのに他の業界や職種を目指しているお知り合いがいらっしゃいましたら、是非ともプログラマー職の応募を勧めてみてください

おすすめ記事




*1:クックパッドさんにご対応いただきました。ありがとうございます。こうやってネット上のエンジニアの話題にも敏感で、採用活動にも真剣さが感じられ、エンジニアに対するリスペクトのあるふっふはっほさん、やっぱり素敵です