独学プログラミングハック

プログラミング独学をハックする初心者のためのTips

メモ:JavaScriptのnamed exportsとdefault exports

JavaScriptのnamed exportsとdefault exportsについて、
特に良かった記事とそこで得られた学びを簡潔に紹介します。

 

まず、簡潔に概要を掴むには下記

zenn.dev

 

よりしっかり理解するには、いかに詳しく記載されている

ja.javascript.info

 

具体的なケースとして、Qiita開発チームは、default exportを使わなくしたそうだ。

named exportsと違い、自由に名前をつけることができてしまうため。

qiita.com

 

これとは反対に、default exportが有害であるかのような説に異議を唱えた記事もある。

モジュール構成の設計について、

細分化する方向に向かうことを基本理念

とすることが、語られています。

zenn.dev

 

上記に対する、アンサー記事も併せて参考になった。

blog.uhy.ooo

 

得られた学び

  • 基本的には、default exportsよりも、named exportsを推奨するケースが多い印象
  • 理由は、エディタの補完が効かない場合があったり、名前を自由に変更できてしまうことで、統一されなかったり、変更し忘れなどから、バグが混入する可能性があるから
  • しかし、それについて考えるには、適切なモジュール構成の設計が重要である
  • 1モジュール、1expoetで、ファイル名=関数名であれば、むしろこのような細分化は適切であるケースも多い
  • 特に、フロントエンド周辺技術が「ファイル単位でのモジュール化」という設計を推し進めていることもある
  • なので、それぞれの主張の本質的な目的を取り入れていくのがよさそうだ

プロダクト開発と市場

仮説を立てる開発者 スタートアップの定義は、曖昧だ。

でも大体は、革新的なアイデアで全く新しい市場を創出し、Jカーブを描きながら急速に成長していくタイプの特殊な企業形態を指すことが多い。

全く新しい市場というのは、まだ深く解決されていない課題だったり、既に出回っている製品よりも10倍以上優れた解決策を提供するということだ。

そこで、重要になるのは、いち早くマーケットインして、価値提供を開始する事だと思う。

10倍優れたプロダクトで全く新しい市場を独占するためには、
まず既に検証された市場で、求められている価値を提供することから始めるべきなんだ。
これは、直感に反する。

そもそも、プロダクト開発には様々なリスクがある。特に多い要因:

  • 市場ニーズの不足

  • ビジネスモデルがない

一言で、求められていない or バーニングニーズを捉えられていないものを作ってしまうということになる。

「市場や顧客にフィットできない」ことによる失敗が大半だ。


ではそのリスクを減らして、10倍優れたプロダクトを作るにはどうすればいいのだろう?

それには、できるだけ早い段階でマーケットにインして、ターゲットに価値を提供すれば良い。

プロダクトを作り込む前の1倍の時点で、実際に売ってみるべきなんだ。

もっと言えば、既にターゲットに求められているものを、求められている見せ方で提供することが重要だ。

そして、ユーザーとの対話を開始してから、プロダクト開発を始めるんだ。

それが、MVP検証の最初のステップになる。


MVPの条件は、価値を提供できることだ。

ただ、MVP検証の最初は、自分のアイデアをベースにしたMVPを構築するのではない。

既にターゲットが求めている、自分が作ろうとしている製品に近いものを提供すればいい。

前者では、マーケットインが遅れるし、難しくなる。

自分の製品の顧客を探すのは、大変だが、ターゲットが既に求めているものを提供するのは簡単だ。

なので、早いうちにマーケットを見て、入っていこう。

そして、いち早くユーザーとの対話を開始する必要がある。

実際にユーザに価値を提供して、学びを得るしかない。

なので、それは既に求められているものと一緒に「独自の価値」を提供すべきだ。

もし、あなたの仮設が正しければ、既に成立した市場のビジネスとの差別化になる。

それを続けるべきなんだ。

それを強化して、独自の価値提供・ソリューションを磨き込んでいくべきなんだ。

マーケットインは早い方がいい。

そして、中に入ってから、ユーザーとの対話の中で、プロダクトアウト的発想で革新的なアイデアを取り入れていくべきなんだ。

そうすれば、逐一ユーザーに確認できる。

ユーザーに求められている価値を最低限提供できている状態が、スタートだからだ。


さらにそれによって、初めてのプロダクト開発・スタートアップの場合、何から何まで自分で行うという、起業自体をいち早く経験できる。

ビジネス的な、ユーザー視点の見せ方、売り方、打ち出し方を学べる。

ここで早い段階で、学びを得ることはとても重要だ。(開発はできても、ローンチやセールスができずに、うまくいかないケースは実際とても多い)

そして、うまくいけば、継続的に顧客を獲得できるチャネルを見つけたり、コミュニティやブランドを作り上げることにもつながる。

なので、早めに市場の中に行って、顧客に価値提供を開始しよう。

いやバザールのように、ほとんどのものが無料でやり取りされているが、活気のある場所でもいい。

実行プロセス

  • あなたのアイデア・製品は、誰のどんな課題を解決するだろうか?
  • そのようなターゲットは、現在そのようなソリューションでニーズを(部分的に)満たしているのだろうか?
  • そして、その部分的な課題の解決で既に市場が成立している場合、同じ方法でいち早くマーケットに参入する
  • そしてユーザーとの対話を開始して、段階的に独自の価値を提供して差別化していきながら、製品の検証を進めていく。

Happy Hacking !!

freeCodeCampの記事のスタイルガイドが、なかなか良い

freeCodeCampの、記事のスタイルガイドがポイントが網羅されていて、チェックリストとして割と優秀だと感じた。

www.freecodecamp.org

 

特に気になったポイントは、以下の通り:)

  • 簡潔で説得力のあるタイトルをつけることが重要である。なぜなら、それは記事の中で唯一100%読まれる箇所だから
  • 文章も、できるだけシンプルで短く。インターネットに適した書き方をすることが重要。
  • 盗作せず、ソースを正しく明記すること

 

他にも、幅広いポイントが網羅されていた。

当たり前のようなポイントを、しっかり押さえておくことが重要だ。

Raidx + shadcn/ui メモ

ずっと気になっていた、shadcn/ui(シャドシーエヌ・ユーアイ)を触った。

tailwind + Radix だけでも便利だが、さらにデザインステムの構築を助けてくれるのが、shadcn/uiの良い所だ。

 

Raidxもshadcn/uiも、どっちも公式ドキュメントがわかりやすい。

 

Raidx:

www.radix-ui.com

 

shadcn/ui:

ui.shadcn.com

 

tailwindのヘッドレスに入門するなら、以下の順番をお勧めする:

  1. ヘッドレスとは?それのメリットは?

    www.freecodecamp.org

  2. Radix UI 入門

    reffect.co.jp

  3. shadcn/ui説明

    qiita.com

  4. shadcn/ui入門

    www.freecodecamp.org

Happy Hacking !

プログラミング学習のロードマップは、 アウトプットベースであるべき

プログラミング学習のロードマップは、
アウトプットベースで作成するべきだと気づいた。

 

例えば、「HTML, CSSをprogateで学習する」よりも、

「HTML, CSSで簡単なオリジナルのWebサイトが作れるようになった」の方が良い。

成果物を重視する方が、インプットや単元ベースよりも効果的だろう。

 

なぜなら、学習の理解度は人それぞれ違うからだ。

同じ教材をやっても、理解できている人と、そうじゃない人がいる。

「学習が思うように身につかない」
という初心者の方で1番多いのが、こまめにアウトプットしていないこと。

教材をやって、理解できているか確認せずにガンガン先に進むと、前にやったことが身についていない、という状態になりがちだ。

 

わかりやすい教材やハンズオンで、自分の力がついてると思ってしまう状態。

これは結構精神的にもツラいです。

 

「学習する」ことより「学習した結果こういうことができるようになった」という、より本質的に成長を反映した形が重要になる。

もし既にロードマップがある場合は、アウトプットベースに更新してみるのがおすすめ。

成長と完成

IT業界やスタートアップにおいて、完璧主義には注意が必要だ。

だって、それらの世界では「完成」の概念が異なるから。

 

一般的に、「完成」とはどういう状態だろうか?

料理なら、出来立てが最も温度、食材の質などが良い状態だ。

それ以降は、徐々に質、つまり味が下がっていく。

 

様々な商品、形あるものは、基本的に「完成」した時点が最も良い状態だ。

そこから使えば汚れていくし、壊れていくし、痛んでいく。

 

しかし、IT業界やスタートアップにおいて「完成」の意味は異なる。

なぜなら、日々アップデートされるからだ。

日常的に使っているアプリのほぼ全てが、初めは少ない機能だったはずだ。

日々機能が追加され、バグが修正され、品質が向上していく。

これはとてもユニークなことだ。

物理世界のモノと違って、世の中に出た瞬間、
つまり「完成」した瞬間が最も質が低い状態なんだ。

それらは成長を前提としている。日々価値が向上していくんだ。

 

これは抽象化すれば、SNSの成長にも適応できる。

SNSのアカウントを成長させていくケースを考えよう。

まずSNSのアカウントを開設する。

テーマやターゲットを決めて投稿していく。

これが、もうすでに自分のSNSアカウントの完成だ。

ここから成長していく。

そして投稿に慣れたら、ターゲットに馴染ませていく。

ターゲットが興味のある・求めている投稿をするということだ。

そして自分自身の提供できる価値(投稿)と、ターゲットのニーズを一致させる必要がある。

まさにPSFというやつだ。これがソリューションの完成なんだろうな。

それを適切に抽象化できたら、SPF、PMFというふうになっていくんだと思う。

 

成長と完成の関係は興味深い。

IT業界やスタートアップにおいての「完成」は、成長を前提にしている。

これから継続的に成長していく「準備の完成」なんだ。

なので、重要なのは最初にうまくやろうとしすぎないこと。

時間を使いすぎないこと。

だから完璧主義には注意が必要だ。

慣れる、そして馴染む

何かをハックしようとしたら、「慣れる、そして馴染む」プロセスが重要だ。

なぜなら、人は学習能力が高いからだ。

 

実行する事で、学びを得て、立ち回りを磨いて、質を高めて、フィットさせていくというプロセスでしか、成長はでいないんだと思う。

プロダクト開発も、コミュニケーションも、お笑いも、仕事場での立ち回りも。

もちろん、まぐれはある。

初めての試合でホームランを打てる人もいるだろうし、初めて作ったプロダクトが世界中に広がることもあるだろう。

でもそれはまぐれだ。

狙ってできることではない。

しかも、まぐれなら、2回以上「うまくやる」ことも難しい。

なのでそれについて考える必要はないんだ。

 

慣れる、馴染む。

まず実行しまくって、そこからのアウトカムを馴染ませていく。

馴染んだら、自動化するなり、マニュアル化して他の人に任せるなり教えるなりすれば良い。

馴染ませて、それを適切に抽象化・体系化するというのが「ハック」するということだ。

慣れて、馴染むまでの期間は、いわゆる下積み時代というやつなのかも。

まだフィットしていない時代のアウトプット。

 

なので、何かをハックしようとしたら、「慣れる、そして馴染む」プロセスが重要だ。

なぜなら、人は学習能力が高いからだ。

 

でも、ハックした後、馴染んだ後も注意が必要だ。

馴染んだと思っていた市場や、ターゲットである人は時間と共に変化するから。

それが、ずっと売れ続けることが難しいということでもある。

常にフィットし続けないといけないんだ。

 

さらに、報酬に囚われすぎるのも危険だ。

信念や価値基準みたいなものがないとダメなんだと思う。アウトプットに対するこだわりとも言える。

お金の稼ぎ方、SNSでの承認のされ方。

出来上がった業界の中での裸の王様状態。

それでは、一般的な感覚を失ってしまう。

結局人間は、報酬というか、脳内物質の奴隷なんだろうな。

少し油断すると、人を狂わせてしまう。

ふと気を抜くと、相手やマーケット、社会のことを無視して、自分の面白い・アイデアベースの発言、失言をしてしまう。感覚のずれ。

自分なりの基準や理想、イメージや信念を持って、実行を繰り返して、馴染ませていくことが重要なんだろうな。